一种多媒体文件的录制方法和装置的制造方法_3

文档序号:9330997阅读:来源:国知局
操作系统的 Java层进行了扩展。
[0154]具体而言,在操作系统的Java层中,多媒体录制对象MediaRecorder具有传输流 TS格式的设置接口,多媒体录制对象MediaRecorder可以通过该设置接口将传输流TS格式 设置为输出格式。
[0155] 步骤204,通过预置的摄像头源类CameraSource从摄像头采集视频数据;
[0156] 在本发明实施例中,数据源包括摄像头,多媒体数据包括视频数据,则可以通过 CameraSource从摄像头采集视频数据,如YUV数据。
[0157] 步骤205,通过预置的音频源类AudioSource从麦克风采集音频数据。
[0158] 在本发明实施例中,数据源包括麦克风,多媒体数据包括音频数据,则可以通过 AudioSource从麦克风采集音频数据,如PCM数据。
[0159] 步骤206,由所述多媒体录制服务实例StageFrightRecorder创建编码器 OMXCodec;
[0160] 步骤207,由所述编码器OMXCodec按照所述编码格式对所述多媒体数据进行编 码;
[0161] 录制的多媒体数据传输过程是消息驱动的,数据源产生多媒体数据的消息被注入 OMXCodec的消息队列。
[0162] OMXCodec检测到该消息可以调用MediaSource的read函数来获取视频数据、音频 数据,按照设定的编码格式进行编码,压缩视频数据、音频数据为各种编码格式的数据。
[0163] 步骤208,由所述多媒体录制服务实例StageFrightRecorder将预置的写传输流 对象MPEG2TSWriter设置合成器MediaWriter;
[0164] 步骤209,由所述合成器MediaWriter将所述多媒体数据封装为所述传输流TS格 式的第一多媒体文件。
[0165] 本发明实施例中,为了实现传输流TS格式的多媒体文件的录制,在操作系统的 Native层进行了扩展。
[0166] StagefringRecorder可以判断设置的文件输出格式,如果是传输流TS格式,贝lj仓ij 建MPEG2TSWriter对象作为MediaWriter,将压缩好的视频数据、音频数据按照传输流TS格 式写入到多媒体文件中。
[0167] 除此之外,为了满足传输流TS格式的多媒体文件的存储,本发明实施例对 MPEG2TSWriter的功能进行扩展,实现了文件尺寸检测功能,从而在写入数据达到设置的文 件大小阈值时可以通知控制层做文件切换操作。
[0168] Android原始设计中传输流TS的输出对象是网络接口设备,而本发明实施例在 StageFrightRecorder框架中增加MPEG2TSWriter对象,提供了本地文件系统的传输流TS 的写入支持,实现了传输流TS格式的多媒体文件的生成。
[0169] 参照图3,示出了本发明的一种多媒体文件的播放方法实施例1的步骤流程图,具 体可以包括如下步骤:
[0170] 步骤301,查找在先针对多个传输流TS格式的多媒体文件生成的配置文件;
[0171] 在本发明实施例中,该多个多媒体文件归属同一个完整的视频,在先已针对该多 个多媒体文件生成配置文件。
[0172] 在具体实现中,多个多媒体文件在界面显示为一个完整的视频,当用户通过点击 等操作触发该多个多媒体文件的播放时,可以由播放控制器VideoController根据该完整 的视频的信息(如名称)查找在先针对多个传输流TS格式的多媒体文件生成的配置文件。
[0173]由于配置文件一般为XML等格式,因此,播放控制器VideoController读取配置文 件后,可以交给配置文件解析器VideoListParser进行解析。
[0174] 步骤302,从所述配置文件中读取文件总信息和每个多媒体文件的文件子信息;
[0175] 文件解析器VideoListParser可以通过继承Java的XML解析类(属于JavaAPI 接口)并实现自己的解析逻辑完成。
[0176] 文件解析器VideoListParser接收到配置文件后,可以对配置文件进行解析,获 取配置文件中的文件总信息和每个多媒体文件的文件子信息。
[0177] 进一步而言,文件解析器VideoListParser可以先解析根节点,获取这个完整的 视频的文件总信息,然后再一次解析每个字节点,获取文件子信息,并将解析后的文件子信 息放到一个集合中保存。
[0178] 在具体实现中,多媒体文件的名称可以配置有时间信息;
[0179] 文件子信息按照时间信息排序,包括基于时间信息计算的时长信息、路径信息中 的至少一者;
[0180] 文件总信息包括累加每个多媒体文件的时长信息获得的总时长信息、视频名称、 视频画面大小中的至少一者。
[0181] 解析后文件总信息和每个多媒体文件的文件子信息的数据结构跟配置文件结构 类似,由文件解析器VideoListParser返回播放控制器VideoContro11er〇
[0182] 步骤303,按照文件总信息和每个多媒体文件的文件子信息调用播放器播放所述 传输流TS格式的多媒体文件。
[0183] 在具体实现中,播放控制器VideoController调用播放器MyVideoView,将相应的 文件总信息和文件子信息发送至播放器MyVideoView,控制播放器MyVideoView播放相应 的多媒体文件。
[0184] 其中,播放器MyVideoView可以参考Android系统播放控件VideoView实现,进一 步而言,是多媒体播放器MediaPlayer和表面窗口SurfaceView实现。
[0185] 在本发明的一种优选实施例中,步骤303可以包括如下子步骤:
[0186] 子步骤S21,将至少部分文件总信息发送至播放器进行初始化操作;
[0187] 在本发明实施例中,播放控制器VideoController可以将至少部分文件总信息送 至播放器MyVideoView,播放器MyVideoView可以按照该文件总信息进行初始化操作。
[0188] 如,播放控制器VideoController将总时长信息发送至播放器MyVideoView,以播 放器MyVideoView在其UI(UserInterface,用户界面)生成相应的播放进度条,提示整个 视频文件的播放进度;
[0189] 和 / 或,
[0190] 又如,播放控制器VideoController将视频名称发送至播放器MyVideoView,播放 器MyVideoView可以在其UI进行展示;
[0191] 和 / 或,
[0192] 播放控制器VideoController将视频画面大小中至播放器MyVideoView,以调整 播放器的大小,即初始化初始化表面窗口SurfaceView的长度和宽度。
[0193] 子步骤S22,当初始化操作完成时,将第一个多媒体文件的路径信息发送至播放 器,以调用播放器从所述路径信息读取多媒体文件进行播放。
[0194] 待初始化操作完成后,播放控制器VideoController可以设置播放源为第一个多 媒体文件。
[0195] 具体而言,播放控制器VideoController可以调用MediaPlayer的setDatasource 方法将第一个多媒体文件的路径信息发送给播放器MyVideoView。
[0196] 对视频解码后传递给MediaPlayer绑定的Surface,即初始化的 SurfaceView(Surface对应了 一块屏幕缓冲区,每个window对应一个Surface, SurfaceView是画在Surface上的),播放开始。
[0197] 在本发明的另一种优选实施例中,步骤303可以包括如下子步骤:
[0198] 子步骤S31,当接收到播放器发送的多媒体文件的播放完毕事件时,将下一个多 媒体文件的路径信息发送至播放器,以调用播放器从所述路径信息读取多媒体文件进行播 放。
[0199] 若当前的多媒体文件播放完毕,则播放器MyVideoView可以发送播放完毕事件 oncomp1ete通知播放控制器VideoContro11er,播放控制器VideoContro11er按照排序,将 位于当前的多媒体文件的下一个多媒体文件,设置播放源,进行顺序播放。
[0200] 在本发明的另一种优选实施例中,步骤303可以包括如下子步骤:
[0201] 子步骤S41,接收播放器发送的定位操作消息;所述定位操作消息中包括位于总 时长信息中的定位时间点;
[0202] 子步骤S42,查找所述定位时间点所属的多媒体文件;
[0203] 子步骤S43,计算所述定位时间点在所属的多媒体文件中的时长信息的时间偏移 量;
[0204] 子步骤S44,将所述多媒体文件的路径信息和时间偏移量发送至播放器,以调用播 放器从所述路径信息读取多媒体文件、从所述时间偏移量开始播放。
[0205] 在本发明实施例中,用户可以通过拖动播放器MyVideoView的UI中的播放进度 条,将播放点拖动到定位时间点delta,触发定位seek操作。
[0206] 播放器MyVideoView在检测到定位seek操作时,发送消息通知播放控制器 VideoController〇
[0207] 播放控制器VideoController根据定位seek操作到的定位时间点delta以及各 个总时长信息,即确认定位时间点delta是属于第几个多媒体文件的时间段,将该多媒体 文件响应到相应的位置。
[0208] 例如,在录制时,录制了三个多媒体文件,前两个多媒体文件的时长信息均为10 分钟,第三个多媒体文件的时长信息为5分钟,即总时长信息即为25分钟。
[0209] 如果用户定位seek操作到的定位时间点为第21分钟,第21分钟属于到第三个多 媒体文件,在第三个多媒体文件的时间偏移量为第1分钟。
[0210] 本发明实施例通过读取配置文件中的文件总信息和每个多媒体文件的文件子信 息,调用播放器播放多个传输流TS格式的多媒体文件,由于传输流TS格式简单,无需复杂 的解封装操作,大大提高了在播放时的解封效率,避免了在播放过程中的卡顿现象。
[0211] 参照图4,示出了本发明的一种多媒体文件的播放方法实施例2的步骤流程图,具 体可以包括如下步骤:
[0212] 步骤401,通过路径信息读取多媒体文件;
[0213] 若通过setDataSource方法设置了某个多媒
当前第3页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1