MediaInfo工具在视频文件管理中的应用

2018-04-13 01:06刘立康
计算机技术与发展 2018年4期
关键词:转码视频文件工具

姜 文,刘立康

(西安电子科技大学 通信工程学院,陕西 西安 710071)

0 引 言

随着云计算技术的不断发展,媒体云化服务也发展迅速,许多公司都在开发视频云转码软件产品。云转码软件在产品开发与运营阶段都涉及到视频文件库管理。目前主流的视频文件类型很多,每类视频文件都涉及大量相关参数,仅依靠视频文件的扩展名进行分类管理,已经无法满足云转码软件对视频文件库管理的需求。因此需要对视频文件按照扩展名(文件类型)进行一级分类之后,再针对同一文件类型的视频文件提取特定重点参数信息,按照参数值进行二级分类;同时将视频库文件中所有视频文件提取出来的参数信息写入相关索引文件归档,索引文件通常为CSV文件或Excel文件。

MediaInfo是目前通用的多媒体文件参数信息提取的开源软件,MediaInfo工具根据用户的不同需求有三种形式的工具。文中介绍了MediaInfo工具的基本功能,结合实例详细叙述了三种形式MediaInfo工具的使用方法,最后介绍了MediaInfo工具在云转码视频文件库管理中的应用。

1 多媒体与CSV文件

1.1 多媒体技术的研究对象

多媒体技术[1-7]可以处理文本、图形、图像、音频、动画、视频等多种媒体。

(1)文本:文本包含字母、数字、字、词语等基本元素。

(2)图像:图像即位图图像,由像素构成。

(3)图形:图形即矢量图,通常由绘图软件绘制生成,文件存储格式有3ds、dxf、wmf等。图形文件也可以采用图像格式保存。

(4)声音:声音属于听觉媒体,包含音效、语音和音乐。

(5)动画:动画是通过一系列彼此有差别的单个画面,通过一定速度的播放达到画中图像连续变化的效果。

(6)视频:视频是由连续的画面组成动态图像的一种方式,其中的每一幅图像称为一帧(frame)。视频文件可以单纯由视频流组成,也可以随视频流同时播放音频流共同组成。

动画和视频都建立在活动帧的基础上,区别在于动画的画面是人工生成的,而视频的画面是客观场景,二者可以采用相同的文件格式保存。视频文件中的影视文件通常包含视频流、音频流和文本(字幕)多个媒体要素。

1.2 CSV文件

CSV(comma-separated values)文件,即逗号分隔值文件,其文件以纯文本形式存储表格数据(数字和文本)。CSV文件由任意数目的记录组成,记录间以某种换行符分隔;每条记录由字段组成,字段间的分隔符是其他字符或字符串,最常见的是逗号或制表符。

这种文件格式经常用来作为不同程序之间数据交互的格式。可以使用文本文件形式打开,也可以以Excel表格形式打开,以Excel表格形式打开能够方便地针对文件中的数据进行分析和处理。

2 MediaInfo工具

MediaInfo[8-9]是一款用来分析图像、视频与音频文件的编码和属性内信息的开源软件。MediaInfo软件支持目前各类主流格式的图像、音、视频文件的信息获取,可以获取媒体文件的各种类型参数信息。

2.1 参数类型

媒体文件的参数众多,按照参数可以分为7类:

(1)全局参数(general parameter)。

媒体文件的整体相关参数:ID、文件完整名称、文件名称、标题、作者、专辑名、音轨号、格式、日期、总持续时间、文件大小等。

(2)视频参数(video parameter)。

媒体文件中视频流的相关参数:ID、格式、编解码器、持续时间、码率、宽度、高度、画面比例、帧率、帧率模式、色彩空间、色度抽样、位深、扫描方式、流大小等。

(3)音频参数(audio parameter)。

媒体文件中音频流的相关参数:ID、格式、编解码器、持续时间、码率模式、码率、声道、声道位置、采样率、帧率、位深、压缩方式、流大小、语言等。

(4)文本参数(text parameter)。

媒体文件中字幕的相关参数:ID、格式、编解码器、压缩方式、标题、语言等。

