我正在从一个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秒?或者有人有更好的解决方案?
发布于 2017-05-03 18:28:27
也许我错过了什么但你所需要的只是
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'https://stackoverflow.com/questions/43767155
复制相似问题