我正在为VB.net中的Sony摄像机的远程使用编写一个小型软件(我使用QX1,但该型号应该无关紧要)。我可以通过将JSON命令发送到相机来制作图片,也可以使用包装在JSON命令中的“ startLiveview”方法启动实时视图流。作为回报,我获得了下载直播的地址,例如http://192.168.122.1:8080/liveview/liveviewstream(包装在JSON-answer中)。
根据Sony CameraRemote-API参考,这是一个流,其中包含一些标头数据和单个jpeg数据。但这似乎不是MJPEG流。我可以将livestream-link链接到我的浏览器,然后它开始无限下载实时流。我无法使用VLC之类的MJPEG流播放器显示该流。
我的问题是,如何使用VB.net过滤jpeg数据或如何显示实时流。
an older question上已经发布了类似的问题,但没有任何答复。因此,我要再次尝试。
这是我的方式,我使用ffserver使视频可流化。这是myconfigffserver配置(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
我尝试使用ffmpeg处理流,并成功将流另存为flv文件。我在终端上使用此代码(我使用UNIX),并成功将文件另存为flv文件:
ffmpeg -i http://192.168.122.1:8080/liveview/liveviewstream -vcodec flv -qscale 1 -an output.flv
也许您可以根据需要对其进行修改或优化。
在VLC中,我可以在URL中添加.mjpg来试试。等待几秒钟,应该播放http://192.168.122.1:8080/liveview/liveviewstream.mjpg