使用ffserver提供单个JPEG



我有一个设置,本地应用程序将一系列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)上都尝试过这种设置,在这两种情况下都得到了相同的结果。

你知道,我正在寻找这个问题的答案。我只找到了使用mjpg-streamer:的方法

mjpg_streamer -i 'input_uvc.so -f 15 -r 640x480' -o 'output_http.so'

允许您通过http://localhost:8080/?action=snapshot下载快照。但我可以使用ffmpeg。。。

编辑:

看起来我已经想好了如何制作"可快照"的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>

编辑:

不幸的是,这种方法有时会产生奇怪的挂起。。。

相关内容

  • 没有找到相关文章

最新更新