几个我平常使用FFmpeg
来干的事
一、使用FFmpeg
分割一个大的 mp4 文件为多个小的 mp4 文件
1-1 起因
根据笔者自己日常的使用经验,FAT32
是 Mac 上支持最好的外置存储(U盘)文件格式,然而缺点也很明显,就是一次最大写入文件大小有限(4GB),且没有日志(参考 NTFS 的日志管理系统)。
有时候一部高清电影太大,则需要分割成 2 块甚至 3 块。所以这里就用到了FFmpeg
1-2 使用FFmpeg
命令分割视频方法
从视频开始分割到1200秒(20分钟处)视频命令如下:
ffmpeg -ss 00:00:00 -i input.mp4 -c copy -t 1200 output.mp4
其中:
-ss
: 起始时间
- 注意:
-ss
要放在-i
之前
-
-i
: 要分割的是频文件 -t
: 分割时长:格式如下
- 可以是
-t xx
->xx秒
- 也可以是
-t 01:00:00
->时:分:秒,且不是视频中的时刻,而是要向后截取多长的视频
1-3 举例
若一个视频需要分成 3 段,具体分割位置为视频中的 Start~01:17:55
,01:17:55~02:06:50
,02:06:50~End
则可以:
ffmpeg -ss 00:00:00 -i sample_Input.mp4 -c copy -t 01:17:55 sample_Output-part1.mp4 #Start~01:17:55
ffmpeg -ss 01:17:56 -i sample_Input.mp4 -c copy -t 00:48:57 sample_Output-part2.mp4 #01:17:55~02:06:50
ffmpeg -ss 02:06:55 -i sample_Input.mp4 -c copy -t 01:11:48 sample_Output-part3.mp4 #02:06:50~End
二、使用FFmpeg
拼接多个 flv 视频并提取拼接好的 flv 文件的音频生成 mp3 文件
2-1 起因
下载了一个视频,网站上虽然是一整个,但下载到硬盘中就从一个变成了几个flv文件。现在想要提取一整个文件的音频保存为 mp3。
这种情况还是挺常见的,比如b站音乐区上的一些翻唱投稿,我之前非常迷《千里遥月》,所以就可以使用 FFmpeg 生成 mp3 文件保存到手机上。
2-2 step1 先拼接
推荐将下载到的几个视频“部分”重命名为1.flv
、2.flv
、3.flv
...
然后命令行执行一个shell脚本:
for f in *.flv; do echo "file '$f'" >> mylist.txt; done
注意要调整生成的mylist.txt
文件中各个视频“部分”的顺序不要错了(因为通常会遇到1、10-19、2、20-29、...这样顺序乱了的问题)
使用FFmpeg concat
分离器来拼接视频:
上一步中生成的mylist.txt
应该包含类似如下内容:
file '1.flv'
file '2.flv'
file '3.flv'
然后:
ffmpeg -f concat -i mylist.txt -c copy output.flv
使用
FFmpeg concat
时,如果文件名有奇怪的字符,要在 mylist.txt 中转义。
2-3 step2 执行音频提取
ffmpeg -i output.flv -f mp3 -vn output.mp3
其中:
-
-i
: 表示input,即输入文件 -
-f
: 表示format,即输出格式 -
-vn
: 表示vedio not,即输出不包含视频
三、使用FFmpeg
批量转换 AAC 编码的高分辨率音乐为 WAV 格式
3-1 起因
手里的一堆 m4a 格式的音乐文件居然我的 SONY UX560F 播不了???官网不是明确写了支持的么???
Technical specificationshelpguide.sony.net
3-2 使用 for 循环
忍不了,转成确定能播的 WAV 格式!可是那么多文件,我总不能一个一个转吧?果断批处理!
for i in *.m4a; do ffmpeg -i "$i" "${i%.*}.wav"; done