从 ffserver 中寻找并暂停视频流
Seek and pause video stream from ffserver
我成功地从 ffmpeg 提供了 ffserver。 ffmpeg 将输入作为 PIPE:
ffmpeg -loglevel fatal -f image2pipe -re -vcodec png -i - -vcodec libx264 http://localhost:8090/%s.ffm
外部 java 进程生成 svg/png 图像并推送到 ffpmepg
我的 ffserver 配置允许我在 ffm 文件中缓冲实时提要,而无需定义文件的大小。
我的 stream 配置如下所示:
<Stream live2.mjpg>
Feed feed2.ffm
Format mpjpeg
VideoFrameRate 25
VideoSize 640x880
VideoQMin 1
VideoQMax 5
NoAudio
Strict -1
</Stream>
问题是,尽管我可以通过打开网络在 VLC 中观看流:
http://0.0.0.0:8090/live2.mjpg
但我无法通过已经缓冲的电影进行搜索。
有没有办法实现从“现在”开始的电影寻片、暂停、继续播放?我已经尝试过 rtsp 和 h264、mpg 和 sdp 但没有成功:
<Stream test1.mpg/sdp/h264>
Format rtp
Feed feed2.ffm
VideoCodec libx264
VideoSize 640x880
VideoQMin 1
VideoQMax 5
NoAudio
Strict -1
VideoFrameRate 25
</Stream>
rtsp 是这个问题的解决方案,还是我需要其他东西?
因为我使用的是 PIPE,所以可以从 动态 文件实现吗?
RTSP
ffserver
中的 RTSP 支持似乎有点粗略,您可以尝试 Darwin Streaming Server or the Live555 media server。至少对于 VOD,两者似乎都支持某种形式的特技播放。由于您使用的是管道,因此这可能无济于事。
RTMP
一些 RTMP servers/clients 支持缓冲区内搜索(智能搜索)。
About Smart Seek
Adobe Media Server 3.5.3 and Flash Player 10.1 work together to
support smart seeking in VOD streams and in live streams that have a
buffer. [Source].
ffserver
不支持 RTMP 输出,但您可以使用 ffmpeg
命令将流直接推送到服务器:
ffmpeg -re -i <input> -f flv rtmp://...
有一个Nginx RTMP module and a C++ RTMP服务器,虽然不太清楚他们是否支持智能搜索。 VLC 似乎可以在暂停时寻找一点,并且通常有修改客户端 RTMP 缓冲区大小的选项。
我成功地从 ffmpeg 提供了 ffserver。 ffmpeg 将输入作为 PIPE:
ffmpeg -loglevel fatal -f image2pipe -re -vcodec png -i - -vcodec libx264 http://localhost:8090/%s.ffm
外部 java 进程生成 svg/png 图像并推送到 ffpmepg
我的 ffserver 配置允许我在 ffm 文件中缓冲实时提要,而无需定义文件的大小。
我的 stream 配置如下所示:
<Stream live2.mjpg>
Feed feed2.ffm
Format mpjpeg
VideoFrameRate 25
VideoSize 640x880
VideoQMin 1
VideoQMax 5
NoAudio
Strict -1
</Stream>
问题是,尽管我可以通过打开网络在 VLC 中观看流:
http://0.0.0.0:8090/live2.mjpg
但我无法通过已经缓冲的电影进行搜索。 有没有办法实现从“现在”开始的电影寻片、暂停、继续播放?我已经尝试过 rtsp 和 h264、mpg 和 sdp 但没有成功:
<Stream test1.mpg/sdp/h264>
Format rtp
Feed feed2.ffm
VideoCodec libx264
VideoSize 640x880
VideoQMin 1
VideoQMax 5
NoAudio
Strict -1
VideoFrameRate 25
</Stream>
rtsp 是这个问题的解决方案,还是我需要其他东西?
因为我使用的是 PIPE,所以可以从 动态 文件实现吗?
RTSP
ffserver
中的 RTSP 支持似乎有点粗略,您可以尝试 Darwin Streaming Server or the Live555 media server。至少对于 VOD,两者似乎都支持某种形式的特技播放。由于您使用的是管道,因此这可能无济于事。RTMP
一些 RTMP servers/clients 支持缓冲区内搜索(智能搜索)。
About Smart Seek
Adobe Media Server 3.5.3 and Flash Player 10.1 work together to support smart seeking in VOD streams and in live streams that have a buffer. [Source].
ffserver
不支持 RTMP 输出,但您可以使用ffmpeg
命令将流直接推送到服务器:ffmpeg -re -i <input> -f flv rtmp://...
有一个Nginx RTMP module and a C++ RTMP服务器,虽然不太清楚他们是否支持智能搜索。 VLC 似乎可以在暂停时寻找一点,并且通常有修改客户端 RTMP 缓冲区大小的选项。