我正致力于从4K视频中提取和转码剪辑。 我已经知道从哪里开始以及剪辑应该持续多长时间。
我使用以下命令提取我需要的剪辑(视频30秒,我拍摄10秒剪辑)
ffmpeg -ss 30 -i 'input.mp4' -c copy -t 10 -f matroska 'output.mp4'
为了使视频保留关键帧,因此它知道要绘制什么,剪辑可以超过10秒(这是预期的)
然后我可以使用以下内容对视频进行转码,并确保它只需要最后10秒(特别是sseof
命令)
ffmpeg -sseof -10 -i 'output.mp4' -vcodec libx264 -r 15 -s 720x400 -aspect 720:400 -sn -f matroska -acodec libmp3lame -ac 2 -ar 11025 -y 'transcoded.mkv'
由于文件系统速度慢,我想避免将提取的剪辑写入磁盘的第一步,我可以使用管道进行此操作,只需动态转码。
ffmpeg -ss 30 -i 'input.mp4' -c copy -t 10 -f matroska pipe:1 | ffmpeg -i pipe:0 -vcodec libx264 -r 15 -s 720x400 -aspect 720:400 -sn -f matroska -acodec libmp3lame -ac 2 -ar 11025 -y 'transcoded.mkv'
但是对于管道,我无法使用-sseof
命令,因为它只会生成无效的视频剪辑文件。 (日志中没有错误或警告)
我目前的解决方案是再次对转码后的视频片段进行转码,并且只需要最后10秒钟。 (但这似乎是一个糟糕的解决方法,而不是一个真正的解决方案)
由于这是我第一次使用ffmpeg
,我想知道是否可以通过管道拍摄视频的最后10秒?或者也许某人有更好的解决方案呢?
答案 0 :(得分:0)
也许我错过了一些东西,但你需要的只是
ffmpeg -ss 30 -i 'input.mp4' -t 10 -vcodec libx264 -r 15 -s 720x400 -aspect 720:400
-acodec libmp3lame -ac 2 -ar 11025 -sn -f matroska -y 'transcoded.mkv'