我有一个本地应用程序将一系列JPEG图像写入FIFO (Linux上的Unix命名管道)的设置。另一方面,我让ffmpeg获取序列并将其传递给ffserver的一个实例。
% ffmpeg -i fifo.mjpeg http://127.0.0.1:8090/feed.ffmffserver的配置如下所示:
HTTPPort 8090
HTTPBindAddress 0.0.0.0
MaxHTTPConnections 20
MaxClients 10
MaxBandwidth 1000
<Feed feed.ffm>
File /tmp/feed.ffm
FileMaxSize 200k
ACL allow 127.0.0.1
</Feed>
<Stream stream.mpjpeg>
Format mpjpeg
Feed feed.ffm
VideoSize 960x600
VideoFrameRate 2
VideoIntraOnly
Strict -1
NoAudio
NoDefaults
</Stream>这很好,我可以指向我的网页浏览器到http://127.0.0.1:8090/stream.mpjpeg,并看到视频。
现在,我想添加一种下载单个JPEG的方法(我认为它是视频的快照)。我在ffserver配置中添加了以下内容:
<Stream image.jpg>
Format singlejpeg
Feed feed.ffm
VideoSize 960x600
VideoFrameRate 2
VideoIntraOnly
Strict -1
NoAudio
NoDefaults
</Stream>那只会起作用。当然,如果我将浏览器指向http://127.0.0.1:8090/image.jpg,我就会从视频中获得一张静止的图片,但是浏览器从未停止加载!
实际上,如果我运行wget http://127.0.0.1:8090/image.jpg,我会看到MIME类型是很好的(image/jpeg),但是图像似乎没有尽头。
在我的配置中,是否遗漏了使ffserver发送多个图像的东西?
我应该补充一下,我已经在2.8.6 (Debian,package来自jessie-backports)和3.0 (Arch )上尝试过这个设置,在这两种情况下都有相同的结果。
发布于 2016-05-03 08:29:41
你知道,我在寻找答案。我只找到了使用mjpg-streamer来完成这个任务的方法
mjpg_streamer -i 'input_uvc.so -f 15 -r 640x480' -o 'output_http.so'使您可以通过http://localhost:8080/?action=snapshot下载快照。但我可以用它.
编辑:
看起来我想出了如何制作“可快照”的ffserver。这是我的配置:
HTTPPort 8090
HTTPBindAddress 0.0.0.0
MaxHTTPConnections 20
MaxClients 10
MaxBandwidth 100000
<Feed feed.ffm>
File /tmp/feed.ffm
FileMaxSize 200k
ACL allow 127.0.0.1
</Feed>
<Stream image.jpg>
Feed feed.ffm
Format jpeg
VideoSize 800x600
VideoFrameRate 30
Preroll 5
VideoIntraOnly
Strict -1
NoAudio
NoDefaults
</Stream>编辑:
不幸的是,这种方法有时会产生奇怪的挂起.
https://stackoverflow.com/questions/36428564
复制相似问题