【问题标题】:Unable to concatenate videos due to identical MOOV atoms由于相同的 MOOV 原子,无法连接视频
【发布时间】:2014-04-09 05:27:33
【问题描述】:

我正在从一个长的 mp4 文件中截取片段,然后重新加入其中的一部分。然而,由于 FFMPEG 显然为修剪后的文件保留了与原始文件相同的 MOOV atom,因此在 FFMPEG 看来,修剪后的视频都是相同的,因为它们都具有相同的 MOOV atom,因此在尝试加入时仅使用第一段视频。有没有解决的办法?不幸的是,由于 FFMPEG 嵌入在 Android 应用程序中,我只能使用 0.11 版本。 编辑:

这是一个流程示例:

ffmpeg -i /sdcard/path/movie.mp4  -ss 00:00:06.000, -t  00:00:05.270, -c:a aac -c:v libx264 /sdcard/path/file1.mp4
ffmpeg -i /sdcard/path/movie.mp4  -ss 00:00:12.000, -t  00:00:04.370, -c:a aac -c:v libx264 /sdcard/path/file2.mp4
ffmpeg -i /sdcard/path/movie.mp4  -ss 00:00:23.000, -t  00:00:03.133, -c:a aac -c:v libx264 /sdcard/path/file3.mp4
ffmpeg -i "concat:/sdcard/path/file1.mp4|/sdcard/path/file2.mp4|/sdcard/path/file3.mp4" -c:a aac -c:v libx264 /sdcard/path/output.mp4

我也尝试使用复制编解码器选项,但没有帮助。

【问题讨论】:

  • 你在 concat 和 cut 中使用了什么命令? ffmpeg 通常不会为每个剪切文件保留相同的 MOOV(例如,持续时间更改,这需要在元数据中)
  • @Florestan06 我已经编辑了评论,谢谢!

标签: android video ffmpeg


【解决方案1】:

你可以试试这样的:

ffmpeg -i input1.mp4 -c copy -bsf:v h264_mp4toannexb -f mpegts intermediate1.ts
ffmpeg -i input2.mp4 -c copy -bsf:v h264_mp4toannexb -f mpegts intermediate2.ts
ffmpeg -i "concat:intermediate1.ts|intermediate2.ts" -c copy -bsf:a aac_adtstoasc output.mp4

我希望这适用于 ffmpeg 0.11 版。我们需要确保您可以在应用文件剪切之前进行 concat。

您还可以检查中间文件*.mp4 是否正常工作?您可以尝试将您的视频文件放在与 ffmpeg 相同的文件夹中吗?我不确定 concat 协议对/sdcard/path/file1.mp4|/sdcard/path/file2.mp4 有何反应?

【讨论】:

  • @StackOverflowed 这个解决方案对你有用吗?我正在使用 0.11 并且在连接多个 mp4 时遇到问题。音频没有在它应该开始的时候开始,有时我有冻结的帧。
猜你喜欢
  • 2012-07-16
  • 1970-01-01
  • 2022-01-24
  • 1970-01-01
  • 1970-01-01
  • 2010-09-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多