【视频编码】ffmpeg压缩视频文件

一、引言

首先,了解下播放视频的基本流程,如下图所示:

解封装:就是将输入的封装格式的数据,分离成为音频流压缩编码数据和视频流压缩编码数据。如上图,将MP4和FLV格式解封装成视频数据H264、MPEG2和音频数据AAC、MP3格式。

解码:就是将视频/音频压缩编码数据,解码成为非压缩的视频/音频原始数据。如上图,将视频数据解码成YUV格式和音频数据解码成PCM格式。

视音频同步:就是根据解封装模块处理过程中获取到的参数信息,同步解码出来的视频和音频数据,并将视频音频数据送至系统的显卡和声卡播放出来。

所谓的软解、硬解也就是在解码方式上的区别。

我们最最常见的视频软解码开源库就是ffmpeg。

二、Linux使用ffmpeg修改和压缩视频文件格式

这里的操作系统是 ubuntu 18.04

1.安装 ffmpeg

 安装命令:

sudo apt-get install ffmpeg

下面查询版本的命令可以确认是否安装成功:

ffmpeg -version

【视频编码】ffmpeg压缩视频文件_第1张图片

 这样就已经安装成功了

2. 使用ffmpeg修改和压缩视频文件格式

可以通过下面命令更改和压缩视频文件格式

  • 更改视频文件格式:
ffmpeg -y -i vtest.avi out.mp4 
  • 压缩视频文件
ffmpeg -y -i vtest.avi -s 768x576 -vcodec libx264 -preset fast -b 10000 -r 10 out.mp4

命令参数:
-y: 当已存在out.mp4是,不提示是否覆盖。
-i : “test.avi” 输入文件名,可以自己修改路径和名字
-s: 768x576 输出的分辨率,注意片源一定要是4:3的不然会变形
-vcodec -libx264: 输出文件使用的编解码器。
-preset fast: 使用libx264做为编解码器时,需要带上这个参数。
-b: 10000 视频数据流量,用-b xxx表示使用固定码率,数字可更改;还可以用动态码率如:-qscale 4和-qscale 6,4的质量比6高

-b 10000 对于768*576来说,码率不够,最后输出的画质会很差,如下图:【视频编码】ffmpeg压缩视频文件_第2张图片

-b 80000 则还可以

【视频编码】ffmpeg压缩视频文件_第3张图片


-acodec: aac 音频编码用AAC
-ac 2 声道数1或2
-ar: 48000 声音的采样频率
-ab: 128 音频数据流量,一般选择32、64、96、128#-vol 200 200%的音量,可更改(如果源文件声音很小,可以提升10到20倍1000%~2000%)
-r: 10 帧数 (一般用25,以实际应用的帧数为准,例如10、15)
out.mp4: 输出文件名。
以上参数的使用细节,ffmpeg的help里有更详细的描述。
 

参考资料:

[1] Linux 使用ffmpeg修改和压缩视频文件格式

[2] 【干货】关于软解(ffmpeg)和硬解(MediaCodec、MediaPlayer)以及底层(OpenMax)的那点事

你可能感兴趣的:(linux,视频监控,ffmpeg,视频编码)