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-потока, такого как VLC.

Мой вопрос в том, как я могу отфильтровать jpeg-данные с помощью VB.net или как я могу показать прямую трансляцию.

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


person user5068404    schedule 01.07.2015    source источник


Ответы (4)


Это мой способ, я использую 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

После этого вы можете вести прямую трансляцию с адреса localhost:8090/cam.webm.

person Bayu Metalkoholic    schedule 03.07.2015
comment
О, это звучит хорошо. Но, к сожалению, ffserver существует только для Linux, насколько я мог погуглить. Есть ли способ использовать его под Windows? - person user5068404; 04.07.2015

(Я использую свой ноутбук с 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 '{метод: startLiveview, params: [], id: 1, version: 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 супhttpsrc location=http://192.168.122.1:60152/liveviewstream?%211234%21%2a%3a%2a%3aimage%2fjpeg%3a%2a%21%21%21%21%21 ! jpegdec ! автовидеосинк

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

person jano59    schedule 09.08.2020

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

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

Возможно, вы можете изменить или оптимизировать его по мере необходимости.

person Bayu Metalkoholic    schedule 02.07.2015
comment
Спасибо. Это помогает только немного. В выводе ffmpeq я мог прочитать, что источник - это mjpeg, yuvj422p(pc, bt470bg/unknown/unknown) -stream. Я не уверен, что это значит. Как я могу воспроизвести такой поток с помощью VB.net? - person user5068404; 02.07.2015
comment
Я не программист VB.net, я не уверен, как это сделать на VB.net, но основная идея заключается в потоковой передаче через сеть на VB.net. Я могу транслировать видео в браузере или vlc player. Я использую ффсервер. - person Bayu Metalkoholic; 03.07.2015

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

person Maciej Roger FPV    schedule 07.01.2020