ffmpeg常用命令

ffmpeg主要参数

主要参数:
◼-i设定输入流
◼-f 设定输出格式(format)
◼-ss 开始时间
◼-t 时间长度

视频参数:
◼-vframes 设置要输出的视频帧数
◼-b 设定视频码率
◼-b:v 视频码率
◼-r 设定帧速率
◼-s 设定画面的宽与高
◼-vn不处理视频
◼-aspect aspect 设置横纵比4:3 
16:9 或 1.3333 1.7777
◼-vcodec 设定视频编解码器,如果用copy表示原始编解码数据必须被拷贝。
◼-vf视频过滤器

音频参数:
◼-aframes 设置要输出的音频帧数
◼-b:a 音频码率
◼-ar设定采样率
◼-ac 设定声音的Channel数
◼-acodec 设定声音编解码器,如果用copy表示原始编解码数据必须被拷贝。
◼-an 不处理音频
◼-af 音频过滤器

ffmpeg从容器到帧

解复用

cpp 复制代码
#解复用视频流
保留编码格式:
ffmpeg -i input.mp4 -c:v copy -an output_video.mp4
强制格式:
ffmpeg -i test.mp4 -vcodec libx264 -an test.h264

#解复用音频流
ffmpeg -i input.mp4 -c:a copy -vn output_audio.aac

#解复用特定流
    #-map 0:a:1:选择输入文件中的第二个音频流(索引从 0 开始)
ffmpeg -i input.mp4 -map 0:a:1 -c:a copy -vn output_audio2.aac
#解复用字幕流
    #-map 0:s:0:选择输入文件中的第一个字幕流。
ffmpeg -i input.mkv -map 0:s:0 -c:s copy output_subtitle.srt

解码

cpp 复制代码
#提取3秒数据,分辨率和源视频一致
    #-c:v rawvideo:指定视频编码器为原始视频(YUV)。
    #-pix_fmt yuv420p:指定像素格式为 YUV 4:2:0(常用格式)
ffmpeg-i test_1280x720.mp4 -t 3 -c:v rawvideo -pix_fmt yuv420p yuv420p_orig.yuv

#RGB和YUV之间的转换 
ffmpeg -s 320x240 -pix_fmt yuv420p-i yuv420p_320x240.yuv -pix_fmt rgb24
 rgb24_320x240_2.rgb

#提取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

编码

cpp 复制代码
#视频编码为 H.264
ffmpeg -i input.mp4 -c:v libx264 -preset fast -crf 23 output_h264.mp4
    #-c:v libx264:指定使用 H.264 编解码器。
    #-preset fast:设置编码速度与压缩效率的平衡,fast 是一个较快的编码选项。
    #-crf 23:恒定速率因子,控制视频质量,值越低质量越高(范围通常为 18 到 28)。

#音频编码为 AAC 格式
    #-c:a aac:指定使用 AAC 编解码器。
    #-b:a 192k:设置音频比特率为 192 kbps。
ffmpeg -i input.mp4 -c:a aac -b:a 192k output_audio.aac

#同时编码音频和视频
ffmpeg -i input.mp4 -c:v libx264 -preset fast -crf 23 -c:a aac -b:a 192k output_combined.mp4

#编码为不同的容器格式
ffmpeg -i input.mp4 -c:v libx264 -c:a aac output.mkv

#转换视频格式
ffmpeg -i input.avi -c:v libx264 -c:a aac output.mp4

复用

cpp 复制代码
#复用音频和视频流
ffmpeg -i video.mp4 -i audio.aac -c:v copy -c:a copy output.mp4

#复用多个音频流和视频流
ffmpeg -i video.mp4 -i audio1.aac -i audio2.aac 
-map 0:v -map 1:a -map 2:a 
-c:v copy -c:a copy output.mp4

其余常用命令示例

1. 基本格式转换

将视频从一种格式转换为另一种格式:

cpp 复制代码
ffmpeg -i input.mp4 output.avi

2. 提取音频

从视频中提取音频:

cpp 复制代码
ffmpeg -i input.mp4 -q:a 0 -map a output.mp3

3. 裁剪视频

裁剪视频的某一段:

cpp 复制代码
# -ss 指定开始时间 -to 指定结束时间
ffmpeg -i input.mp4 -ss 00:01:00 -to 00:02:00 -c copy output.mp4

4. 调整视频分辨率

调整视频的分辨率:

cpp 复制代码
ffmpeg -i input.mp4 -vf scale=1280:720 output.mp4

5. 压缩视频

压缩视频以减小文件大小:

