简析FFmpeg在视频与音频文件中的处理方法

2022-07-06 12:38徐聪
客联 2022年10期
关键词:视频处理方法音频

徐聪

摘 要:多媒体技术尤其以视频和音频方面为主的处理技术应用范围十分广泛,涉及到实时监控、远程视频会议等各方面。

关键词:FFmpeg;视频;音频;处理方法;分析

在油田企业生产经营和信息化建设中,多媒体技术尤其以视频和音频方面为主的处理技术应用范围十分广泛,涉及到实时监控、远程视频会议等各方面。本文介绍一种名为FFmpeg的计算机程序,其使用C语言进行编译,该程序在视频和音频数字文件的处理方面有很高的效率。

一、FFmpeg程序介绍

1、FFmpeg所包含的视频库和音频库如下:

一是Libavformat库:用于各种音视频封装格式的生成和解析,包括获取解码所需信息以生成解码上下文结构和读取音视频帧等功能;二是libavcodec库:用于各种类型声音/图像编解码;三是libavutil库:包含一些公共的工具函数;四是libswscale库:用于视频场景比例缩放、色彩映射转换;五是libpostproc库:用于后期效果处理。

2、FFmpeg提供的项目程序如下:

一是ffmpeg:该项目提供的一个工具,可用于格式转换、解码或电视卡即时编码等;二是ffsever:一个HTTP多媒体即时广播串流服务器;三是ffplay:一个简单的播放器,使用ffmpeg库解析和解码,通过SDL显示。

二、FFmpeg的各种参数

FFmpeg使用直观的命令行符号设计,符号简单,易于用户使用。以下为FFmpeg的常用命令行符号参数,分为主要参数、视频参数、音频参数。

1、主要参数:(1)‘-L——显示视频许可;(2)‘-h,-?, -help,--help——显示帮助选项;(3)‘-version——显示视频版本信息;(4)‘-formats——显示可用的视频格式。

格式名称的字段有以下几种:(1)‘D——可以解码;(2)‘E——可以编码;(3)‘-codecs—— 显示可用的编解码器;(4)‘V/A/S——视频/音频/字幕编解码器(5)‘S—— 编解码器支持多帧;(6)‘D——编码器支持直接渲染;(7)‘T—— 编解码器可以处理在随机位置截取的输入视频,而不是只在帧边界进行处理;(8)‘-bsfs——显示可用的比特流过滤器;(9)‘-protocols——显示可用的协议;(10)‘-filters——显示可用的libavfilter过滤器;(11)‘-pix_fmts——显示可用的图像格式;(12)‘-f fmt——强制格式化;(13)‘-i filename——输入视频文件名;(14)‘-y——覆盖输出文件;(15)‘-t duration—— 限制转码/捕获视频序列的持续时间,以秒为指定单位;(16)‘-fs limit_size ——设置文件大小的限制;(17)‘-scodec codec——强制转换字幕;(18)‘-newsubtitle——向当前输出流中加入字幕流;(19)‘-target type——设定特定文件类型,例如vcd, svcd,dvd,dv,dv50、pal-vcd,ntsc-svcd等,所有该类型相关的参数(比特率、信号解编码器、缓冲区大小)会由该程序自动生成。

2、视频参数。‘-b bitrate——设置视频比特率(默认为200kb/s);

‘-dframes number——设置该文件的帧数目;

‘-r fps——设置帧速率 (Hz 值, 分数或缩写,默认为25);

‘-s size——设置帧大小,格式为宽乘高,例如:‘svga 800x600、‘xga 1024x768 、‘sxga 1280x1024 、‘wsxga 1600x1024 、‘hd720 1280x720、‘hd1080 1920x1080;

‘-vn ——禁用视频录制;

‘-newvideo——在当前输出流中加入一段新的視频流。

4、音频参数。-ab ——设定每Channel(最近的SVN版为所有Channel的总和)的流量,

-ar ——设定采样率;

-ac ——设定声音的Channel数;

-acodec ——设定声音编码器,未设定時与影像相同,使用与输入档案相同的编解码器;

-an ——不处理声音,于仅针对影像做处理时使用;

-vol ——设定音量大小,256为标准音量。(要设定成两倍音量时則输入512,依此类推。)

FFmpeg支持的协议:

IETF 标准: TCP, UDP, Gopher, HTTP, RTP, RTSP 和 SDP。

苹果公司的相关标准: HTTP Live Streaming。

RealMedia 的相关标准: RealMedia RTSP/RDT。

Adobe 的相关标准: RTMP, RTMPT (由librtmp实现), RTMPE (由librtmp实现), RTMPTE (由librtmp) 和 RTMPS (由librtmp实现)。

微软的相关标准: MMS 在 TCP 上和 MMS 在 HTTP上。

三、FFmpeg主要功能

在我们油田企业日常信息化活动中,FFmpeg所提供的主要功能有视频转换、视频采集、音频提取和视频截图。

