使用 ffmpeg 流式传输 mp4

使用 ffmpeg 流式传输 mp4

我需要创建一个包含两个流(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

相关内容