我们有一个创建交互式视频的 Flash 网络应用程序,并且在用户“发布”他们的项目时使用 ffmpeg 进行一些压缩/调整大小。
用户可以上传 flv 文件和 mp4 文件,在发布之前,这两种文件都可以在 Flash UI 中正常播放。发布后,flv 文件可以正常播放,但 mp4 文件无法在 Flash Player 中播放:音频可以播放,但视频无法播放。
如果我下载 mp4 文件并在 Quicktime 播放器中播放它们,它们可以正常播放,但如果我尝试在 Adobe Media Player 中打开它们,它会报告“媒体文件不包含支持的视频轨道”。
如果我在 quicktime 中打开影片检查器,它会告诉我原始文件是“h264”视频,而 ffmpeg 处理后的文件是“mpeg-4”。
我尝试通过添加类似标志将其强制转换为 h264,-f h264 and -vcodec h264
但我收到一屏错误(无帧、非法 POC 类型、sps_id 超出范围),结尾为Could not find codec parameters (Video: h264)
ffmpeg -formats
如果我运行和, h264 就会出现ffmpeg -codecs
,而且正如我所说,它可以在 Quicktime 中正常播放。
我还需要做什么才能让 Flash Player 播放它们吗?我还需要告诉您有关服务器的其他信息以提供帮助吗?
答案1
当我使用 生成 MPEG4 视频文件时ffmpeg
,我使用-vcodec libx264
。适当的-f
参数取决于您的 Flash 播放器可以接受的内容。
请注意,这个问题与 serverfault.com 无关;您可能想询问有关 ffmpeg 使用的问题ffmpeg 用户邮件列表。
答案2
在这里您可以找到关于如何在 Ubuntu 上编译 ffmpeg 进行 MP4 X264 编码的非常完整的指南:
http://ffmpeg.org/trac/ffmpeg/wiki/UbuntuCompilationGuide
它还弄清楚了如何添加额外的流媒体设置/工具,例如 qt-faststart