多个帧率(fps)不同的 mp4 片段,怎样无缝、不重编码(without re-encode)地拼接(concat)回一个文件,且不改变时间长度?
关键词:帧率不同、无缝拼接、不重编码、不改变时间长度
如果 4 个定语无法同时满足,无缝拼接可以去掉
定期收到的视频,每个视频总被剪成 N 段片段,现想合并回 1 个文件。试了下面的方案,都不满意:
fps 不同的文件,直接 ffmpeg concat demuxer 会各种问题,大佬肯定知道,不细说了
即使 fps 相同,用如下命令直接 concat demuxer,在合并的分界处,也会有卡屏停顿。相反用 Boilsoft Video Joiner 合并,就没有卡屏、真正无缝。所以不知道 ffmpeg 想无缝拼接,应该怎么写命令?
(echo file 'first file.mp4' & echo file 'second file.mp4' )>list.txt
ffmpeg -safe 0 -f concat -i list.txt -c copy output.mp4
试了如下命令,虽然不重编码,但会改变时间长度:
ffmpeg -y -i seeing_noaudio.mp4 -c copy -f h264 seeing_noaudio.h264
再ffmpeg -y -r 29.97 -i seeing_noaudio.h264 -c copy seeing.mp4
试了如下命令,会重编码(有损转换,丢视频质量): ffmpeg -i input.mp4 -r 29.97 -y output.mp4
所以这种需求,有办法实现么?
求助前提:只有剪辑后的片段。不聊能拿到未剪辑视频源的情况
大佬可能说,不改变时间长度就必须丢弃帧,那怎么可能不重编码?是这样吗?菜鸟不懂,说错求科普,谢谢😛
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.