我有一个设置,本地应用程序将一系列 JPEG 图像写入 FIFO(Linux 上的 Unix 命名管道)。在另一端,我ffmpeg
拿起了序列并将其传递给一个实例ffserver
:
% ffmpeg -i fifo.mjpeg http://127.0.0.1:8090/feed.ffm
的配置ffserver
如下所示:
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 Jessie,软件包来自 jessie-backports)和 3.0(Arch Linux)上尝试了这种设置,两种情况下的结果都相同。