FFmpeg视频合并、转码、提取、压缩等
at 2024.09.02 23:25 ca Linux pv 152 by 李佳林
FFmpeg全名是Fast Forward MPEG(Moving Picture Experts Group),为开源的影音多媒体处理框架,Ffmpeg功能强大无比,可以进行影音的解码、编码、编码转换、混合、抽取、串流和滤镜,无论影音格式是从哪个地方出来的,从过去到现在的影音格式它几乎都能够支持。
ffmpeg下载【 Linking 中 Static、Shared、Dev区别】
①Static里面只有3个应用程序:ffmpeg.exe,ffplay.exe,ffprobe.exe,每个exe的体积都很大,相关的Dll已经被编译到exe里面去了。
②Shared里面除了3个应用程序之外,还有一些Dll,比如说avcodec-54.dll之类的。Shared里面的exe体积很小,他们在运行的时候,到相应的Dll中调用功能。
③Dev版本是用于开发的,里面包含了库文件xxx.lib以及头文xxx.h,这个版本不包含exe文件
ffmpeg安装
下载完成后直接进行解压,然后配置环境变量就OK了,非常方便。
打开命令提示符窗口。输入命令“ffmpeg –version”。如果命令提示窗口返回FFmpeg的版本信息,那么就说明安装成功了。
命令行语法:
ffmpeg [全局参数] [输入文件参数] -i [输入文件] [输出文件参数] [输出文件]
注意:每个部分之间都有英文空格。
1、使用ffmpeg将mkv软字幕转换为mp4
转换为mp4格式 使用以下命令将mkv文件转换为mp4格式,并嵌入软字幕:
ffmpeg -i input.mkv -c:v copy -c:a copy -c:s mov_text output.mp4
其中,input.mkv为输入文件名,output.mp4为输出文件名。
或者
ffmpeg -i input.mkv -c:v copy -c:a copy -c:s mov_text output.mp4
其中,-c:v copy 表示视频流直接复制
-c:a copy 表示音频流直接复制
-c:s mov_text 表示字幕流以mov_text格式封装
2、将mkv软字幕烧录成硬字幕
烧录为硬字幕 使用以下命令将mkv软字幕烧录为mp4硬字幕:
ffmpeg -i input.mkv -vf subtitles=input.mkv output.mp4
其中,-vf subtitles=input.mkv 表示使用input.mkv中的字幕流作为硬字幕
3、将mov转换成mp4
ffmpeg -i input.mov -c:v copy -c:a copy output.mp4
其中,-c:v copy 表示视频流直接复制
-c:a copy 表示音频流直接复制
4、视频码率转换
ffmpeg -i input.mp4 -b:v 64k -bufsize 64k output.mp4
其中,-b:v清晰度参数,可以控制视频的码率,码率越高,视频的清晰度也就越高。使用此参数要注意,设置过高会增加视频的文件大小以及视频的传输成本,设置过低则视频会出现模糊、马赛克等现象。-bufsize size 为设置码率控制缓冲区大小。
5、视频压缩(音频压缩/视频压缩)
ffmpeg -i input.mp3 -ab 128 output.mp3
ffmpeg -i input.mp4 -c:v libx264 -crf 20 -c:a aac -b:a 192k output.mp4
其中,-i input.mp4 表示输入文件是 MP4 格式的视频。
-c:v libx264 指定使用 H.264 编码来压缩视频。
-crf 20 是CRF (Constant Rate Factor) 的值,范围从 0 到 51,其中 0 是无损压缩,23 是默认设置,18-28 是推荐范围,高 CRF 值会产生更高的压缩比。
-c:a aac 指定使用 AAC 编码来压缩音频。
-b:a 192k 设置音频比特率为 192k。
output.mp4 是压缩后输出的文件名。
6、视频录制
录制视频保存在本地磁盘
ffmpeg -f avfoundation -i "1" -vcodec libx264 -preset ultrafast -f h264 -r 30 ~/Downloads/test.h264
录制桌面
ffmpeg -f avfoundation -i "1" -vcodec libx264 -preset ultrafast -acodec libfaac -f flv rtmp://localhost:1935/rtmplive/room
录制桌面和麦克风
ffmpeg -f avfoundation -i "1:0" -vcodec libx264 -preset ultrafast -acodec libmp3lame -ar 44100 -ac 1 -f flv rtmp://localhost:1935/live/room
录制桌面和麦克风,并打开摄像头拍摄
ffmpeg -f avfoundation -framerate 30 -i "1:0" \-f avfoundation -framerate 30 -video_size 640x480 -i "0" \-c:v libx264 -preset ultrafast \-filter_complex 'overlay=main_w-overlay_w-10:main_h-overlay_h-10' -acodec libmp3lame -ar 44100 -ac 1 -f flv rtmp://localhost:2016/rtmplive/room
7、视频片段截取
ffmpeg -ss 00:00:02 -i input.mp4 -t 6.5 -c copy cut.mp4
ffmpeg -ss 00:00:02 -i input.mp4 -to 00:00:10 -c copy cut.mp4
其中,-c copy表示是拷贝的方法
8、视频截图
ffmpeg -ss 00:00:05 -i input.mp4 -vframes 1 -q:v 5 -f image2 pic-%03d.jpeg
其中,-ss 00:00:05 从第五秒开始
-vframes 1 只截取1帧
-q:v 5 图片质量1-5
9、提取视频中的纯视频或纯音频
ffmpeg -i input.mp4 -an output.mp4
其中,input.mp4为输入文件名,output.mp4为输出文件名。
ffmpeg -i input.mp4 -vn output.mp3
其中,input.mp4为输入文件名,output.mp4为输出文件名。
10、视频比例转换
ffmpeg -i input.mp4 -aspect 21:9 output.mp4
将原视频转换成21比9,生成新视频
11、视频容器转换
ffmpeg -i input.mp4 output.avi
将mp4转换为avi
12、分辨率转换
ffmpeg -i input.mp4 -vf scale=480:-1 output.mp4
将原视频转换成480p视频文件
13、获取视频信息
ffmpeg -i input.mp4
14、帧率转换
ffmpeg -i input.mp4 -r 24 output.mp4
将原视频转换为24帧视频
15、视频倍速
视频5倍速播放指令示例
ffmpeg -i input "setpts=PTS/5" output.mp4
音频2倍速播放指令示例
fmpeg -i input.mp4 -filter:a "atempo=2.0" output.mp4
音视频同时2倍速指令示例
ffmpeg -i input.mp4 -filter_complex "[0:v]setpts=0.5*PTS[v];[0:a]atempo=2.0[a]" -map "[v]" -map "[a]" -vn output.mp4
16、修改视频的帧率和分辨率
ffmpeg.exe -r 60 -i input.mp4 -s 1920x1080 -crf 12 output.mp4
将文件input.mp4转成一个帧率60分辨率1080p的视频,这里要指定crf,否则画质质量可能很差,此命令会改变视频的时间长度。
ffmpeg.exe -i video.mp4 -s 1920x1080 -r 24 -crf 12 output.mp4
如果把 -r 放后面,不会改变视频时间长度,如上指令,把60帧的改为24帧。
其中,-crf表示压缩质量相关参数,越小画质越好,但文件越大。
总结:
1、支持视频编码h264 / h265 / NVENC / QuickSync / ProRes。
2、支持音频编码MP3 / AAC / AC3 / FLAC / WAV。
3、可以批量处理多文件,批量编码成千上万个媒体文件。
4、完成媒体文件编码之后支持自动关闭,并运行后续脚本。
5、支持用户自定义设置媒体编码的优先级。
6、拖放,流映射和复用,可以批量下载M3U8网址。
8、支持FFmpeg A / V编码向导,让您轻松使用。
9、筛选档案,修剪和串联文件。