(5)菜单参数(menu parameter)。

媒体文件中可以选择的菜单参数:菜单数目、菜单ID、菜单名称、格式、编码、语言等。

(6)图像参数(image parameter)。

媒体文件中图像的相关参数:格式、宽度、高度、色彩空间、色度抽样、位深、压缩方式、流大小等。

(7)其他参数(other parameter)。

媒体文件中包含的其他对象的参数:对象数目、ID、类型、名称、格式、编码、语言等。

2.2 支持的媒体格式

支持大多数主流媒体编码格式,大致可分为4类:

(1)视频格式:MKV、OGM、AVI、DivX、WMV、QuickTime、Real、MPEG-1、MPEG-2、MPEG-4、DVD(VOB)等。(编码器:DivX、XviD、MSMPEG4、ASP、H.264、AVC……)。

(2)音频格式:OGG、MP3、WAV、RA、AC3、DTS、AAC、M4A、AU、AIFF等。

(3)字幕格式:SRT、SSA、ASS、SAMI等。

(4)图像格式:jpeg、bmp、tiff、png、gif、psd等。

2.3 语言的选择

MediaInfo工具可以选择中文、英文、俄文、德文、法文、西班牙文、葡萄牙文、日文、朝鲜文等几十种语言查看媒体文件参数信息。

3 MediaInfo工具的三种形式

MediaInfo工具根据用户的不同需求有三种形式的工具,分别是GUI图形界面工具、CLI命令行工具和DLL动态库工具。

3.1 GUI图形界面工具

图形界面工具在图形界面上查看媒体文件的参数信息。图形界面分为三个区域:上方为菜单区,左侧为工具栏,其余部分为信息显示区。通过菜单或工具栏进行媒体文件参数信息的查阅和处理,如图1所示。

图1 GUI图形界面工具的视频文件参数信息显示图

3.1.1 通用的参数信息查看方式

可以查看媒体文件常见的主要参数信息。

(1)打开媒体文件。

可以选择单个媒体文件查看该文件的参数信息,也可以选择文件夹查看文件夹中全体媒体文件的参数信息。

(2)参数信息显示格式。

参数信息可以采用多种查看方式:基本、文本、表格、树形图、网页、XML等显示格式,通过子菜单选择具体显示格式。

(3)查看更多的参数信息。

在菜单中选择“调试→高级模式”,可以查阅到更多的媒体文件参数信息。

(4)参数信息导出。

可以通过菜单或工具栏导出媒体文件参数信息,导出文件的格式有文本、xml、csv、html等。

3.1.2 自定义的参数信息查看方式

有时用户需要根据自己的需求查看媒体文件特定参数信息,图形界面工具通过用户自定义方式来实现视频文件对指定参数信息进行查看与结果导出。

1.自定义媒体文件参数信息提取实例。

实例:A:pt为自定义参数列表,在文件夹H:/movies/temp2中有多种类型的多媒体文件,查看文件夹中每个文件在pt中自定义的参数信息,并将查看结果写入TXT或CSV文件。

pt=["FileName","FrameRate_Mode","ScanType","Width","Height","DisplayAspectRatio"]

2.实现过程。

实例A中媒体文件参数信息查看的实现过程。

(1)打开图形化界面的MediaInfo工具,在选项中选择“选项→参数设置”或者点击工具左侧第四个按钮,在弹出的对话框中“自定义”选项签中点击“自定义”选项。

(2)在“自定义”页签下新建自定义参数模板文件,编辑该文件。根据参数类型在参数域中设置需要的参数名称。对于实例A,General域下需要设置视频文件名称参数(FileName);Video域下需要的参数有:帧率模式、扫描方式、片源宽度、片源高度、画面比例(FrameRate_Mode,ScanType,Width,Height,DisplayAspectRatio)。编辑完成后,保存模板文件。模板文件存放在MediaInfo工具的安装路径的PluginCustom路径下。

(3)打开媒体文件夹,在选项中选择“查看→自定义”就可以显示出文件夹中媒体文件在实例A中定义参数的参数值。

