FFmpeg 连接 mp4 损坏

FFmpeg 连接 mp4 损坏

当我跑步时

ffmpeg -f concat -i resizedvideolist.txt -c copy concatenated_time.mp4 2>&1

它将 txt 中的所有视频连接起来,但播放到一半左右时,有一个视频出现故障。该视频的音频无法播放,但下一个视频开始播放,因此延迟了。然后某个地方的音频设法赶上并重新同步。似乎这里发生了一些严重的损坏。

我不知道如何修复这个问题,因为编解码器和其他视频一样,都是 H.264,和其他视频一样都是 mp4。单个视频文件运行正常,而且已经在同一时间尺度上,因为在执行这个 ffmpeg 命令之前,我运行了

ffmpeg -i ./tempDownloadedMemes/$videoFileName -filter_complex 'scale=1080:-1,pad=1080:1080:(ow-iw)/2:(oh-ih)/2:0x2F2F2F' -video_track_timescale 15360 ./resizedVideos/resized_videoFileName 2>&1

说实话,我甚至不知道时间刻度是什么,但我读到它需要相同才能工作。我从列表中删除了视频,尝试了相同的命令,问题在视频中出现的时间与它出现的时间相同。这似乎与那个文件本身有关。关于 concat 错误有任何已知问题/解决方法吗?这对我非常重要。谢谢。

答案1

嗯,我发现了一个使用另一种连接方法的非常棘手的解决方法。

$resizedVideoList = file('resizedVideoList.txt', FILE_IGNORE_NEW_LINES);
$inputStringForConcat = "";
$concatString = "";
$concateNvalue = 0;
 foreach ($resizedVideoList as $key => $value) {
   //$limiter++;
   //if ($limiter > 2)break;
   $inputStringForConcat .= " -i ".$value;
   $concatString .= "[$key:0][$key:1]";
   $concateNvalue++;
 }
 $concatString .= " concat=n=$concateNvalue:v=1:a=1[v][a]";
  echo ("<pre>");
    print_r($inputStringForConcat);
    print_r($concatString);


 echo shell_exec("./ffmpeg $inputStringForConcat -filter_complex '$concatString' -map '[v]' -map '[a]' concatenated_time.mp4 2>&1");

相关内容