发明内容
本发明的目的在于提供一种用于无线网络和PDA、手机、PDA手机等无线手持式设备的MTV的播放方法。
上述目的可通过以下的技术措施来实现:
(1)通过文件操作函数打一个所述用于无线网络和无线手持设备的MTV文件;
(2)读取文件起始的头信息(FHDR数据块),获取MTV文件信息,包括MTV文件版本号、文件长度、视频数据起始位置、音频数据起始位置、以及字幕数据的起始位置;根据MTV文件版本号决定是否支持播放该MTV文件;
(3)通过一个内容分流器从MTV文件中提取出音频、视频及字幕数据,并分别送入对应的解码器中解码;
(4)音频解码器、视频解码器和文字解码器接收到来自分流器的音频、视频及字幕数据,将对其解码并同步处理后并输出到各自的设备中播放。
本发明将来自分流器的数据将首先被放置在解码器前的一块缓冲区内,解码器从缓冲区中取出数据并解码;如果缓冲中的数据不断减少,说明解码器的解码速度快过分流器的处理速度,解码器将通知分流器加快数据的处理;反之解码器则将通知分流器降慢对数据的处理。
本发明当音频数据中存在多个通道,各个通道的音频内容将分别送入不同喇叭中,以形成立体声效果。
本发明中如果视频图像的大小与显示设备屏幕的大小不一致,还需对图像进行缩放、裁减。
由于人的听觉敏感程度要大于视觉的敏感程度,本发明在同步处理时保持音频的播放速度,改变视频的播放速度来同步两者的播放速度。
本发明针对无线手持设备CPU处理能力较低、内存空间较少、耗电量不能太高,设计出全新的MTV文件格式以及播放方法,使得人们在手持设备上即可欣赏到精彩的MTV内容。
具体实施方式
MTV文件格式如下:
文件由若干个数据块组成,每个数据块包含了3个部分内容:
数据类型(CHUNK_TYPE):4字节长度的类型标识,标识该数据块为何种类型的数据。
数据长度(CHUNK_SIZE):4字节长度的无符整型,给出了数据字段中的数据长度。
数据字段(CHUNK_DATA):该数据块的数据字节。
各字段数据均采用网络字节顺序(BIG-ENDIAN)存储,以便能够在无线网络上传输。数据块主要有以下几类:
1.文件头数据块(FHDR_CHUNK)
该数据块定义了文件的相关信息,是文件起始位置开始的第一个数据块。
数据类型:`FHDR`
数据长度:24
数据字段:
内容 |
长度 |
文件版本号 |
2字节 |
扩展信息块标识 |
2字节 |
文件长度 |
4字节 |
播放时长 |
4字节 |
视频数据偏移 |
4字节 |
音频数据偏移 |
4字节 |
字幕数据偏移 |
4字节 |
2.视频数据块(VIDE_CHUNK)
该数据块用于存储MTV文件中的视频数据信息。
数据类型:`VIDE`
数据长度:N+4
3.音频数据块(AUDI_CHUNK)
该数据块用于存储MTV文件中的音频数据信息。
数据类型:`AUDI`
数据长度:N+4
4.字幕显示块(SUBT_CHUNK)
字幕显示块在文件中连续存放。字数字段为零,表示这是最后一个字幕显示块。
数据类型:`SUBT`
数据长度:N*4+20
数据字段:
内容 |
长度 |
字幕标识号 |
2字节 |
字数 |
2字节 |
开始显示时间 |
4字节 |
停止显示时间 |
4字节 |
播放起始时间 |
4字节 |
显示坐标X |
2字节 |
显示坐标Y |
2字节 |
字幕内容 |
N*2字节 |
文字延时 |
N*2字节 |
播放过程如下:
1.通过文件操作函数打一个所述用于无线网络和无线手持设备的MTV文件。
2.读取文件起始的头信息(FHDR数据块),获取MTV文件信息,包括MTV文件版本号、文件长度、视频数据起始位置、音频数据起始位置、以及字幕数据的起始位置。播放器将根据MTV文件版本号决定是否支持播放该MTV文件。如果该文件符合播放标准,播放器将开始播放MTV。
3.在播放过程中,一个内容分流器将从MTV文件中提取出音频、视频及字幕数据,并分别送入不同的解码器中解码。
4.来自分流器的数据将首先被放置在解码器前的一块缓冲内,解码器从缓冲中取出数据并解码。如果缓冲中的数据不断减少,说明解码器的解码速度快过分流器的处理速度,解码器将通知分流器加快数据的处理;反之解码器则将通知分流器降慢对数据的处理。
5.音频解码器接收到来自分流器的音频数据,将对其解码并输出到音频设备中播放。如果数据中存在多个通道,各个通道的音频内容将分别送入不同喇叭中,以形成立体声效果。
6.视频解码器接收到来自分流器的视频数据,将对其解码成一桢桢的图像数据,并依次送入显示设备上输出。如果视频图像的大小与显示设备屏幕的大小不一致,还需对图像进行缩放、裁减等操作。为了加快视频显示处理的速度,降低资源消耗,解码图像数据会被直接写入显示缓冲区中,从而达到快速显示的效果。
7.MTV播发过程中还需同步视频、音频的播放。由于人的听觉敏感程度要大于视觉的敏感程度,因而需要保持音频的播放速度,改变视频的播放速度来同步两者的播放速度。
8、播放完毕,释放所有资源,关闭MTV文件。
下面以歌曲《摇太阳》的MTV文件的片段的制作过程为例:
·字幕文件片段如下,其中”//”符号后的部分为本行前半部分的注释。
一、文件头数据
00000000h:46 48 44 52 00 00 00 18 01 00 00 00 00 47 92 B6;FHDR.........G挾00000010h:00 00 00 E6 00 00 00 20 00 2B 84 C9 00 47 85 CE;...?.. .+勆.G呂 |
46 48 44 52 //FHDR数据类型标识符,表示以下内容为文件头数据块
00 00 00 18 //数据块大小,24字节
01 00 //文件版本号,本文件为1.0
00 00 //扩展信息块标示
00 47 92 B6 //文件大小,以字节为单位。本文件有4,690,614字节
00 00 00 E6 //MTV播放时间长度。230秒
00 00 00 20 //视频数据的起始位置。32字节的地方为视频块的起始位置
00 2B 84 C9 //音频数据的起始位置
00 47 85 CE //字幕数据的起始位置
二、视频数据块
00000020h:56 49 44 45 00 2B 84 A1 4D 4A 50 47 FF D8 FF E1;VIDE.+劇MJPG ??
00000030h:00 04 00 C8 FF DB 00 43 00 08 06 06 07 06 05 08;...??C........
00000040h:07 07 07 09 09 08 OA 0C 14 OD 0C OB 0B 0C 19 12;................
56 49 44 45 //VIDE数据类型标识符,表示下面的内容为视频数据块
00 2B 84 A1 //视频数据块的数据长度
4D 4A 50 47 //视频格式标识,表示为MJPEG压缩格式之后的是视频数据
三、音频数据块
002b84C0h:79 0B 7F E3 E2 80 3F FF D9 41 55 44 49 00 1c 00;y.汊
?貯UDI...
002684d0h:FD 4D 50 33 58 FF FB 50 C4 00 00 00 00 00 00 00;
P3X
?......
002b84e0h:00 00 00 00 00 00 00 00 00 00 49 6E 66 6F 00 00;..........Info..
41 55 44 49 //AUDI数据类型标识符,表示下面的内容为音频数据块
00 1C 00 FD //音频数据块长度
4D 50 33 58 //音频数据格式’MP3X’,表示此文件使用的是MP3之后的是音频数据
四、字幕数据块
004785c0h:55 55 55 55 55 55 55 55 55 55 55 55 55 55 53 55;UUUUUUUUUUUUUUSU
004785d0h:42 54 00 00 00 24 00 01 00 04 00 00 6C D4 00 00;BT...$......1?.
004785e0h:7E 79 00 00 7A 99 00 00 00 00 64 47 67 65 64 47;~y..z?...dGgedG
004785f0h:53 BB 01 91 00 C8 00 AA 00 DD 53 55 42 54 00 00;S????軸UBT..
00478600h:00 30 00 02 00 07 00 00 7F 05 00 00 86 D8 00 00;.0...... ...嗀..
00478610h:7F EB 00 00 00 00 64 47 78 8E 70 B9 70 B9 76 84;?...dGx巔筽箆?
00478620h:91 D1 9E C4 00 B5 01 22 00 F0 01 05 00 FA 00 DC;懹災.?″.?..??
00478630h:01 4B 53 55 42 54 00 00 00 24 00 03 00 04 00 00;.KSUBT...$......
53 55 42 54 //SUBT数据类型标识符,表示下面的内容为字幕显示块
00 00 00 24 //字幕数据块长度
00 01 //字幕标识号,表明为第1个字幕
00 04 //本字幕的字数
00 00 6C D4 //字幕开始显示的时间(毫秒)
00 00 7E 79 //字幕的消隐时间
00 00 7A 99 //字幕开始滚动的时间(第一个字)
00 00 //字幕显示的x坐标位置
00 00 //字幕显示的y坐标位置
64 47 67 65 64 47 53 BB//以unicode编码的字幕文字内容
01 91 00 C8 00 AA 00 DD//每两个字节对应了一个文字的滚动时间