FFmpeg 命令行 音视频格式转换

📚:FFmpeg 提供了丰富的命令行选项和功能,可以用来处理音视频文件、流媒体等,掌握命令行的使用,可以有效提高工作效率。

目录

一、视频转换和格式转换

[🔵 将视频文件转换为另一种格式](#🔵 将视频文件转换为另一种格式)

[🔵 指定视频编码器和比特率](#🔵 指定视频编码器和比特率)

二、音频转换和格式转换

[🔵 将音频文件转换为另一种格式](#🔵 将音频文件转换为另一种格式)

[🔵 指定音频编码器和比特率](#🔵 指定音频编码器和比特率)

三、合并视频和音频

[🔵 合并视频和音频流](#🔵 合并视频和音频流)

四、视频剪切和裁剪

[🔵 裁剪视频](#🔵 裁剪视频)

五、视频截图和抽取帧

[🔵 截取视频帧](#🔵 截取视频帧)

[六、 屏幕录制和实时流媒体](#六、 屏幕录制和实时流媒体)

🔵录制桌面

🔵推送实时流媒体

七、常用参数集合

总结


以下是一些常见的 FFmpeg 命令行用法和示例:

bash 复制代码
// 一般的 ffmpeg 命令结构如下:

ffmpeg [全局选项] [输入选项] -i 输入文件 [输出选项] 输出文件

一、视频转换和格式转换

🔵 将视频文件转换为另一种格式

bash 复制代码
// 将 input.mp4 文件转换为 output.avi 文件

ffmpeg -i input.mp4 output.avi

🔵 指定视频编码器和比特率

bash 复制代码
// -c:v libx264 指定视频编码器为 H.264,
// -b:v 1000k 指定视频比特率为 1000kbit/s

ffmpeg -i input.mp4 -c:v libx264 -b:v 1000k output.mp4

二、音频转换和格式转换

🔵 将音频文件转换为另一种格式

bash 复制代码
// 将 input.wav 转换为 output.mp3

ffmpeg -i input.wav output.mp3

🔵 指定音频编码器和比特率

bash 复制代码
// -c:a libmp3lame 指定音频编码器为 MP3(LAME)
// -b:a 128k 指定音频比特率为 128kbit/s

ffmpeg -i input.wav -c:a libmp3lame -b:a 128k output.mp3

三、合并视频和音频

🔵 合并视频和音频流

bash 复制代码
// -i video.mp4 -i audio.wav 分别指定视频和音频输入文件。
// -c:v copy 表示视频流直接复制,
// -c:a aac 指定音频编码为 AAC。
// -strict experimental 是为了支持某些 AAC 编码器


ffmpeg -i video.mp4 -i audio.wav -c:v copy -c:a aac -strict experimental output.mp4

四、视频剪切和裁剪

🔵 裁剪视频

bash 复制代码
// 从原视频中裁剪出5s的视频
// -ss 00:00:05 指定开始裁剪的时间(这里是 5s),
// -to 00:00:10 指定结束时间(这里是 10s)。
// -c:v copy 和 -c:a copy 表示视频和音频流不重新编码,直接复制


ffmpeg -i input.mp4 -ss 00:01:00 -to 00:02:00 -c:v copy -c:a copy output.mp4

五、视频截图和抽取帧

🔵 截取视频帧

bash 复制代码
// -vf "select='eq(n\,100)'" 表示选择第 100 帧作为输出。
// -vsync vfr 设置为可变帧率输出。
// 输出文件是 frame.png。

ffmpeg -i input.mp4 -vf "select='eq(n\,100)'" -vsync vfr frame.png

六、 屏幕录制和实时流媒体

🔵录制桌面

bash 复制代码
// 在linux 系统下进行屏幕录制
// -f x11grab 表示使用 X11 桌面录制,
// -framerate 30 设置帧率为 30fps,
// -video_size 1920x1080 设置视频尺寸,
// -i :0.0+0,0 是屏幕位置参数。

ffmpeg -f x11grab -framerate 30 -video_size 1920x1080 -i :0.0+0,0 output.mp4



// 在 Windows 系统上进行屏幕录制
// -f gdigrab:使用 gdigrab 输入设备,这是在 Windows 上进行屏幕捕获的一种方法。
// -framerate 30:指定录制的帧率,可以根据需要进行调整。
// -video_size 1920x1080:指定录制的视频尺寸,这里设置为1920x1080,你也可以根据需要调整。
// -i desktop:指定捕获整个桌面。你也可以指定具体的窗口标题或坐标区域进行捕获。
// 停止 ctrl + c

ffmpeg -f gdigrab -framerate 30 -video_size 1920x1080 -i desktop output.mp4

🔵推送实时流媒体

bash 复制代码
// -re 表示以实时速率读取输入,
// -i input.mp4 指定输入文件。
// -c:v libx264 和 -c:a aac 分别指定视频和音频编码器。
// rtmp://server/live/streamKey 是推流到的服务器地址和流名

ffmpeg -re -i input.mp4 -c:v libx264 -preset fast -maxrate 3000k -bufsize 6000k -pix_fmt yuv420p -g 50 -c:a aac -b:a 128k -f flv rtmp://server/live/streamKey

七、常用参数集合

bash 复制代码
// 输入和输出选项:

-i 输入文件:指定输入文件。
-f 格式:指定输入或输出的格式,例如 -f mp4。
-r 帧率:设置帧率,例如 -r 30。
-s 分辨率:设置视频分辨率,例如 -s 1920x1080。


// 视频处理

-c:v 编解码器:指定视频编解码器,如 -c:v libx264。
-b:v 比特率:设置视频比特率,例如 -b:v 2M。
-vf 滤镜:应用视频滤镜,例如 -vf scale=1280:720(调整分辨率)或 -vf crop=w:h:x:y(裁剪)。

// 音频处理

-c:a 编解码器:指定音频编解码器,如 -c:a aac。
-b:a 比特率:设置音频比特率,例如 -b:a 192k。
-ar 采样率:设置音频采样率,如 -ar 44100。


// 其他常用选项

-ss 开始时间:从指定时间开始处理输入文件。
-t 持续时间:设置处理的持续时间。
-map 选项:映射输入流。
-preset 设置:调整编码速度和质量之间的平衡。

总结

这些是常见的 ffmpeg 命令行选项和功能,能够涵盖大多数基本的视频和音频处理需求。根据具体的任务和需求,可以灵活组合这些选项来完成各种复杂的视频处理任务。

相关推荐
wypywyp2 分钟前
8. ubuntu 虚拟机 linux 服务器 TCP/IP 概念辨析
linux·服务器·ubuntu
Doro再努力17 分钟前
【Linux操作系统10】Makefile深度解析:从依赖推导到有效编译
android·linux·运维·服务器·编辑器·vim
senijusene22 分钟前
Linux软件编程:IO编程,标准IO(1)
linux·运维·服务器
忧郁的橙子.29 分钟前
02-本地部署Ollama、Python
linux·运维·服务器
醇氧38 分钟前
【linux】查看发行版信息
linux·运维·服务器
No8g攻城狮1 小时前
【Linux】Windows11 安装 WSL2 并运行 Ubuntu 22.04 详细操作步骤
linux·运维·ubuntu
XiaoFan0122 小时前
免密批量抓取日志并集中输出
java·linux·服务器
souyuanzhanvip2 小时前
ServerBox v1.0.1316 跨平台 Linux 服务器管理工具
linux·运维·服务器
sweetone2 小时前
LINN莲CLASSIK桌面音响微修
经验分享·音视频
HalvmånEver3 小时前
Linux:线程互斥
java·linux·运维