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 в терминале)
- Установите 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
исправьте параметры вашей камеры, чтобы включить управление через смартфон, например, ssd моей камеры в моей сети DIRECT-dpC3:DSC-RX100M5A
Используйте Wi-Fi, чтобы подключить компьютер напрямую к камере
Скажите камере, что нужно запустить 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"}'
Обратите внимание, что ответ камеры - это 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 "]}
Скажите 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