Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Video ffmpeg concat使视频更长_Video_Ffmpeg - Fatal编程技术网

Video ffmpeg concat使视频更长

Video ffmpeg concat使视频更长,video,ffmpeg,Video,Ffmpeg,我有两个视频文件,我想用ffmpeg压缩 首字母.mp4 视频:h264(高)(avc1/0x31637661)、yuv420p(电视)、720x720、1077 kb/s、15.98 fps、16 tbr、600 tbn、1200 tbc(默认) 结束.mp4 视频:h264(高)(avc1/0x31637661),yuv420p(电视,bt470bg),720x720[SAR 1:1 DAR 1:1],1287kb/s,25fps,25tbr,25k tbn,50tbc(默认值 视频\u说明

我有两个视频文件,我想用ffmpeg压缩

首字母.mp4 视频:h264(高)(avc1/0x31637661)、yuv420p(电视)、720x720、1077 kb/s、15.98 fps、16 tbr、600 tbn、1200 tbc(默认)

结束.mp4 视频:h264(高)(avc1/0x31637661),yuv420p(电视,bt470bg),720x720[SAR 1:1 DAR 1:1],1287kb/s,25fps,25tbr,25k tbn,50tbc(默认值

视频\u说明\u和\u ending.txt

file initial.mp4
file initial.mp4
file initial.mp4
file ending.mp4
FFmpeg命令

ffmpeg -f concat -i video_instructions_with_ending.txt -c copy output.mp4 -y
输出.mp4视频:h264(高)(avc1/0x31637661)、yuv420p(电视)、720x720、27 kb/s、0.43 fps、48 tbr、19200 tbn、38400 tbc(默认)

输出文件应为6秒,但输出文件为3分钟32秒

任何帮助都将不胜感激


对于我使用的文件,您可以从以下位置获得它:

end.mp4
上运行此命令,然后使用新文件concat:

ffmpeg -i ending.mp4 -c copy -video_track_timescale 600 newending.mp4

长话短说,时基不同,因此结束视频会延长。有关时间戳和时基的上下文,请参阅。

我尝试了以下命令,它对我有效

ffmpeg -i initial.mp4 -i initial.mp4 -i initial.mp4 -i ending.mp4 -filter_complex concat=n=4:v=1:a=0 -f MOV output.mp4 -y
说明: FFmpeg有三种concat方法

  • concat协议(ffmpeg-i'concat:input1 | input2'-编解码器副本输出)-用于二进制concat兼容文件,如avi、mpeg ts文件
  • concat demuxer(您已经解释过的方法)-当您希望避免重新编码并且您的格式不支持文件级连接时使用
  • concat filter:(上面的答案)-如果需要重新编码,例如应用过滤器时,请使用

  • 第三个选项适合这种情况,因为我们需要对文件进行重新编码。

    您好,谢谢您的帮助。我尝试过,但不幸的是,组合的视频没有newending.mp4。为什么?您的视频没有相同的编码。一个或两个可能需要重新编码。您好,Arun,谢谢您的解释。对于第三个选项,因为它是重新编码的ing,我将遭受质量损失,对吗?不一定。我们可以应用其他参数进行无损编码。有一个参数crf(0-51)其中0表示完全无损,51表示大多数有损。当我使用18尝试crf时,我可以得到源比特率。下面是命令,我尝试了'ffmpeg-I initial.mp4-I initial.mp4-I initial.mp4-I ending.mp4-filter\u complex concat=n=4:v=1:a=0-crf 18 output.mp4-y'Ref:这修正了我的错误,非常感谢!我以为我是为了避免t他的方法在使用MP4时却明显没有!非常感谢:)请参考,我想这将是您的解决方案。