【问题标题】:ffmpeg fails to transcode and give output to stream for -f mp4ffmpeg 无法转码并将输出提供给 -f mp4 的流
【发布时间】:2012-07-17 19:28:37
【问题描述】:

我使用 ffmpeg 进行转码已经有一段时间了。 最近我有一个要求,即 ffmpeg 输出不需要到文件而是到 stdout ,稍后将被捕获然后发送回callingurl。 我在 flv 和 avi 上取得了一些初步成功,但是在使用 -f 标志时在 mp4 上失败了。 这是我的代码,需要认真研究一下

这适用于播放器:

ffmpeg -loglevel quiet -i cat_dog.mp4 -vbsf h264_mp4toannexb -vcodec copy \
-acodec copy -f mpegts -movflags frag_keyframe+empty_moov -re - 2>&1

播放器无法播放:

ffmpeg -loglevel quiet -i cat_dog.mp4 -vbsf h264_mp4toannexb -vcodec copy \
-acodec copy -f MP4 -movflags frag_keyframe+empty_moov -re - 2>&1

【问题讨论】:

  • “失败”是什么意思?错误信息?没有错误信息但文件无法播放?

标签: ffmpeg mp4 http-live-streaming


【解决方案1】:

in the docs 所述,使用-movflags 的缺点是“与其他应用程序的兼容性较差”。

对于 flv 或 avi 格式,-movflags 选项将是无关的并被忽略,但对于 mp4,它会生效并可能破坏兼容性。

【讨论】:

  • 感谢 MP4 的 -movflags 副作用。 “失败”是指视频正在转码并通过管道传输到标准输出。此管道无法在视频播放器中播放,而 -f flv/mpegts 标志有效。另外,在视频开头使用 moov atom 对 MP4 输出进行转码的标准方法是什么。
  • 标准的方式是转码整部电影,然后将 moov atom 移动到文件的开头而不是结尾。我所知道的唯一替代方法是使用例如 moovflags 制作碎片化的 MP4,但您已经看到这并不总是有效。 MP4 格式不支持流式传输,但转码效果很好。
  • 感谢您的评论,我想我需要为 mp4 格式的 mpegTS 编写错误更正代码。 MPEGTS 是为 DVB 原生构建的,不会中断转码和流式传输。我希望这种组合能解决破损。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-25
  • 2017-12-24
  • 2013-02-15
  • 2012-10-02
  • 2016-04-01
  • 2014-03-15
相关资源
最近更新 更多