第一作者简介:郭晶晶,女,天津人,硕士,副研究员,研究方向为影像检验。E-mail: guojingjing@cifs.gov.cn
目的 法庭科学视频图像处理领域经常会用到多种软件工具,例如Photoshop、警视通、识慧等,这些软件都需要付费。而FFmpeg是一款开源免费的音视频处理软件,支持多种编解码标准,在视频图像处理中有很好的应用。方法 本文介绍了FFmpeg软件的安装以及典型应用。我们利用拍摄的视频进行了多种图像处理操作,列举了常用的使用场景、语句及相应的配置参数。结果 利用FFmpeg软件可以实现视频参数调整(如视频帧率、分辨率、翻转等)、添加删除水印、视频剪辑(如视频裁剪、提取音频、视频合成)以及存储视频关键帧等图像处理功能,处理时间短,效果显著。结论 FFmpeg软件应用环境易实现,操作简单快捷,适用场景丰富,在视频图像处理中如果得到充分利用,则会大大提高工作效率。
Objective Forensic image processing often utilizes the relevant software, e.g., the Photoshop, VIS System and Video investigator, yet they are all requiring money-paid if used, thus, the free-charged FFmpeg, one audio/video processing software, is widely selected with its adaptation into varieties of format compiling/transcoding. Therefore, this paper is to introduce the software and trial-apply it.Methods With the introduction of FFmpeg software about its installation and typical application, one video was afterwards processed with the FFmpeg software to undergo multiple image disposal into the common application scenarios, codes and corresponding configuration parameters.Results FFmpeg software is indeed of extensive applicability in video processing, capable of adjusting video parameters (e.g., video frame rate/resolution/reversion), adding/removing watermarks, clipping video (e.g., clipping/synthesizing video, extracting audio) and storing the key frames of video. FFmpeg software is also of less time consumption and remarkable effect when used to process video/image.Conclusions Owing to the excellence of wide applicative environments, simple and fast operation, abundant scenarios of utilization, FFmpeg software is able to enhance the work efficiency greatly.
FFmpeg全称为fast forward moving picture expert group, 是一个开源免费跨平台的音视频处理工具, 属于自由软件, 采用LGPL或GPL许可证。FFmpeg集音视频采集、录制、格式转换、编解码功能于一体, 支持40多种编码标准和90多种解码标准[1], 包含了非常先进的音频/视频编解码库libavcodec, 被很多视频播放器如Mplayer、ffplay、暴风影音等和转码工具如格式工厂等作为内核使用。FFmpeg在Linux平台下开发, 也可以在Windows、MacOSX等操作系统环境中编译运行。FFmpeg 项目的部分组成如表1所示[2]。
![]() | 表1 FFmpeg 项目部分组成成员 Table 1 Functional components of FFmpeg software |
FFmpeg最常用的两个下载网站是 http://ffmpeg.org/和https://ffmpeg.zeranoe.com/builds/, 前一个网站下载的源代码经过编译后才可以使用, 后一个网站下载的是已经编译完成的软件, 可供Windows环境直接使用。安装方法是将下载的32位或者64位版本拷贝至D盘, 打开计算机“ 属性” 中的“ 高级系统设置” , 在其中的“ 环境变量” , 新建一个“ 用户变量” , 输入一个变量名“ path” 和一个变量值“ D:\ffmpeg\bin” , 打开命令提示符后输入“ ffmpeg-version” , 表明FFmpeg成功安装。
法庭科学视频图像处理中, 大多数视频文件可以使用常用的播放器打开, 少数视频文件无法正常打开, 这时则需要使用功能强大的视频处理工具对视频进行播放、编辑等操作。FFmpeg是一款非常实用的视频处理工具, 可以解决很多实际问题, 我们可以借助FFmpeg的帮助文档, 查询FFmpeg常用的语句, 供使用时参考。为方便查看, 可以将帮助文档存储为txt格式, 语句为:“ ffmpeg -h > help.txt” 。以下列举几种FFmpeg在视频图像处理中的典型应用情况。
2.1.1 调整帧率
使用播放器播放视频的时候偶尔会遇到视频播放帧率异常的情况, 画面变快或者变慢, 此时可以通过FFmpeg快速调整视频的帧率, 语句是:
ffmpeg -i “ yourvideofile” -vf “ setpts=(X/Y)* pts” “ yournewfile ”
其中, X为当前视频的帧率, Y为新帧率。
2.1.2 调整分辨率
在存储、播放视频的时候, 为了压缩视频节省空间、易于播放或者其他目的, 有时需要调整视频的分辨率, 语句是:
ffmpeg -i input.mp4 -s 640× 480 output.mp4
其中-s 是设置帧大小, 格式为w× h, 缺省是160× 128。也可直接使用视频分辨率的简写:Sqcif: 128× 96; qcif:176× 144; cif:252× 288; 4cif:704× 576。
2.1.3 视频翻转、旋转
播放视频有时会遇到视频翻转、旋转的情况, 比如播放手机录制的视频, 有时需要旋转90° 播放并存储。语句是:
视频画面上下翻转:ffmpeg -i input.mp4 -vf vflip output1.mp4
视频画面左右翻转:ffmpeg -i input.mp4 -vf hflip output2.mp4
视频画面顺时针旋转90° :ffmpeg -i input.mp4 -vf transpose=1 output3.mp4
视频画面逆时针旋转90° :ffmpeg -i input.mp4 -vf transpose=2 output4.mp4
2.2.1 添加水印
FFmpeg可以快速为视频添加水印。具体例子如下:将原视频original.MOV拷贝至D盘根目录下, 视频截图如图1所示, 需要添加的水印图像同时拷贝至D盘, 如图2所示。
在FFmpeg环境中运行语句如下:
D:\> ffmpeg -i original.MOV -vf “ movie=bird.png, scale=192:108[watermask]; [in][watermask] overlay=1600:100 [out]” water.mp4
其中-vf中的“ movie” 指添加水印图像的文件名(需要与原视频在同一目录下), “ scale” 指水印图像的大小(需要与原图像同比例), “ overlay” 指水印图像的x/y坐标位置, “ water.mp4” 则定义了输出视频的名字和格式。等视频转换完成, 可以通过语句“ ffplay water.mp4” 来观看添加水印后的视频, 添加水印后视频截图如图3所示。添加的视频水印也可以是GIF等动图。
2.2.2 删除水印
在某些视频编辑的过程中, 需要删除水印(如视频的电视台标志、时间戳等), FFmpeg提供了delogo滤镜可以去除视频的水印, 其原理是通过对水印周围像素进行插值达到去除水印的效果, 在FFmpeg环境中对上述添加水印后的视频运行语句:
D:\> ffmpeg -i water.mp4 -vf delogo=x=1600: y=100:w=200:h=120 delogo.mp4
其中“ x, y” 为水印左上角的坐标位置(可以通过Photoshop等软件读取像素的坐标位置), “ w, h” 为水印的宽和高(这里可以比原始水印大一点)。语句运行完成后, 删除水印后视频截图如图4所示。
可以观察到水印被完美地去除了。当然delogo滤镜不是万能的, 适用于天空、水面等周围颜色相差不多的环境下去除水印, 简单快捷有效, 但在其他场景中可能会出现马赛克效应。
2.3.1 视频裁剪
1)截取某一时间段的视频, 利用语句:
ffmpeg -i input.mp4 -ss 00:00:05.0 -c copy -t 00:00:10.0 output.mp4
-ss指剪切视频开始的时间, -t指截取的时间。最后输出为一段从视频第5 s开始, 持续时间10 s的新视频。
2)裁剪视频, 利用crop滤镜, 可以把视频从指定的x, y位置裁剪成指定的w, h, 坐标系是从视频图像的左上角开始。语句如下:
视频宽度截取一半:ffmpeg -i original.MOV -vf crop=iw/2:ih:0:0 cut1.mp4
视频高度截取一半:ffmpeg -i original.MOV -vf crop=iw:ih/2:0:0 cut2.mp4
运行语句后, 原视频original.MOV剪裁的两段视频截图如图5和图6。
2.3.2 提取音频
FFmpeg可以将视频的音频和视频画面分开, 提取音频可以通过如下语句实现:
ffmpeg -i input.mp4 -f mp3 -vn output.mp3
2.3.3 视频合成
1)几段视频合成
FFmpeg可以轻松实现几段视频的合成, 方法是同目录下新建文件名为file的txt文件, 内容为:
“ file ‘ input1.avi’
file ‘ input2.avi’
file ‘ input3.avi’ ”
FFmpeg语句是:ffmpeg -f concat -i file.txt -c copy output.avi
当几段不同格式、不同分辨率视频合成时, 建议先转化为相同格式、相同分辨率再进行合成。
2)视频和音频合成
FFmpeg可以将视频和音频快速合成新的视频, 通过如下语句可以实现:
ffmpeg -i input-no-audio.mpg -i input.mp3 -c copy output.mpg
视频的关键帧存储的信息量更大, 因此在视频图像处理过程中经常是对视频的关键帧进行处理, 这时就需要提取视频关键帧的技术, 但是市面上的软件并没有此项功能, 而FFmpeg可以轻易完成提取关键帧的任务, 语句是:
ffmpeg -i original.MOV -vf select=’ eq(pict_type\, I)’ -vsync 2 -s 1920* 1080 -f image2 keyframe-%02d.jpeg
其中-vf:表示过滤图形的描述, select:选择帧输出, pict_type选择“ I” 帧, 即关键帧, -vsync 2:阻止每个关键帧产生多余的拷贝, -s 则是分辨率, -f image2 name_%02d.jpeg:将视频帧写入到图片中, 样式的格式一般是“ %d” 或者 “ %0Nd” , “ N” 代表几位数编码。运行程序后, 原视频original.MOV则输出12帧关键帧。
FFmpeg是一款开源的音视频处理软件, 在互联网和专业文献中有非常多的资源和技术资料, 例如CSDN社区[3]等在视频图像处理领域可以进行视频的参数调整、添加删除水印、视频剪辑、存储视频关键帧等, 在工作中十分便捷高效。本文中列举的方法只是FFmpeg功能应用的很小一部分, 我们还可以借助SDL进行更多的研究工作[4, 5, 6]。在实际使用过程中, 我们需要结合公安实际, 充分利用好FFmpeg免费开源的特点, 发挥FFmpeg更新快、功能强、适用广的优点, 辅助视频侦查和视频图像检验鉴定工作, 密切联系公安视频图像处理和检验鉴定应用。此外, FFmpeg的兄弟软件FFprobe可以分析视频属性, 在伪造视频、伪造图像检验鉴定领域亦有相当广阔的应用前景。
[1] |
|
[2] |
|
[3] |
|
[4] |
|
[5] |
|
[6] |
|