Sony Camera Remote API, Как я могу показать / использовать данные в режиме реального времени с VB.net (использование Sony QX1)

Я программирую небольшое программное обеспечение для удаленного использования камеры Sony (я использую QX1, но модель не имеет значения) в VB.net. Я мог делать снимки, отправляя JSON-команды на камеру, а также мог запускать поток liveview с помощью метода "startLiveview", заключенного в JSON-команду. В ответ я получаю адрес для загрузки в прямом эфире, например, http://192.168.122.1:8080/liveview/liveviewstream (завернутый в JSON-ответ).

Согласно справочнику Sony CameraRemote-API, это поток, который содержит некоторые данные заголовка и отдельные данные jpeg. Но, похоже, это не MJPEG-поток. Я мог бы пропустить ссылку в прямом эфире на мой браузер, и он начал бесконечно загружать прямую трансляцию. Я не мог показать поток с проигрывателем MJPEG-stream, таким как VLC.

У меня вопрос, как я могу отфильтровать JPEG-данные с VB.net или как я могу показать в прямом эфире.

Подобный вопрос уже был опубликован на более старом, но без ответа. Поэтому я пытаюсь это снова.

2 ответа

Это мой способ, я использую ffserver, чтобы сделать видео потоковым. это myconfig для конфигурации ffserver (server.conf):

Port 8090
BindAddress 0.0.0.0
MaxHTTPConnections 2000
MaxClients 1000
MaxBandwidth 10000

CustomLog -

<Feed feed1.ffm>
 File /tmp/feed1.ffm
 FileMaxSize 1G
 ACL allow 127.0.0.1
</Feed>

<Stream cam.webm>
  Feed feed1.ffm
  Format webm

  VideoCodec libvpx
  VideoSize vga
  VideoFrameRate 25
  AVOptionVideo flags +global_header  

  StartSendOnKey
  NoAudio
  preroll 5
  VideoBitRate 400
</Stream>

<Stream status.html>
  Format status
  ACL allow localhost
  ACL allow 192.168.0.0 192.168.255.255
</Stream>

И тогда я запускаю ffserver с этим конфигом:

ffserver -f server.conf 

А затем закодируйте видео из Sony Liveview и транслировать через ffserver:

ffmpeg -i http://192.168.122.1:8080/liveview/liveviewstream -vcodec libvpx -fflags nobuffer -an http://127.0.0.1:8090/feed1.ffm

После этого вы можете транслировать liveview с адресаlocalhost:8090/cam.webm

(Я использую свой ноутбук с Linux в терминале)

  1. Установите GSTREAMER:

sudo apt-get install libgstreamer1.0-0 gstreamer1.0-plugins-base gstreamer1.0-plugins-good gstreamer1.0-plugins-bad gstreamer1.0-plugins-ugly gstreamer1.0-libav gstreamer1.0-doc gstreamer1. 0-инструменты gstreamer1.0-x gstreamer1.0-alsa gstreamer1.0-gl gstreamer1.0-gtk3 gstreamer1.0-qt5 gstreamer1.0-pulseaudio

  1. исправьте параметры вашей камеры, чтобы включить управление через смартфон, например, ssd моей камеры в моей сети DIRECT-dpC3:DSC-RX100M5A

  2. Используйте Wi-Fi, чтобы подключить компьютер напрямую к камере

  3. Скажите камере, что нужно запустить liveView с помощью этой команды:

    curl http://192.168.122.1:10000/sony/camera -X POST -H 'Content- type:application / json' --data '{"method": "startLiveview", "params": [], "id ": 1," версия ": "1.0"}'

  4. Обратите внимание, что ответ камеры - это URL: мой:

    {"id": 1, "result": ["http://192.168.122.1:60152/liveviewstream?%211234%21%2a%3a%2a%3aimage%2fjpeg%3a%2a%21%21%21% 21% 21 "]}

  5. Скажите gstreamer, чтобы он использовал этот URL:

    gst-launch-1.0 souphttpsrc location=http://192.168.122.1:60152 / liveviewstream?%211234% 21% 2a% 3a% 2a% 3aimage%2fjpeg%3a% 2a% 21% 21% 21% 21% 21! jpegdec! автосигнал

7; Наслаждаться;-)

Я пытаюсь использовать ffmpeg для обработки потоковой передачи, и успешно сохранить потоковую передачу в виде файла FLV. Я использую этот код на терминале (я использую UNIX), и я успешно сохраняю файл как файл flv:

ffmpeg -i http://192.168.122.1:8080/liveview/liveviewstream -vcodec flv -qscale 1 -an output.flv

Может быть, вы можете изменить или оптимизировать его, как вам нужно.

В VLC у меня работает добавление.mjpg к URL-адресу, попробуйте это. Подождите сек и должно быть воспроизведено http://192.168.122.1:8080/liveview/liveviewstream.mjpg

Другие вопросы по тегам