FFmpeg常用的命令
1、在下载视频时添加Headers
通过
-headers
参数可以在下载视频时添加Headers,header之间用
\r\n分隔。例如:ffmpeg -headers "Referer: https://video.com/\r\nHost: video.com\r\n" -i https://video.com/1.mp4 -c copy 1.mp4
如果视频格式是m3u8,则headers只对m3u8文件有效,对切片的ts文件无效。
2、下载本地m3u8文件
当m3u8为本地文件时,通过
-protocol_whitelist
参数添加协议的白名单,可以正常下载视频。例如:ffmpeg -protocol_whitelist "file,http,https,tcp,tls" -i c:\video\1.m3u8 -c copy 1.mp4
3、视频裁剪
通过
-ss
和
-t
参数来裁剪视频。例如:ffmpeg -ss 00:00:10 -t 00:00:10 -accurate_seek -i 1.mp4 --avoid_negative_ts 1 1_cut.mp4
命令的具体功能可以在
FFmpeg Documentation找到。
对于视频时长的计算可以使用这段代码:
type Time = [number, number, number]; /** * 计算时间差 * @param { Time } startTime: 开始时间 * @param { Time } endTime : 结束时间 * @return { Time } */ function computingTime(startTime: Time, endTime: Time): Time { const startS: number = (startTime[0] * 3600) + (startTime[1] * 60) + startTime[2]; // 开始时间转换到秒 const endS: number = (endTime[0] * 3600) + (endTime[1] * 60) + endTime[2]; // 结束时间转换到秒 const cha: number = endS - startS; // 计算时间差 const h: number = Number(`${ cha / 3600 }`.match(/\d+/g)![0]); // 时取整数 const hp: number = cha % 3600; // 时取余 const m: number = Number(`${ hp / 60 }`.match(/\d+/g)![0]); // 分取整数 const s: number = hp % 60; // 分取余 => 秒 return [h, m, s]; }
4、视频合并
首先创建一个txt文件,写入要合并的文件。
file '1.mp4' file '2.mp4' file '3.mp4'
然后执行命令:
ffmpeg -f concat -safe 0 -i list.txt -c copy 1.mp4