- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正致力于从 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/
我正致力于从 4K 视频中提取和转码剪辑。我已经知道从哪里开始以及剪辑应该持续多长时间。 我正在使用以下命令来提取我需要的剪辑(视频中有 30 秒,我拍摄了 10 秒的剪辑) ffmpeg -ss 3
我是一名优秀的程序员,十分优秀!