gpt4 book ai didi

linux - 将 ffmpeg -sseof 与管道一起使用

转载 作者:太空宇宙 更新时间:2023-11-04 12:29:11 25 4
gpt4 key购买 nike

我正致力于从 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 秒?或者也许有人对此有更好的解决方案?

最佳答案

也许我遗漏了什么,但你所需要的是

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'

关于linux - 将 ffmpeg -sseof 与管道一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43767155/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com