我需要创建一个包含两个流(webm 和 mp4)的 feed,以便它能够兼容所有 HTML5 视频播放器。webm 流运行良好。但是,当尝试访问 mp4 流时,服务器会发出以下错误:
Sat Mar 9 23:21:54 2013 muxer does not support non seekable output
以下是 ffserver.conf 文件中处理 mp4 流的部分:
<Stream channel1.mp4> # Output stream URL definition
Feed feed1.ffm # Feed from which to receive video
Format mp4
# Audio settings
AudioCodec libmp3lame
AudioBitRate 64 # Audio bitrate
# Video settings
VideoCodec libx264
VideoSize 560x320 # Video resolution
VideoFrameRate 25 # Video FPS
AVOptionVideo flags +global_header # Parameters passed to encoder
# (same as ffmpeg command-line parameters)
AVOptionVideo cpu-used 0
AVOptionVideo qmin 10
AVOptionVideo qmax 42
AVOptionVideo quality good
AVOptionAudio flags +global_header
PreRoll 15
StartSendOnKey
VideoBitRate 400 # Video bitrate
</Stream>
据我所知,有些人说 mp4 根本无法流式传输。我对 mp4 没有任何感情,只是我以为你需要 mp4 才能使用 HTML5 视频播放器将视频流式传输到 iPhone。如果不是这样,请告诉我,我很乐意切换到可以更好地与 ffmpeg 流式传输配合使用的东西。
答案1
文章 您自己的网站上的 HTML 5 和 iPad 友好视频,最后更新于 2014 年 11 月 12 日,包含以下信息:
本文建议使用 MP4 作为一个很好的解决方案,并使用足够新的 ffmpeg 版本,使用带有 AAC 的 H.264 编码。
我建议阅读文章时注意细节:它包含一个可以在所有主流浏览器上运行的示例 HTML 文件,以及一个用于将视频转换为 .mp4 文件以便它们能够正确流式传输的示例 FFmpeg 命令。
答案2
我认为思考 HTTP 实时流将会很有帮助。
https://developer.apple.com/streaming/
据我了解,它在 iOS 设备上运行良好。
以下是其中一个例子:
https://stackoverflow.com/questions/28723993/ffmpeg-hls-stream-for-android-and-ios