cpp 复制代码
#-crf 控制视频质量,数值越小质量越高(通常 18-28 是合理范围)
ffmpeg -i input.mp4 -vf scale=1280:720 -preset slow -crf 23 output.mp4

6. 添加水印

在视频上添加水印:

cpp 复制代码
ffmpeg -i input.mp4 -i watermark.png 
-filter_complex "overlay=10:10" output.mp4

7. 合并视频和音频

将视频和音频合并:

cpp 复制代码
#-strict experimental:用于启用实验性特性。AAC 编码可能被视为实验性功能
ffmpeg -i video.mp4 -i audio.mp3 
-c:v copy -c:a aac 
-strict experimental output.mp4

8. 提取视频帧

从视频中提取某一帧:

cpp 复制代码
ffmpeg -i input.mp4 -ss 00:00:05 -vframes 1 output.jpg

9. 创建 GIF

将视频转换为 GIF:

cpp 复制代码
ffmpeg -i input.mp4 -vf "fps=10,scale=320:-1" output.gif

10. 流媒体处理

将视频推流到 RTMP 服务器:

cpp 复制代码
#-preset 编码速度 -maxrate最大比特率  -bufsize控制编码器的比特率平滑性
ffmpeg -re -i input.mp4 -c:v libx264 
-preset veryfast -maxrate 1000k -bufsize 2000k 
-c:a aac -f flv rtmp://server/live/streamkey

11. 多路流处理

将多个视频流合并为一个:

cpp 复制代码
ffmpeg -i input1.mp4 -i input2.mp4 
-filter_complex "[0:v][1:v]hstack=inputs=2[v]" 
-map "[v]" -map 0:a output.mp4

12. 字幕处理

将字幕嵌入视频:

cpp 复制代码
ffmpeg -i input.mp4 -i subtitles.srt 
-c:v copy -c:a copy -c:s mov_text output.mp4

13. 视频加速/减速

调整视频播放速度:

cpp 复制代码
#setpts=0.5*PTS 使视频加速 2 倍,atempo=2.0 使音频加速 2 倍。
ffmpeg -i input.mp4 -vf "setpts=0.5*PTS" -af "atempo=2.0" output.mp4

14. 视频旋转

旋转视频:

cpp 复制代码
#transpose=1 表示顺时针旋转 90 度
ffmpeg -i input.mp4 -vf "transpose=1" output.mp4

15. 批量处理

批量转换文件夹中的所有视频:

cpp 复制代码
for f in *.mp4; 
do 
    ffmpeg -i "$f" -c:v libx264 -c:a aac "${f%.mp4}_converted.mp4"; 
done

16. 定时视频截图

每隔一段时间截取一张图片:

cpp 复制代码
ffmpeg -i input.mp4 -vf "fps=1/60" -q:v 2 output_%03d.jpg

17. 视频拼接

将多个视频文件拼接成一个:

cpp 复制代码
ffmpeg -f concat -safe 0 -i filelist.txt -c copy output.mp4
  • filelist.txt 内容示例:
复制代码
file 'input1.mp4'
file 'input2.mp4'

18. 音频处理

调整音频音量:

cpp 复制代码
ffmpeg -i input.mp3 -af "volume=2.0" output.mp3

19. 视频降噪

使用降噪滤镜处理视频:

cpp 复制代码
ffmpeg -i input.mp4 -vf "hqdn3d" output.mp4

20. 视频倒放

将视频倒放:

cpp 复制代码
ffmpeg -i input.mp4 -vf reverse -af areverse output.mp4

学习资料分享

0voice · GitHub

相关推荐
黄金右肾8 小时前
Qt之FFmpeg播放器设计(十七)
qt·ffmpeg·播放器
潇湘秦8 小时前
Oracle DG备库数据文件损坏修复方法(ORA-01578/ORA-01110)
数据库·oracle·ffmpeg
学习嵌入式的小羊~10 小时前
ffmpeg八大开发库
ffmpeg
木觞清2 天前
如何使用 Python 和 FFmpeg 下载 B站视频
python·ffmpeg·音视频
浪浪山小白兔3 天前
使用 Python结合ffmpeg 实现单线程和多线程推流
python·opencv·ffmpeg
MediaTea4 天前
Ae:项目设置 - 音频
ffmpeg·音视频
编码小哥4 天前
FFmpeg(音视频处理的瑞士军刀)开发实战指南
ffmpeg·音视频
cuijiecheng20184 天前
音视频入门基础:MPEG2-PS专题(4)——FFmpeg源码中,判断某文件是否为PS文件的实现
ffmpeg·音视频
GarryLau4 天前
ffmpeg指令
ffmpeg