首页 > 范文大全 > 正文

媒体资产管理系统中基于FFmpeg技术的应用设计

开篇:润墨网以专业的文秘视角,为您筛选了一篇媒体资产管理系统中基于FFmpeg技术的应用设计范文,如需获取更多写作素材,在线客服老师一对一协助。欢迎您的阅读与分享!

摘 要:媒体资产管理(Media Asset Management,简称MAM)是指利用信息技术手段,对数字媒体资产所做的存储、管理、挖掘和再利用,实现媒体资产价值的优化。媒资系统在设计中为保证系统具有最大兼容性,就要对编码转换子系统进行改进,本文对FFmpeg技术相关理论及FFmpeg技术在媒体资产管理系统中的应用做一些探讨。

关键词:媒体资产管理;FFmpeg技术;编码解码

中图分类号:TP315

媒体资产管理系统是指对各类视频、音频资料的存储、编目、资产的综合信息系统,能够实现创建、编目、存储等,提高媒体资源利用率。媒体资产管理系统的实现可以分为数据上下载系统设计、编码系统设计、编目系统设计以及存储管理系统设计等,为了保证实现兼容性,需要编码系统能完成多种格式之间的转换,因此FFmepeg技术不失为一个优化的选择。

1 FFmpeg技术概述

FFmpeg是一个基于Linux操作系统,集录制、转换以及流化音视频为一体的解决方案,能够在绝大多数的操作系统中使用,包含了非常先进的音频/视频编解码库libavcodec,支持多种编码和解码。ffmpeg由视频文件转换命令行工具、多媒体服务器、媒体播放器、普通格式解析器以及音视频编码器等组成。

FFmpeg命令行的基本格式是FFmpeg.exe[options]-i input_file [options]output_file,FFmpeg参数由输入文件和文件两部分组成,输入文件名称前加下短线“-”,另外输入文件和输出文件可以自带可选参数,如参数-ss,格式为-ss hh;mm;ss;xxx,设置转换的起点位置,如-ss 00:30.000;参数-t,格式为-t hh;mm;ss;xxx,转换持续的时间,如-t 00:05.00.00;参数-vcodor,格式为-vcodor编码器,设置视频编码器,如-vcodor wrnv2等。

2 FFmpeg 视频转换的关键技术

FFmpeg视频转换的关键技术包括FFmpeg编码/解码的实现和格式转换的流程。在技术实现方面,素材的格式转换功能主要是调用音频/视频编码库libavcodec中的相应函数来实现,需要注意的是在采用FFmpeg编码之前需要先初始化libavcodec库,导入帧速率、编码器码率以及编码像素格式等参数,接着再进行编码。结构体AVCodecContext中的各个成员参数通过预设的视频参数来赋值,系统每一帧的数据都变为视频流。编码过程为(部分):av_register_all()av_find_stream_info()avcodec_alloc_frame()pCodec=avcodec_find_ encoder (CODEC_ID_H264)av_read_frame()avformat_close_mput file().FFmpeg解码过程为(部分):av_register_all()av_find_decoder()avcodec_openavcodec_ encode_ video显示视频avcoder_close()。

FFmpeg采用了核心库+主程序的编程模式,实现内部各种函数的具体格式,也实现了对视频的编辑操作,修改部分文件格式处理的代码,系统的视频编辑界面采用非线性布局,能够非常精确的记录视频剪辑的时间。具体流程为:是否需要视频剪切(是)是否需要格式转换(是)编辑后关闭文件更新各项统计参数保存生成新文件的函数调用XML Parser组件生成文档。

3 FFmpeg在媒体资产管理系统中的技术实现

3.1 设计思路

通过FFmpeg.exe命令执行完成媒体转码,能够在主程序与FFmpeg进程中建立输出管道,来管理转换过程。主程序进程启动主程序线程、管道监视线程以及任务监视线程三个线程,包括数据上传下载系统、编码系统、编目子系统设计以及其他功能型设计等。主程序线程主要实现程序的初始化以及用户接口等任务,任务监视线程主要实现启动FFmpeg进程以及监视任务列表等,管道监视线程主要实现获取管道信息以及监视管道等过程。

图1 系统结构设计图

主程序完成初始化后,创建管道事件和任务监视线程,任务监视线程建立数据库连接生成任务队列,进而生成FFmpeg命令字符串,开始转换编码。FFmpeg转码完成后自动结束,进行下一任务。在FFmpeg的进程执行中,信息分为开始、过程和结束信息,分析开始信息字符串能够得到时长、视频格式、帧大小、视频制式等,进而计算转换完成百分比,返回给监视线程,用于等待控制。

3.2 数据上下载系统设计

上载模块主要功能是实现素材的双码流导入,采编过程可参照两种命令实现:高品质:ffmpeg -i X:\input\a.wmv-ab 128-acodec libmp3lame-ac 1 -ar 22050 -r 29.97 -qscale 4 -y X:\output\a.flv和低品质:ffmpeg -i X:\input\a.wmv -ab 128 -acodec libmp3lame -ac 1 -ar 22050 -r 29.97 -b 512 -y X:\output\low.flv。以上命令可以在Dos命令行中输入,也可以创建到批处理文件中运行。不过前提是要在ffmpeg所在的目录中执行。