(4)将自定义的媒体文件参数信息显示出来后,使用MediaIndo工具左侧的第三个按钮,可以导出媒体文件的参数信息。导出结果文件类型可以是txt或csv文件。选择导出文件为csv格式,在创建自定义参数模板文件时,针对多个参数,需要在每个参数之间以逗号进行分隔。

3.2 CLI命令行工具

CLI(MediaInfo command line interface)命令行工具提供额外的功能来查询媒体文件特定参数的值,工具通过批处理文件提取媒体文件的参数值。根据不同的操作系统,可以分为Windows操作系统下使用的命令行工具与Linux操作系统下使用的命令行工具。

在Windows操作系统下,安装包MediaInfo_CLI_0.7.78_Windows_i386.zip放置到指定的路径下,安装包解压后就可以使用MediaInfo命令行工具。

指令格式:Usage:mediainfo [-Options...] File-name1 [Filename2...]

在计算机中选择“开始”→“附件”→“命令提示符”,进入命令行工具MediaInfo.exe所在的路径,可以选择多种参数,执行命令行工具获取各种信息。

通过编写批处理脚本,可以获取媒体文件或者文件夹中多个媒体文件的各种参数信息。对于实例A,BAT批处理脚本的核心代码如下:

for /f "delims==" %%j in('dir %Video_Path%*.mp4 /b') do (%MediaInfo_Path%MediaInfo.exe --Inform=file://%MediaInfo_Path%Test.txt "%Video_Path%\%%j" -output >> "%MediaInfo_Path%mp4.txt")

代码注解:

(1)%Video_Path%为视频文件路径,%MediaInfo_Path%为CLI工具路径。

(2)为了简化批处理脚本的编写,可以将查看的参数写入一个Text.txt文件,Text.txt文件的内容如下所示:

General;%FileName%

Video; %Encoded_Application% %FrameRate_Mode% %ScanType% %Height% %Width%%Resolution% %DisplayAspectRatio%

(3)-output参数实现将提取到的媒体文件参数信息写入mp4.txt文件。

BAT批处理文件可以操作目录和文件,在上述BAT脚本的基础上增加操作目录和拷贝文件的相关操作命令,可以实现对视频文件库的分类管理。

3.3 MediaInfo.dll动态库编程

MediaInfo.dll动态库文件支持在C++、VB、C#、Java、Python以及Delphi等多种主流编程语言进行程序设计,如表1所示。

表1 动态库程序设计语言

在程序开发过程中需要将相应接口文件加入软件工程项目中,将动态库MediaInfo.dll和多媒体文件放置在指定的文件夹中。

Python[10-13]是一种解释型、面向对象、动态数据类型的高级程序设计语言。Python语言不需要编译,使用十分方便,在软件开发中应用广泛。下面以Python2为例介绍MediaInfo动态库的程序编写过程。使用PYHTON 2.7.9版本编写代码调用MediaInfo的动态库。

对于实例A,Python2所调用动态库的编程代码如下:

from MediaInfoDLL import *

import os

import sys

import csv

import glob

zhw_files='H:/movies/temp2/*.mp4'

MI=MediaInfo()

csvfile=file('csv_test12.csv', 'wb')

writer=csv.writer(csvfile)

row=[]

pt=[u"FrameRate_Mode",u"ScanType",u"Height",u"Width",u"DisplayAspectRatio"]

pt1=["FileName","FrameRate_Mode","ScanType","Height","Width","DisplayAspectRatio"]

writer.writerow(pt1)

for child inglob.glob(zhw_files):

MI.Open(child.decode('gbk'))

p=MI.Get(Stream.General, 0, u"FileName")

row.append(p.encode('gbk'))

forcs in pt:

row.append(MI.Get(Stream.Video, 0,cs) )

writer.writerow(row)

row=[]

csvfile.close()

MI.Close()

程序注解:

(1)使用from MediaInfoDLL import *在*.,导入MediaInfo.DLL动态库。

(2)自定义参数存放在pt1列表中。

(3)导入Python标准库glob模块,定义文件匹配模式,检索匹配的文件。

(4)对于中文媒体文件名,MI.Open打开文件的时候需要将解码设为‘gbk’,(MI.Open(child.decode('gbk')))。

(5)在csv文件中添加中文字符串时,需要将编码设为‘gbk’,(row.append(p.encode('gbk')))。

Python2程序执行之后,生成的结果文件为csv文件,采用Excel打开后,文件内容如图2所示。

图2 视频文件特定参数信息

Python语言可以很方便地进行目录和文件操作,可以直接读写Excel文件。在上述程序的基础上可以开发具有更多功能的管理工具,实现对视频文件库的自动化分类管理和索引文件更新。

3.4 三种工具的特点

MediaInfo工具具有三种形式,特点如表2所示。

表2 MediaInfo三种工具的特点

4 MediaInfo工具在云转码视频文件管理中的应用

目前主流视频文件类型[14-18]有M3U8、ASF、WMV、AVI、FLV、MKV、MOV、MP4、3GP、MPG、TS等。A产品是在研究的视频云转码软件产品,支持离线视频转码功能。A产品服务处理的视频文件类型主要有3类:mpg文件、ts文件和mp4文件。结合工作实践,叙述MediaInfo工具在云转码视频文件管理中的应用。

4.1 A产品开发过程中的视频文件管理

视频云转码软件在产品开发与测试过程中,需要对大量视频文件进行产品功能验证与测试。在软件开发的整个过程中,需要部署和管理视频文件库,对视频文件进行有效的管理能在很大程度上提升产品开发验证与测试的效率。

视频文件库按照如下方式管理视频文件:

(1)按照目前支持的三类视频文件类型进行一级分类,将文件类型相同的视频文件归档在同一目录路径下。

(2)对于同一文件类型的视频文件,提取特定重点参数的参数信息,写入*.csv文件或Excel文件,该文件作为视频库的索引文件,以便查阅和归档管理。有时还需要根据视频文件的某些特定重点参数,对已经进行一级分类的视频文件根据这些重点参数的参数值,再进行二级分类。

(3)随着视频云转码软件产品的开发进度,转码的片源文件类型和文件数量将不断增加,针对新增加的片源文件,需要不断更新视频文件库和视频文件库中的索引文件。

(4)对于出现转码失败以及转码之后有问题的片源文件,需要单独归档以及制作索引文件,建立问题片源库;按照出现的问题类型进行一级分类,按照文件类型进行二级分类,按照特定重点参数进行三级分类;同时也要及时进行问题视频文件库和问题视频文件信息索引文件的更新。

工作实践表明,在视频文件库的管理过程中,灵活应用MediaInfo工具可以处理遇到的各种问题,做好视频文件管理工作。

4.2 视频文件管理过程中的典型案例

4.2.1 存在的问题和问题定位

客户使用A产品对一批新的视频文件进行转码时,出现了大批量视频转码失败。产品售后工程师与产品运维工程师共同定位后发现,由于客户方提供的待转码视频文件中大部分文件的帧率模式视频参数是可变帧模式(FrameRate_Mode:VFR),这种类型的视频文件A产品目前还不支持,因此导致出现大量的视频转码失败。

测试人员可以根据定位结论,采用MediaInfo工具分别针对客户局点的三类视频文件*.mp4,*.ts以及*.mpg进行帧率模式参数值检查。在检查过程中发现,转码失败的mp4类视频文件的帧率模式为“可变模式”(FrameRate_Mode:VFR),不符合A产品的转码要求;同时查出部分视频文件的扫描方式是隔行扫描(ScanType:Interlaced),也不符合转码要求。

4.2.2 问题处理

对于不符合转码要求的视频文件需要进行分类管理,编写相关的索引文件。应用MediaInfo工具通常有三种处理方式。

(1)图形界面工具。

在图形界面工具中,采用自定义方式打开文件夹,查看全体视频文件的参数FrameRate_Mode和ScanType的参数值,并导出结果文件(通常为txt文件)。根据结果文件,手动生成相关目录对存在问题视频文件进行分类处理,手动填写Excel文件生成索引文件。

(2)命令行工具。

编写bat批处理脚本,查看全体视频文件的参数FrameRate_Mode和ScanType的参数值,根据参数值,生成相关目录自动对存在问题的视频文件进行分类处理,并导出结果文件(通常为txt文件)。根据结果文件,手动填写Excel文件生成索引文件。

(3)动态库编程。

采用Python2调用MediaInfo动态库编写程序,开发一个小工具。使用该工具查看全体视频文件的参数FrameRate_Mode和ScanType的参数值,自动完成存在问题的视频文件进行分类处理,自动生成csv或者Excel索引文件。

三种方式各有优点,GUI工具简单方便,但效率低;动态库编程自动化程度高,但是需要有一定的编程能力;命令行工具介于二者之间。根据实际情况可以选择不同的处理方法。

5 结束语

工作实践表明,使用MediaInfo工具可以很方便地提取视频文件的各种参数信息。MediaInfo工具有三种形式,可以满足产品开发工程师与测试工程师对工具的不同需求,提升云转码产品的开发与测试效率。在视频文件库的管理中灵活应用MediaInfo工具,可以很方便地实现对视频文件的分类管理,生成和更新视频文件库的索引文件,极大地提升管理工作效率。

参考文献:

[1] 王志军,柳彩志.多媒体技术及应用[M].第2版.北京:高等教育出版社,2016.

[2] 方其桂.多媒体技术及应用实例教程[M].北京:清华大学出版社,2016.

[3] HAVALDAR P,MEDIONI G.Multimedia systems:algorithms,standards and industry practices[M].Boston,MA,U.S:Course Technology,2009.

[4] LI Z, DREW M S. Fundamentals of multimedia[M].New Jersey,U.S:Pearson Education,2004.

[5] BOVIK A.Handbok of image and video processing[M].2nd ed.Cambridge,Massachusetts,U.S:Academic Press,2005.

[6] TEKALP M A. Digital video processing[M].2nd ed.New Jersey,U.S:Prentice Hall,2015.

[7] 杨雅媛,冯晶莹,张 爽,等.视频及图像处理使用教程[M].北京:清华大学出版社,2015.

[8] 李海彬.浅谈MediaInfo及其在广电行业中的应用[J].影视制作,2017,23(3):64-67.

[9] 李 斌.自制一个视频文件管理器(一)[J].电脑编程技巧与维护,2014(11):65-66.

[10] MICHÉLE B,KARPOW A.Demo:using malicious media files to compromise the security and privacy of smart TVs[C]//11th annual IEEE consumer communications and networking conference.[s.l.]:IEEE,2014:1144-1145.

[11] BATALLA J M,KRAWIEC P,MAVROMOUSTAKIS C X,et al.Efficient media streaming with collaborative terminals for the smart city environment[J].IEEE Communications Magazine,2017,55(1):98-104.

[12] HELLMANN D.Python标准库[M].刘 炽,译.北京:机械工业出版社,2013.

[13] SWEIGART A I.Python编程快速上手:让繁琐工作自动化[M].王海鹏,译.北京:人民邮电出版社,2016.

[14] 曹 强.数字音频规范与程序设计:基于Visual C++[M].北京:中国水利水电出版社,2012.

[15] 路锦正,周冬梅.Visual C++音频/视频处理技术及工程实践[M].北京:电子工业出版社,2009.

[16] 郭华源,秦开怀,毛 苗,等.双视点3D视频文件的裸眼立体组合投影实时显示算法[J].计算机辅助设计与图形学学报,2015,27(9):1734-1742.

[17] 闫 彬,陈耀武.基于内容的智能视频监控文件系统[J].计算机工程,2015,41(10):250-254.

[18] 吴国栋,刘政怡,王小帅.基于OpenCV的视频目标检索[J].计算机技术与发展,2014,24(11):210-213.

猜你喜欢
转码视频文件工具
随心定制视频文件的缩略图
视频转码技术在广播电视中的应用研究
波比的工具
波比的工具
准备工具:步骤:
视频转码软件的需求和框架分析
快速检索,抓取电影中的精彩篇章
“巧用”工具
如何进行优酷超清视频的转换操作
三招搞定课件中的“网络视频”