ffmpeg 初探【基本概念】
ffmpeg 中的工具集:
ffmpeg :超快音视频编码器
ffplay :简单媒体播放器
ffprobe:简单多媒体流分析器
视频知识相关:
媒体:我们能看到的,感知到的,能用来存放信息和传播信息的都可以叫做媒体。
流媒体:流媒体指的是通过”网络”传输的”媒体“,它还是媒体,只不过是在网络中“流动”的媒体,比如视频流、音频流、文字流等。
流媒体技术:包含 "网络传输技术" 和 "音视频处理技术"。
帧率:指1秒钟时间里传输的图片的帧数。
码率:也被成为比特率,指的是每秒显示的图片数进行压缩后的数据量。
像素:图片由像素构成,一个像素是一个正方形或者长方形。没有固定大小,取决于硬件支持显示多少像素,不同显示屏显示的一个像素大小是不同的。但是相同点是:对应的像素点,它们的颜色是相同的。
分辨率:指纵横向上的像素点数,单位是px。
概念
1、容器【视频文件本身其实是一个容器(container),里面包括了视频和音频,也可能有字幕等其他内容。】
2、编码格式【视频和音频都需要经过编码,才能保存成文件。不同的编码格式(CODEC),有不同的压缩率,会导致文件大小和清晰度的差异。】
常见视频编码格式:H264、H265
常见音频编码格式:MP3、ACC
3、编码器【编码器(encoders)是实现某种编码格式的库文件。只有安装了某种格式的编码器,才能实现该格式视频/音频的编码和解码。】
常见视频编码器:
libx264:最流行的开源 H.264 编码器
NVENC:基于 NVIDIA GPU 的 H.264 编码器
libx265:开源的 HEVC 编码器
libvpx:谷歌的 VP8 和 VP9 编码器
libaom:AV1 编码器
常见音频编码器:
libfdk-aac
aac
FFMPEG的使用格式
ffmpeg {1} {2} -i {3} {4} {5}
解释说明:
1、全局参数
2、输入文件参数
3、输入文件
4、输出文件参数
5、输出文件
注意:如果不指明编码格式,FFmpeg 会自己判断输入文件的编码。因此,上面的命令可以简单写成下面的样子。
常用命令行参数
-c:指定编码器
-c copy:直接复制,不经过重新编码(这样比较快)
-c:v:指定视频编码器
-c:a:指定音频编码器
-i:指定输入文件
-an:去除音频流
-vn: 去除视频流
-preset:指定输出的视频质量,会影响文件的生成速度,有以下几个可用的值 ultrafast, superfast, veryfast, faster, fast, medium, slow, slower, veryslow。
-y:不经过确认,输出时直接覆盖同名文件。
常见用法
1、查看文件信息
ffmpeg -i fileName
或者ffmpeg -i fileName -hide_banner 只显示元信息
2、转换编码格式
ffmpeg -i hair.mp4 hair.avi
3、提取音频
ffmpeg -i hair.mp4 -vn hair.mp3
4、视频每一帧转换为图片[%03d--表示用三位数值表示,从001开始]
ffmpeg -i qiu.mp4 -vf fps=1 image-%03d.jpg
5、图片合成视频
ffmpeg -f image2 -i image-%03d.jpg out.mp4
6、多个视频片段拼接合成新的视频
ffmpeg -f concat -i fileList.txt out.mp4
其中 fileList.txt 中的内容为
file 'v1.mp4'
file 'v2.mp4'
实际应用
1、压缩视频
ffmpeg -i hiar.mp4 -fs 10MB -b:v 1M video.mp4 # 指定尺寸压缩
ffmpeg -i hiar.mp4 -r 25 hiar-25.mp4 # 指定帧速度,默认为25帧每秒
2、按照时间间隔[-segment_time ]切片
ffmpeg -i hiar.mp4 -codec:v libx264 -codec:a mp3 -map 0 -f ssegment -segment_format mpegts -segment_list hiar.m3u8 -segment_time 5 hiar%03d.ts
ffmpeg -i four.mp4 -f segment -segment_list four.m3u8 -segment_time 10 -c copy -bsf:v h264_mp4toannexb -map 0 four-%3d.ts
3、获取封面图[从第二秒开始,提取1帧作为视频封面],-y直接覆盖
ffmpeg -i hiar.mp4 -ss 00:00:02 -y -f image2 -frames 1 hiar_cover.jpg
4、裁剪音频
ffmpeg -ss 00:00:00 -i "I-DO.mp3" -t 00:03:12 I-DO-0.mp3
5、多个音频合并
ffmpeg -i "concat:I-DO-0.mp3|I-DO-1.mp3|I-DO-2.mp3" -acodec copy wedding.mp3
6、转换视频编码(将原来编码为MPEG4格式的转换为h264编码)
ffmpeg -i four-season-20.mp4 -vcodec h264 four-season-20-h264.mp4
7、本地视频循环推流
ffmpeg -re -stream_loop -1 -i wedding.mp4 -vcodec copy -acodec aac -f flv rtmp://192.168.1.63:1935/live/wedding?secret=035c73f7-bb6b-4889-a715-d9eb2d1925cc
8、大视频文件切分
若一个1小时30分钟的视频需要分成 3 段,具体分割位置为视频中的 Start~00:30:00,00:31:00~01:00:00,01:01:00~End
ffmpeg -ss 00:00:00 -i input.mp4 -c copy -t 00:29:59 output_part1.mp4 # Start~00:30:00
ffmpeg -ss 00:31:00 -i input.mp4 -c copy -t 00:29:59 output_part2.mp4 # 00:31:00~01:00:00
ffmpeg -ss 01:01:00 -i input.mp4 -c copy -t 00:29:59 output_part3.mp4 # 01:01:01~End

浙公网安备 33010602011771号