6. 截取连接音视频

1, 截取视频的点
ffmpeg -i 1.mp4 -ss 00:01:00 -to 00:01:10 -acodec copy c1.mp4
要截取时间单位的起点和终点

也可以

ffmpeg -i 1.mp4 -ss 00:01:00 -t 10 -acodec copy c1.mp4

image.png

image.png

第二个要比第一个速度快,但是不保证正确
第三个速度快且能保证正确率。

2 把多个视频连接成一个视频的操作 ,这里把1.mp4 和2.MP4 合并

ffmpeg -i "concat:1.mp4|2.mp4" -c copy o2.mp4

image.png

3 截取合并视频的工具也可以使用 Avidemux


image.png

横向合并视频
ffmpeg -i input1.mp4 -i input2.mp4 -lavfi hstack output.mp4

上面的命令虽然可以合并视频,两个视频可以正常播放,但是只保留了前面一个的音频。
下面会介绍怎么避开这个坑。

注意这时候input1和input2必须同样的高度,如果不一样的高度可以使用-shortest参数来保证同样的高度。

如果希望合并多个视频,可以使用下面命令行。
ffmpeg -i input1.mp4 -i input2.mp4 -i input3.mp4 -lavfi hstack=inputs=3 output.mp4
其中input=3表示希望合并的视频的个数

纵向合并视频
ffmpeg -i input1.mp4 -i input2.mp4 -lavfi vstack output.mp4

网格合并视频
当多个视频时,还可以合并成网格状,比如2x2,3x3这种。但是视频个数不一定需要是偶数,如果是奇数,可以用黑色图片来占位。

ffmpeg -f lavfi -i color=c=black:s=1280x720 -vframes 1 black.png
该命令将创建一张1280*720的图片

然后就可以使用下面这个命令来合并成网格视频了,如果只有三个视频,可以选择上面创建的黑色图片替代。
ffmpeg -i top_left.mp4 -i top_right.mp4 -i bottom_left.mp4 -i bottom_right.mp4
-lavfi "[0:v][1:v]hstack[top];[2:v][3:v]hstack[bottom];[top][bottom]vstack"
-shortest 2by2grid.mp4

上面创建的是正规的2x2网格视频。想象一下,现在只有三个视频,我想把第一个视频摆放在第一行的中间,然后把第二、三个视频摆放在第二行。那么就可以使用下面两个命令了。

ffmpeg -f lavfi -i color=c=black:s=640x720 -vframes 1 black.png

ffmpeg -i black.png -i top_center.mp4 -i bottom_left.mp4 -i bottom_right.mp4
-lavfi "[0:v][1:v][0:v]hstack=inputs=3[top];[2:v][3:v]hstack[bottom];[top][bottom]vstack"
-shortest 3_videos_2x2_grid.mp4

合并音频和视频
ffmpeg -i video.mp4 -i audio.wav -c:v copy -c:a aac -strict experimental output.mp4

如果视频中已经包含了音频,这个时候还可以替换视频中的音频,使用下面命令行。
ffmpeg -i video.mp4 -i audio.wav -c:v copy -c:a aac -strict experimental
-map 0:v:0 -map 1:a:0 output.mp4

合并两个音频
ffmpeg -i input1.mp3 -i input2.mp3 -filter_complex amerge -ac 2 -c:a libmp3lame -q:a 4 output.mp3

获取视频中的音频
ffmpeg -i input.mp4 -vn -y -acodec copy output.m4a

去掉视频中的音频
ffmpeg -i input.mp4 -an output.mp4

现在介绍,怎么合并两个视频并保留两个视频中的音频。也就是抖音中的合拍功能。
1.合并两个视频,但是发现只有一个声音。无所谓。
2.抽取两个视频中的音频,然后合并成一个音频。
3.将这个音频替换到之前的合并视频中。
4.ok了。
5.可以使用ffplay播放了。

1 多个mp3文件合并成一个mp3文件

一种方法是连接到一起

ffmpeg.exe -i "concat:123.mp3|124.mp3" -acodec copy output.mp3

解释:-i代表输入参数

      contact:123.mp3|124.mp3代表着需要连接到一起的音频文件

       -acodec copy output.mp3 重新编码并复制到新文件中

另一种方法是混合到一起

ffmpeg.exe -i 124.mp3 -i 123.mp3 -filter_complex amix=inputs=2:duration=first:dropout_transition=2 -f mp3 remix.mp3

解释:-i代表输入参数

       -filter_complex ffmpeg滤镜功能,非常强大,详细请[查看文档](http://ffmpeg.org/ffmpeg.html)

       amix是混合多个音频到单个音频输出

       inputs=2代表是2个音频文件,如果更多则代表对应数字

       duration 确定最终输出文件的长度

           longest(最长)|shortest(最短)|first(第一个文件)

        dropout_transition

The transition time, in seconds, for volume renormalization when an input stream ends. The default value is 2 seconds.

        -f mp3  输出文件格式

2 音频文件截取指定时间部分

ffmpeg.exe -i 124.mp3 -vn -acodec copy -ss 00:00:00 -t 00:01:32 output.mp3

解释:-i代表输入参数

      -acodec copy output.mp3 重新编码并复制到新文件中

       -ss 开始截取的时间点

       -t 截取音频时间长度

3 音频文件格式转换

ffmpeg.exe -i null.ape -ar 44100 -ac 2 -ab 16k -vol 50 -f mp3 null.mp3

解释:-i代表输入参数

       -acodec aac(音频编码用AAC) 

      -ar 设置音频采样频率

      -ac  设置音频通道数

      -ab 设定声音比特率

       -vol <百分比> 设定音量
  1. 使用简单的 ffmpeg 命令批量合并视频文件

先看看要合并的视频文件


image.png

合并视频文件前还需要一个txt文件,里面是要合并的视频文件列表(按要合并的顺序排列)。
文件内容的格式为 file ‘文件名称’ 看图

image.png

然后在 cmd 窗口进入视频所在的目录,输入下列命令即可合并视频(两分钟左右就好了)
ffmpeg -f concat -i 1.txt -c copy output.mp4
1.txt 即是之前存要合并的视频文件列表的 txt 文件
output.mp4 是要输出的文件名


image.png
image.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。