FFmpeg命令视频音频转码参数详解【汇总】
前言全局说明
FFmpeg命令转码参数详解
官网:https://ffmpeg.org/
官网下载:https://ffmpeg.org/download.html
官网下载源码:https://www.ffmpeg.org/releases/
镜像一:https://github.com/GyanD/codexffmpeg/releases
镜像二:https://www.gyan.dev/ffmpeg/builds/packages/
一、参数
1.1 FFmpeg 常用参数
| 参数 | 说明 | 备注 |
|---|---|---|
| -i filename | 指定输入文件(或直接写文件名,用| 竖线分割),在Linux下当然也能指定:0.0(屏幕录制)或摄像头。 | |
| -c:a | 指定音频编码器 copy、mp3(libmp3lame)、aac、 | 全称: codec of audio ; copy是直接拷贝视频中的原始的音频,不涉及音频的编解码,复制速度会很快。 示例:-c:a aac 指定音频编码器; |
| -c:v | 指定视频编码器 copy、libx265 | -c:v copy 复制 |
| -crf | 指定视频质量,范围为0-51,0为无损,23为默认值,数值越小,质量越高,文件越大 | |
| -f fmt | 设定输出格式(音频或者视频格式)。 | |
| -y | 覆盖已有文件。 | |
| -t duration | 指定时长。 | |
| -fs limit_size | 设置文件大小的上限。 | |
| -ss time_off | 从指定的时间(单位为秒)开始,也支持[-]hh:mm:ss[.xxx]的格式。 | |
| -re | 代表按照帧率发送,尤其在作为推流工具的时候一定要加入该参数,否则ffmpeg会按照最高速率向流媒体服务器不停地发送数据。 | |
| -map | 指定输出文件的流映射关系。如果没有-map选项,则ffmpeg采用默认的映射关系。 例如:“-map 1:0-map 1:1”要求将第二个输入文件的第一个流和第二个流写入输出文件。 |
|
1.2 FFmpeg 视频、图像参数
| 参数 | 说明 | 备注 |
|---|---|---|
| -bitexact | 使用标准比特率。 | |
| -vb | 指定视频比特率(bits/s) | |
| -r rate | 帧速率(fps) | |
| -vframes | 设置要输出的视频帧数 | |
| -b:v | 设定视频码率 | 64k |
| -bufsize | 缓存区大小 | -bufsize 6000K 或 -bufsize 64k |
| -s | 设定画面的宽与高 | |
| -vn | 去除视频流 | |
| -aspect aspect | 设置横纵比 4:3 16:9 或 1.3333 1.7777 | |
| -vcodec [none|copy|libx265 ...] | 指定视频编解码器。copy表示原始编解码数据必须被拷贝; libx265表示使用libx265编码器 | v是视频video,codec是解码器,后跟解码器名称 |
| -vf | 视频过滤器 | |
| qp | 量化比例为0~51。qp越大,压缩越厉害,失真越严重,失去的信息越多,画面也就越模糊。 | |
| -hwaccels | 查询系统支持的硬件加速器(用显卡处理视频) | |
| -codecs | 查询支持的编解码器 | |
| -maxrate | 每帧的最高(最大)码率 | -maxrate 5000K |
1.3 FFmpeg 音频参数
| 参数 | 说明 | 备注 |
|---|---|---|
| -acodec [none|copy|mp3|aac ...] | 设定声音编解码器,如果用copy表示原始编解码数据必须被拷贝。 | a指的是audio,codec指的是解码器,-acodec就是指定音频解码器 |
| -aframes | 设置要输出的音频帧数 | |
| -b:a | 指定音频比特率 | -b:a 128k 指定128kb/s码率;-b:a 192k平均比特率为192kbps |
| -ar | 设定采样率 | -ar 44k 指定音频的采样频率为44kHz |
| -ac | 设定声音的Channel数 | |
| -an | 去除音频流 | 即 -acodec none。合起来就是不指定音频解码器 |
| -af | 音频过滤器 | |
1.4 FFmpeg其他参数
| 参数 | 说明 | 备注 |
|---|---|---|
| -safe 0 | 防止Operation not permitted | |
| -allowed_extensions ALL | ||
| -protocol_whitelist "file,http,crypto,tcp" | ||
| -strict experimental | ||
| -preset | 指定编码速度和质量的平衡,可选项有ultrafast、superfast、veryfast、faster、fast、medium、slow、slower、veryslow | |
| -sn | 去除字幕流 | |
| -dn | 去除数据流 | |
| -decoders | 查询系统支持的编码格式 | ffmpeg -decoders |
| -encoders | 查询系统支持的解码格式 | ffmpeg -encoders |
| ffmpeg -h encoder=mp3 | 查询编码器 mp3 格式的详细信息 | |
| ffmpeg -h decoder=h264_qsv | 查询解码器 h264_qsv 格式的详细信息 | |
二、多个文件时 -i 用法
2.1 多个视频文件写入到 txt 文本里
ffmpeg.exe -f concat -safe 0 -i file.txt -c copy out.mp4
2.2 多个视频文件用 | 分割
ffmpeg -i "concat:34020000001310000701_live-16.ts|34020000001310000701_live-17.ts|" -c copy output.mp4
三、ffmpeg处理合并AES-128加密的ts文件
1、下载好的m3u8文件,放到同一个文件夹里,它应该包括三个部分:
a、文件夹,里面有很多的ts文件。
b、一个m3u8文件
c、一个key文件,命名为"key.key"。完好的key文件是16字节。
接下来把m3u8文件和key文件复制到ts文件夹里。
2、m3u8如下图所示,需要将URI改为“key.key”,然后将分段视频ts命名改为与文件夹中视频命名一致

3、使用ffmpeg命令:将文件合并为output.mp4
ffmpeg -allowed_extensions ALL -protocol_whitelist "file,http,crypto,tcp" -i index.m3u8 -c copy output.mp4
四、
免责声明:本号所涉及内容仅供安全研究与教学使用,如出现其他风险,后果自负。
参考、来源:
http://www.manongjc.com/detail/23-xyrsjrgxjrqcmxi.html
https://www.bilibili.com/read/cv28266664/ 作者:人生是一场苦修 出处:bilibili
https://www.cnblogs.com/yiduobaozhiblog1/p/16252450.html
https://blog.csdn.net/fanyun_01/article/details/103299866
https://blog.csdn.net/huayizaisheng/article/details/118545623
https://blog.csdn.net/weixin_45736829/article/details/108427922
https://ffmpeg.org/ffmpeg-codecs.html
https://www.bookstack.cn/read/other-doc-cn-ffmpeg/ffmpeg-doc-cn-02.md
https://www.jianshu.com/p/0ae602d641b6
https://www.cnblogs.com/wwolf/p/ffmpeg-stream-selection-video-to-audio.html (-an 参数说明)
https://www.cnblogs.com/wwolf/p/15004964.html (多路音频流 -map使用)
https://blog.csdn.net/xindoo/article/details/121482547 (-ar -b:a 参数 )
http://www.manks.top/ffmpeg-install-static.html (静态库下载安装ffmpeg)
https://zhuanlan.zhihu.com/p/631378581 (-hwaccels 硬件加速)
浙公网安备 33010602011771号