由于网络上传文件一般分为FTP协议方式和HTTP协议方式,而HTTP协议方式操作简单、便于管理,因此经常使用。本文设计采用实现文件批量上载,最大可支持4096Kb文件,修改web.config文件中的RequestLenght等属性值来实现上传大文件作用;下载模块主要实现媒体资料的不同介质存储,通常实现文件下载有不同的方法,可以采用IssusI()Utility、TransmitFile()、WriteFile()、WriteFile()分块下载、Binary Write()等实现下载。测试环境主要是Windows7、Visual Studio2005以及等,下载时间见表1所示。

表1 不同方法下载时间

文件大小/Kb 方法1/s 方法2/s 方法3/s 方法4/s 方法5/s

107680

201638

310720

415002

平均时间 5.533

11.351

19.615

28.165

21.037 5.676

11.465

20.256

33.554

17.738 5.192

10.165

20.216

24.156

14.935 5.315

11.364

20.564

48.264

21.677 8.126

15.526

26.458

36.565

21.669

3.3 基于FFmpeg的编码系统的设计

在编码系统的设计中重点是检索码流转换和文件格式转换两种需求,任务主要有节目成品入库前编码、素材回调编码和多种码间流转换。比如常用的素材编辑和检索的格式主要是MPEG-X和FLV,由于前者的音视频数据在传输时会对带宽造成较大影响,广域网用户往往需要缓冲很长时间才能够进行播放,因此在非编辑状态下多使用FLV格式,这种流媒体格式加载快、视频效果良好。在转换编码时工作流程为MeDIAByteIOC ontextDEMUXER(拆分文件)DECODE函数YUV(颜色编码方法)ENCODE函数MUXER(合并文件)BytelOC ontextMEDIA,YUV(颜色编码方法)DECODE(函数)DEMUXER(拆分文件)BytelOC ontextMEDIA。此工作流程包括解码播放过程、格式转换过程以及录制过程,实现了采集、编辑以及播放等功能。

针对基于FFmpeg的编码服务主要有两种实现方案,一种是先将FFmpeg编译为ffmper.exe,接着在ffmpeg.exe的基础上开发,另一种则是直接在FFmpeg项目源码上开发,虽然第二种方法运行效率以及稳定性上有很大的优势,但是这种方法的开发成本过高,且需专业的维护,并不适合用于小型媒资产系统,因此在多采用成本低,开发便捷的第一种方法。以ffmpeg.exe为例进行说明低码率的转换,主要代码为(部分):string tool= Application.StartupPath + “// ffmper.exe”; stcmd= sFileName + “-ab56-ar220500- b512 -r15-s 320 x 240”+dFileName;p.StarInfo.FilkeName=toolpath;FFmpeg编解码运行过程见图2所示。为支持新的视频格式,可下载其第三方库,产生的ffmper.exe以及libavcodec等文件替换其原先的文件,从而完成模块更新并支持其新格式。

图2 FFmpeg编解码过程

在编码处理过程中,用户通过用户界面对编码服务器进行调度和配置。编码服务器采用无界面后台程序工作模式进行,无需编码的硬件支持。由于需要进行大量的磁盘读取,同时编码过程需占用较多的CPU资源,因此,编码系统可以设计为单队列、多任务方式进行并行处理,这样可减少对系统资源的占用,提高处理速度。

3.4 编目系统设计

编目系统是实现检索功能的基础设计部分,主要是编目、著录原文件,设计需求包括媒体对象、素材目录、出版以及相关人员信息等,初步设计共包括题名、出版日期、内容描述、关键词以及资源类型等15个元素。为简便操作,采用每个资源对应一个资源编号。编目著录过程中应注意两个问题:(1)著录元数据的完整性;(2)音视频著录中部分字段的处理方法及区别。

3.5 其他系统设计

其他系统设计主要是存储管理系统、文件检索以及迁移备份等系统的设计,本文采取的存储管理系统是三级存数与SAN存储相结合的分级存储架构,安全性能与效率较高。文件检索系统主要是实现分类检索、精确检索等功能,并且用户能够实现检索结果的下载、播放等操作。迁移系统的设计依照数据的不同使用频次分别移到在线、近线、离线的存储设备中,依照模型涉及到时间、文件用户数量、I/O频率、对比度以及文件大小等参数。编码服务器在数据迁移过程中通过改变素材的封装方式和头文件,尽量减少对素材本身编码和码流的改变,避免重复编码以节约资源。数据的备份文本采用基于数据库的实时热备份技术,采用双网连接和盘阵技术,保证安全性和稳定性。此外媒资系统还具有转码加密、播放解码(密)、查询回放等其他功能。

4 结束语

综上所述,媒体资产管理系统通过应用FFmpge技术,系统优化了媒资系统中检索、转换和传输的若干问题,充分保证了数据的有效性和完整性。在今后的技术应用中,针对工作的实际需求,还需要对FFmpge技术的开发应用进行不断完善和探索。

参考文献:

[1]邓蕾蕾,张里荃.基于FFmpeg技术的媒体资产管理系统设计[J].吉林大学学报(理学版),2012(06):1218-1222.

[2]杨丽军.FFmpeg在媒体资产管理系统中的应用[J].现代电子技术,2011(15):147-149.

[3]刘建敏,杨斌.嵌入式Linux下基于FFmPeg的视频硬件编解码[J].单片机与嵌入式系统应用,2011(06):28-31.

作者简介:金晶(1978-),男,湖南长沙人,工程师,硕士,研究方向:广电工程、非线性编辑技术、新媒体技术。

作者单位:湖南广播电视大学教育信息技术中心,长沙 410004

基金项目:湖南电大校级课题(项目编号:XDK2013-C-4)。