1 FFmpeg常用命令行
1.1 FFmpeg命令行参数
通用参数
参数 | 功能 |
---|---|
-i | 输入 |
-f | 设置输出格式,如mp4、avi、mkv等 |
-ss | 开始时间 |
-t | 时长,秒为单位,-t 60 |
-y | 覆盖 |
视频参数
参数 | 功能 |
---|---|
-vframes | 设置输出视频帧数 |
-b | 设置视频码率,-b 400k,视频内音频也同时重新编码 |
-b:v | 设置视频码率,-b:v 400k 只对视频编码,音频不变 |
-r | 设置帧速率 |
-s | 设置画面的宽高,-s 1280x920 |
-vn | 不处理视频 |
-aspect | 设置横纵比,4:3,16:9,或1.3333,1.7777 |
-vcodec | 设置视频编解码器,libx264,如果设置copy表示原始编码数据必须被拷贝 |
-vf | 视频过滤器 |
音频参数
参数 | 功能 |
---|---|
-aframes | 设置输出音频帧数 |
-b:a | 设置音频码率 |
-ar | 设置采样率,单位:Hz,取值:0 ~ INT_MAX,默认值:0 |
-ac | 设置音频的通道数,取值:0 ~ INT_MAX,默认值:0 |
-acodec | 设置音频编解码器,libmp3lame,如果设置为copy,表示原始编解码数据必须被拷贝 |
-an | 不处理音频 |
-af | 音频过滤器 |
1.2 常用命令行
录制视频
保留编码格式
ffmpeg -y -i rtsp://xxx@xxx.xxx.xxx.xxx -vcodec copy -t 20 -f mp4 test.mp4
提取视频
保留编码格式
ffmpeg -i test.mp4 -vcodec copy -an test_copy.h264
强制转换编码格式
ffmpeg -i test.mp4 -vcodec libx264 -an test.h264
提取YUV
提取3秒数据,分辨率和源视频一致
ffmpeg -i test_1280x720.mp4 -t 3 -pix_fmt yuv420p yuv420p_orig.yuv
提取3秒数据,分辨率转为320x240
ffmpeg -i test_1280x720.mp4 -t 3 -pix_fmt yuv420p -s 320x240 yuv420p_320x240.yuv
提取RGB
提取3秒数据,分辨率为320x240
ffmpeg -i test.mp4 -t 3 -pix_fmt rgb24 -s 320x240 rgb24_320x240.rgb
RGB和YUV之间的转换
ffmpeg -s 320x240 -pix_fmt yuv420p -i yuv420p_320x240.yuv -pix_fmt rgb24 rgb24_320x240_2.rgb
修改视频编码格式
将视频转成视频编码格式h265
,音频编码格式转成mp3
ffmpeg -i test.mp4 -vcodec libx265 -acodec libmp3lame out_h265_mp3.mkv
修改视频帧率
ffmpeg -i test.mp4 -r 15 output2.mp4
修改视频码率
ffmpeg -i test.mp4 -b 400k output_b.mkv #(此时音频也被重新编码)
ffmpeg -i test.mp4 -b:v 400k output_bv.mkv #(此时仅视频被重新编码)
修改视频分辨率
ffmpeg -i test.mp4 -s 480x270 output_480x270.mp4
按时长裁剪视频
从00:05:00
开始裁剪10
秒
ffmpeg -i test.mp4 -ss 00:05:00 -t 10 -codec copy 1.mp4
视频格式转换
mp4
转成ts
ffmpeg -i 1.mp4 -codec copy -vbsf h264_mp4toannexb 1.ts
mp4
转成flv
ffmpeg -i 1.mp4 -codec copy 1.flv
视频拼接
拼接mp4
格式(mp4list.txt保存视频名称列表)
ffmpeg -f concat -i mp4list.txt -codec copy out_mp42.mp4
拼接ts
格式
#方法1
ffmpeg -i "concat:1.ts|2.ts|3.ts" -codec copy out_ts.mp4
#方法2
ffmpeg -f concat -i tslist.txt -codec copy out_ts2.mp4
tslist.txt
中存贮1.ts
,2.ts
,3.ts
文件名
拼接flv
格式
ffmpeg -f concat -i flvlist.txt -codec copy out_flv2.mp4
注意事项:
- 把每个视频封装格式也统一为ts,拼接输出的时候再输出你需要的封装格式,比如MP4
- 视频分辨率可以不同,但是编码格式需要统一
- 音频编码格式需要统一,音频参数(采样率/声道等)也需要统一
视频截图
输入test.mp4
格式时image2
从00:00:02
开始,截取一张640x360
大小的jpg
图
ffmpeg -i test.mp4 -y -f image2 -ss 00:00:02 -vframes 1 -s 640x360 test.jpg
视频抽帧
每秒15帧,每帧都提取,提取5秒时长,输出分辨率640x360
的jpg图片
ffmpeg -i test.mp4 -t 5 -s 640x360 -r 15 frame%03d.jpg
图片合成视频
将所有符合这个格式的jpg图片合成帧速率25fps的mp4视频
ffmpeg -f image2 -i frame%03d.jpg -r 25 video.mp4
视频转成Gif
ffmpeg -i test.mp4 -t 5 -r 25 -s 640x360 image.gif
Gif转成视频
ffmpeg -f gif -i image.gif image.mp4
从视频中提取音频
保留原编码格式
ffmpeg -i test.mp4 -acodec copy -vn test.aac
强转编码格式
ffmpeg -i test.mp4 -acodec libmp3lame -vn test.mp3
提取PCM
ffmpeg -i buweishui.mp3 -ar 48000 -ac 2 -f s16le 48000_2_s16le.pcm
ffmpeg -i buweishui.mp3 -ar 48000 -ac 2 -sample_fmt s16 out_s16.wav
ffmpeg -i buweishui.mp3 -ar 48000 -ac 2 -codec:a pcm_s16le out2_s16le.wav
ffmpeg -i buweishui.mp3 -ar 48000 -ac 2 -f f32le 48000_2_f32le.pcm
ffmpeg -i test.mp4 -t 10 -vn -ar 48000 -ac 2 -f f32le 48000_2_f32le_2.pcm
修改音频采样率
ffmpeg -i test.mp4 -ar 44100 output_44100hz.mp4
本文作者:StubbornHuang
版权声明:本文为站长原创文章,如果转载请注明原文链接!
原文标题:FFmpeg – 命令行参数与常用命令行
原文链接:https://www.stubbornhuang.com/2414/
发布于:2022年11月16日 17:49:27
修改于:2023年06月21日 17:51:54
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。
评论
52