1、视频转换:FFmpeg的视频转换功能十分强大,该程序可以将多种视频格式进行转换。例如使用下列命令行:./ffmpeg -y -i "C:\Users\Public\Videos\Sample Videos\Wildlife.wmv" -acodec libmp3lame -vcodec msmpeg4 -b:a 192k -b:v 1000k -vf scale=640:480 -ar 44100 "C:\Users\ Public\Videos \Wildlife.avi"

可以将WMV格式的视频转换为MS Compatible AVI格式。例如将一个AVI格式的视频转码为MPG格式,只需输入以下命令行:ffmpeg -i myfile.avi -target vcd /tmp/vcd.mpg便可以将目标文件myfile从AVI格式转码为MPG格式,在TMP文件夹中以VCD的名称和MPG的格式存储。

然而用户仍然可以手动设置符合标准的视频格式,下面命令行是上述命令行的拓展,其中-bf 2是指定该MPG格式为MPEG-2:ffmpeg -i myfile.avi -target vcd -bf 2 /tmp/vcd.mpg在日常工作中,由于很多视频设备或视频软件只能够解码部分格式的视频,例如移动播放设备所支持的视频格式具有局限性,但是因为视频文件的获得是由多种渠道得来的,其格式并不一定符合存储或播放设备的要求,所以用户可以使用上述功能将所需视频转换为与设备或软件相适应的格式,便于视频信息的播放与存储。此外,在保证视频可视质量的条件下,该功能可以将占空间过大的视频通过格式转换的方式对视频文件进行有效的压缩,从而释放存储空间,因而使存储设备的空间得到最大化的利用。

2、视频采集: FFmpeg的视频采集功能也非常强大,不仅可以采集视频采集卡或USB摄像头等输出端输出的图像,还可以进行屏幕录制,同时还支持以RTP(Real-time Transport Protocol,实时传输协议)方式将视频流传送给支持RTSP的流媒体服务器,支持直播应用,信号延迟时间极短,在远程视频会议中起到重要作用。FFmpeg视频采集可以分为以下两种:

(1)FFmpeg在Linux操作系统下的视频采集

在Linux平台上,ffmpeg对V4L2的视频设备提供了很好的支持,如:./ffmpeg -t 10 -f video4linux2 -s 176*144 -r 8 -i /dev/video0 -vcodec h263 -f rtp rtp://192.168.1.105:5060 > /tmp/ffmpeg.sdp以上命令表示:采集10秒钟视频,对video4linux2视频设备进行采集,采集QCIF(176 C ?44)的视频,每秒8帧,视频设备为/dev/video0,视频编码为H263,输出格式为RTP,后面定义了IP地址及端口,将该码流所对应的SDP文件重定向到/tmp/ffmpeg.sdp中,将此SDP文件上传到流媒体服务器就可以实现直播了。

(2)FFmpeg在Windows操作系统下的视频采集

在Windows下关于FFmpeg视频采集的资料较少,但是FFmpeg还是支持Windows下视频采集的。FFmpeg支持Windows下video for Windows(VFW)设备的视频采集,不过VFW设备已经过时,正在被WDM 即Wavelength Division Multiplexing,波分多路复用的视频设备所取代,但是ffmpeg还没有支持WDM的计划,不过好像有将WDM转为VFW的工具,因此ffmpeg还是可以在windows下進行视频采集的。

3、音频提取:./ffmpeg  -y -i "C:\Users\Public\Videos\Sample Videos\Wildlife.wmv" -acodec libmp3lame -b:a 160k -ac 2 -ar 44100 "C:\Users\Tianshu Yin\Documents\Wildlife.mp3"上述命令执行后该程序便将WMV格式视频中的音频部分以mp3的格式提取出来。事实上,FFmpeg可以将绝大多数视频格式中的音频提取出来,便于用户对所需音频部分进行进一步的解码转码、分析和存储。

4、视频截图。利用此功能,用户可以从摄像机、摄像头摄制或从互联网上下载的视频文件中截取图片:ffmpeg -i test.avi -r 1 -s WxH -f image2 test-%03d.jpeg上述命令可以将目标文件即AVI格式的test从开始处以1帧/秒的速度进行截图操作,所形成的图片将以‘test-001.jpeg, ‘test-002.jpeg等文件形式存储在电脑中,所形成的新图片文件可以根据用户的需求重新调整纵横比。此外,如果视频文件较大,用户还可以将-ss命令符添加到命令行中,从而可以实现在视频文件中选择其中某一时间点开始进行截图操作,所截图片数量适中,不会出现整个视频文件都被截图产生大量图片的情况,防止非必须的存储空间浪费。

参考文献:

[1]郭晶晶;刘光尧;汪磊;李志刚;FFmpeg在视频图像处理中的应用[J]; 刑事技术;2020年第 45期

猜你喜欢
视频处理方法音频
必须了解的音频基础知识 家庭影院入门攻略:音频认证与推荐标准篇
基于Daubechies(dbN)的飞行器音频特征提取
音频分析仪中低失真音频信号的发生方法
基于IPv6组播技术校园网络视频服务设计
探究发射机风机运行中常见故障原因及其处理方法
Pro Tools音频剪辑及修正