我有2个MP4文件,它们具有相同的帧大小和相同的帧速率。
我想使用C#将它们连接起来
任何合理的解决方案都可以...我不仅限于使用ffmpeg。
我也不介意对一个或两个文件进行转码。
是的,我尝试过使用ffmpeg,并使用了本贴子和其他所有创意 How to concatenate two MP4 files using FFmpeg?
也尝试过AVConv和MP4Box。我认为如果可以找到命令行选项,那么我的C#代码可以简单地执行该命令。
在一个输入文件上执行转码后,我能够使它们连接起来,然后使用传输流中间文件方法。但是,生成的文件偏移了1帧。这是文件的最后一帧,对我的应用程序来说非常重要。
我找到了一个名为Avdshare Video Converter的程序,该程序的确将文件合并为零。我现在只想在我的应用程序中执行此操作。
答案 0 :(得分:1)
使用FFMPEG的解决方案!
以前发布的某些命令行示例需要一些关键更改。
请注意,我的问题不是说转码不是一种选择。
我最终将两个片段都转换为H.264。
ffmpeg -i clip1.mp4 -vcodec libx264 -acodec aac clip1h264.mp4
ffmpeg -i clip2.mp4 -vcodec libx264 -acodec aac clip2h264.mp4
然后我将它们转换为2个传输流。
ffmpeg -i clip1h264.mp4 -c copy -bsf:v h264_mp4toannexb -f mpegts temp1.ts
ffmpeg -i clip2h264.mp4 -c copy -bsf:v h264_mp4toannexb -f mpegts temp2.ts
然后将2个传输流连接在一起。最终串联成功的关键更改是删除了-copy选项,使命令变为:
ffmpeg -i "concat:temp1.ts|temp2.ts" -bsf:a aac_adtstoasc -y full.mp4
一旦所有这些命令都起作用,那就是使用Process.Start在我的C#代码中逐一执行它们。
祝那些尝试进行类似手术的人好运。希望这也对您有用!
特别感谢下降投票者的所有帮助和鼓励。继续努力,使编程世界变得更美好。