Bru*_*ceR 4 audio video ffmpeg video-encoding
我已经尝试了这个答案中描述的方法。它运行良好,只是缺少音频。谁能建议如何将视频和音频都输入输出?
例子:
我在假期拍了一段 2 分钟的袋鼠视频。它有 2 个部分(都大约 6 秒长)我想将(包括音频)提取到一个只有这两个可爱部分的短片中。
我知道我可以提取两个单独的位,然后加入它们,但是上面提到的文章让我可以做我想做的事情,但是当你按照这种方法时,没有音频。我想使用类似的单一调用 FFmpeg。
在这里,我假设您的原始文件在mp4容器中,但该方法也适用于其他容器。
一步法- (稍微多一点)另请参阅 ptQa 在引用的线程中给出的答案。但是这里添加了音频是一样的:
ffmpeg -i inputfile.mp4 \
-filter_complex "[0:v]trim=start=10:end=16,setpts=PTS-STARTPTS[a];
[0:v]trim=start=20:end=26,setpts=PTS-STARTPTS[b];
[0:a]atrim=start=10:end=16,asetpts=PTS-STARTPTS[c];
[0:a]atrim=start=20:end=26,asetpts=PTS-STARTPTS[d];
[a][c][b][d]concat=n=2:v=1:a=1[e][f]" \
-map '[e]' -map '[f]' -strict -2 outputfile.mp4
Run Code Online (Sandbox Code Playgroud)
这会添加音频流和必要的打击垫以获取音频。
为完整性提供:
简单的方法:您可以使用您已经知道的两步过程:
首先从全长视频中剪切并提取您想要的 2 个片段。
第二将这两个部分连接在一起。
这应该是最简单的方法。
从第三秒到第九秒剪下一块:
ffmpeg -i input.mp4 -ss 00:00:03 -to 00:00:09 -c:v copy -c:a copy part1.mp4
Run Code Online (Sandbox Code Playgroud)
您可以为第二部分重复该过程。如果是从第 10 秒到第 16 秒:
ffmpeg -i input.mp4 -ss 00:00:10 -to 00:00:16 -c:v copy -c:a copy part2.mp4
Run Code Online (Sandbox Code Playgroud)
另外,请参阅此线程以获取更多详细信息。
现在您有 2 个可以加入的文件。您可以至少以 3 种不同的方式“连接”。无需重新编码的方法是通过 demuxer 选项来完成。使用以下内容创建一个名为(比如说)joinlist.txt 的文本文件:
file 'part1.mp4'
file 'part2.mp4'
Run Code Online (Sandbox Code Playgroud)
要加入这两个文件,请将 2 个电影和文本 (joinlist.txt) 放在同一文件夹中并使用以下命令:
ffmpeg -f concat -i joinlist.txt -c copy joinedfile.mp4
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5269 次 |
| 最近记录: |