【问题标题】:FFMPEG: How to fix WebM file which was created by stitching multiple WebM files?FFMPEG:如何修复通过拼接多个 WebM 文件创建的 WebM 文件?
【发布时间】:2020-12-26 21:07:53
【问题描述】:

我有一个文件,其中有多个 WebM(vp9/opus) 流按顺序拼接在一起。

当尝试通过常规媒体播放器播放时,它会在序列中第一个流的末尾停止。

当与FFMPEG 一起使用以将其转码为MP4 时,转码将在第一个流的末尾停止。

使用FFMPEG 是否可以从包含多个按顺序拼接在一起的WebM(vp9/opus) 的文件中创建一个常规的WebM(vp9/opus) 文件?

【问题讨论】:

  • 您可以尝试使用-ss-t来选择与单个流对应的视频的特定部分。 Documentation for main options including -t and -ssAn example in another question
  • 感谢您的意见和建议!我可以尝试,但我试图实现的最终目标是处理上述问题中解释的性质的数据流,所以我正在寻找的解决方案是调整转码器以适应不同性质的流。
  • 我假设您不再拥有原来的 WebM。您是否在使用文件或数据流,即输入是否可搜索和持久化?
  • @Gyan 我确实有包含多个流的文件,这些流拼接在一起进行测试

标签: video ffmpeg libvpx


【解决方案1】:

您无法使用 ffmpeg 命令行来实现这一点,但如果您正在编写自己的基于 ffmpeg 库(avformatavcodec)的转码器,则可以使用自定义 AVIOContext;当第一个流完成时,您的上下文处理程序将知道文件偏移量;现在,您可以向前跳,直到遇到下一个 1a 45 df a3 标记,然后在此位置打开下一个“输入文件”。

【讨论】:

  • 非常感谢您的回复!如果您有任何指向示例实现的指针来引用它,那就太好了!
  • 我将从官方的transcode 示例开始。 Here 可以看到如何引入自定义的 AVIOContext。 您不需要特定于 fd 的逻辑,但我建议您使用 stdin 完成所有工作,这样您就不必关心要打开哪个输入文件
猜你喜欢
  • 2017-03-26
  • 2011-10-20
  • 1970-01-01
  • 2015-10-23
  • 1970-01-01
  • 2016-10-19
  • 2017-12-07
  • 2019-11-14
  • 2016-05-11
相关资源
最近更新 更多