的一种多媒体文件的播放方法实施例1的步骤流程图;
[0084] 图4是本发明的一种多媒体文件的播放方法实施例2的步骤流程图;
[0085] 图5是本发明的一种多媒体文件的录制装置实施例的结构框图
[0086] 图6是本发明的一种多媒体文件的播放装置实施例的结构框图。
【具体实施方式】
[0087] 为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实 施方式对本发明作进一步详细的说明。
[0088] 参照图1,示出了本发明的一种多媒体文件的录制方法实施例1的步骤流程图,具 体可以包括如下步骤:
[0089] 步骤101,接收到多媒体文件的录制请求时,设置录制参数;
[0090] 需要说明的是,本发明实施例可以应用于具有摄像头的移动通信设备,例如,手 机、平板电脑、智能可穿戴设备(如智能手表)等等。
[0091] 当然,本发明实施例还可以应用于其他终端设备,如智能电视、智能照相机等等, 本发明实施例对此不加以限制。
[0092]这些移动通信设备大多可以支持WindowsPhone、Android(安卓)、I0S、Windows等 操作系统,通常可以运行录制视频的应用,如摄像头应用,实现录像功能。
[0093] 在具体实现中,多媒体文件的录制请求可以是指用户通过摄像头应用点击指定的 控件(如录像控件)等方式发出的进行录像的指示。
[0094] 当接收到录制请求使,则可以设置录制参数。其中,录制参数可以包括数据源 (DataSource)、编码格式、文件输出格式;
[0095] 进一步而言,文件输出格式设置为传输流TS格式。
[0096] 以下对传输流TS格式涉及的几个概念进行介绍:
[0097] ES(ElementaryStream):基本流,不分段的音频、视频或其他信息的连续码流。
[0098] PES(PacketElementalStream):把基本流ES分割成段,并加上相应头文件打包 形成的基本码流。
[0099] TS(TransportStream):传输流,将具有共同时间基准或独立时间基准的一个或 多个PES组合(复合)而成的单一数据流。
[0100] 当然,上述录制参数只是作为示例,在实施本发明实施例时,可以根据实际情况设 置其他录制参数,例如,分辨率、视频帧率、文件输出录制,等等,本发明实施例对此不加以 限制。另外,除了上述录制参数外,本领域技术人员还可以根据实际需要采用其它录制参 数,本发明实施例对此也不加以限制。
[0101] 步骤102,通过所述数据源采集多媒体数据;
[0102] 当开始录制视频时,可以通过数据源采集原始的多媒体数据,例如,视频数据、音 频数据。
[0103] 步骤103,按照所述编码格式对所述多媒体数据进行编码;
[0104] 对多媒体数据进行编码,指通过特定的压缩技术,如H. 261、H. 263等,将某个视频 格式的文件转换成另一种视频格式文件的方式。
[0105] 步骤104,将编码之后的多媒体数据按照所述传输流TS格式封装至第一多媒体文 件。
[0106] 传输流TS格式的特点之一,是要求从视频流的任一片段开始都是可以独立解码 的。
[0107] 从结构上说,每个传输流文件中可以包含一系列固定长度为188Bytes的传输流 包(简称为TS包),扩充过的TS包还可以包括时间戳。
[0108] 每个TS包由4Bytes长的包头和其后的184Bytes的载荷组成,184Bytes的载荷为 有用信息空间,用于传送已编码的视音频数据流。
[0109] 在本发明的一种优选实施例中,步骤104可以包括如下子步骤:
[0110] 子步骤S11,在所述多媒体文件的文件名中配置时间信息。
[0111] 传输流TS格式的多媒体文件是流式数据,没有专门的文件头,否则不能满足从任 何时候开始都能解码的要求。
[0112] 但是,这也带来另外一个问题,就是每个分段的多媒体文件保持的视频长度不好 计算。
[0113] 因此,在本发明实施例中,在文件名中配置时间信息,以方便分段的多媒体文件的 视频长度计算。
[0114]具体来说,即在多媒体文件的文件名的构成包含时间信息。
[0115] 在实际应用中,时间信息可以包括封装起始时间(即开始封装多媒体文件的时 间)、封装完成时间(即完成封装多媒体文件的时间);
[0116] 当开始封装多媒体文件时,在多媒体文件的文件名中,将当前时间配置为封装起 始时间;
[0117] 当完成封装多媒体文件时,在多媒体文件的文件名中,将当前时间配置为封装完 成时间。
[0118] 例如,某个多媒体文件在2015年1月1日01:00开始封装,则此时可以 对该多媒体文件配置文件名为"videoclipl_201501010100.ts",若该多媒体文件 在2015年1月1日01:10开始封装,则可以对多媒体文件的文件名修改为"videocl ipl_201501010100_201501010110.ts"。
[0119] 步骤105,当所述第一多媒体文件超过预设的文件大小阈值时,将编码之后的多媒 体数据按照所述传输流TS格式封装至第二多媒体文件。
[0120] 在本发明实施例中,可以按照文件大小阈值划分多媒体文件,当文件尺寸达到文 件大小阈值的上限时,要实时通知录制视频的应用,进行下一个多媒体文件的封装,直至录 制完成。
[0121] 即一个完整的视频,可以录制成多个多媒体文件。
[0122] 本发明实施例将数据源采集的多媒体数据在编码之后,封装成多个传输流TS格 式的多媒体文件,由于传输流TS格式简单,无需复杂的封装操作,大大降低了时延,大大提 高了在录制时的封装效率,避免了在录制过程中的卡顿现象,有效缓解在切换时的丢帧问 题。在本发明的一种优选实施例中,该方法还可以包括如下步骤:
[0123] 步骤106,当所有多媒体文件封装完成时,生成配置文件;
[0124] 在本发明实施例中,一个完整的视频可以录制成多个多媒体文件,该完整的视频 可以由用户的操作进行定义,如,在录制视频的应用接收到录制请求以及结束录制的请求 之间封装的多媒体文件视为一个完整的视频。
[0125] -个完整的视频的所有多媒体文件(包括第一多媒体文件、第二多媒体文件)完 成封装时,生成对应的配置文件,可以为XML(ExtensibleMarkupLanguage,可扩展标记语 言)等格式,用于控制多个多媒体文件的播放。
[0126] 其中,所述配置文件中包括文件总信息和每个多媒体文件的文件子信息;
[0127] 所述文件子信息按照时间信息排序,包括基于所述时间信息计算的时长信息、路 径信息中的至少一者;
[0128] 所述文件总信息包括累加每个多媒体文件的时长信息获得的总时长信息、视频名 称、视频画面大小中的至少一者。
[0129] 配置文件的示例可以如下:
[0130]
[0131] 其中,Baselnfos为文件总信息,即整个视频的视频信息。
[0132] 在Baselnfos中的Name为视频名称,即整个视频的名称,可以在录制的时候在操 作界面由用户来命名;
[0133] 在Baselnfos中的Duration为总时长信息;
[0134] 在Baselnfos中的SegmentCount为多媒体文件的数量;
[0135] 在Baselnfos中的Width为视频画面的宽度、High为视频画面的高度,共同用于 表征视频画面大小。
[0136] Segment为文件子信息,即多媒体文件的视频信息。
[0137] 在Segment中的Name为多媒体文件的文件名;
[0138] 在Segment中的Duration为多媒体文件的时长信息;
[0139] 在Segment中的FilePath为多媒体文件的路径信息。
[0140] 参照图2,示出了本发明的一种多媒体文件的录制方法实施例2的步骤流程图,该 方法实施例可以应用在Android系统中,Android系统是一种基于Linux的自由及开放源代 码的操作系统,大致可以划分为四个层,从高层到低层分别是应用程序层(Applications)、 应用程序框架层(ApplicationFramework)、系统运行库层(Libraries)和Linux核心层 (LinuxKernel)〇
[0141] 该方法实施例具体可以包括如下步骤:
[0142] 步骤201,创建多媒体录制对象MediaRecorder;
[0143] Android系统是在的Linux系统上增加了Java虚拟机Dalvik,并在Dalvik虚拟 机上搭建了一个JAVA的ApplicationFramework,应用程序是基于JAVA的Application Framework之上运行的,因此,大致可以将ApplicationFramework划分为Java层和Native 层。
[0144] 在本发明实施例中,录制视频的应用可以在创建一个Java层的MediaRecorder对 象,实现录音和录像。
[0145] 步骤202,由所述多媒体录制对象MediaRecorder对象创建多媒体录制服务实例 StageFrightRecorder;
[0146] MediaRecorder对象是通过应用程序框架层的录制服务模块MPS创建录制服务实 例--StageFrightRecorder,控制多媒体文件的录制。
[0147] 其中,StagefrightRecorder是MPS创建的用于录制操作的实体对象。
[0148] 录制视频的应用和MPS之间通过AIDL接口实现进程间通信,为了摄像头应用开发 方便,Android系统提供了封装好的帮助类。
[0149] 如录制视频的应用通过MediaRecorder对象和MediaRecorderClient实现和MPS 交流。
[0150] MediaRecorder对象是运行在录制视频的应用的进程空间里面,代表MPS, MediaRecorderClient运行在多媒体服务器进程空间里面代表录制视频的应用。
[0151] 步骤203,由所述多媒体录制对象MediaRecorder设置录制参数;
[0152] 录制参数可以包括数据源、编码格式、文件输出格式,该文件输出格式设置为传输 流TS格式;
[0153] 本发明实施例中,为了实现传输流TS格式的多媒体文件的录制,在