Chinaunix首页 | 论坛 | 博客
  • 博客访问: 425669
  • 博文数量: 116
  • 博客积分: 7087
  • 博客等级: 少将
  • 技术积分: 1175
  • 用 户 组: 普通用户
  • 注册时间: 2005-02-19 23:32
文章分类

全部博文(116)

文章存档

2012年(1)

2011年(2)

2010年(10)

2009年(21)

2008年(18)

2007年(12)

2006年(21)

2005年(31)

我的朋友

分类:

2010-02-13 12:20:56

最近订购了一台ipod touch 32G ,但是供货商迟迟没有送货,于是只好先把手头的Windows Mobile用用好。

我现在有一台dopod s900的机器在用,这台机器的特点如下:

CPU_Clock: 528 MHz
CPU:
Browse devices based on MSM7201A
Width-of:Machine-Word: 32 bit
CPU-Core: ARM1136EJ-S
Instruction-Set: ARMv6

这台机器的CPU主频还算挺快,而且据说支持H264的硬解压

Graphical_subsystem

Display+Type: color transflective TFT display
Display:Color+Depth: 16 bit/pixel (65536 scales)
Display-Diagonal: 2.8 " (70 millimetres)
Display;Resolution: 480 x 640 (307200 pixels)
Viewable-Display;Size: 1.65 " x 2.2 " (42 x 56 millimetres)
Dot-Pitch: 290.3 pixel/inch (0.0875 millimetre/pixel)

缺点是屏幕太小,只有2.8寸,分辨率倒是支持640x480

对于这样的机器,使用什么样的视频编码和音频编码,以充分发挥机器的潜力呢?

首先来看看视频编码。目前最热的编码就是H.264啦。它的特点如下 :

H.264最大的优势是具有很高的数据压缩比率,在同等图像质量的条件下,H.264的压缩比是MPEG-2的2倍以上,是MPEG-4的1.5~2倍。 举个例子,原始文件的大小如果为88GB,采用MPEG-2压缩标准压缩后变成3.5GB,压缩比为25∶1,而采用H.264压缩标准压缩后变为 879MB,从88GB到879MB,H.264的压缩比达到惊人的102∶1!H.264为什么有那么高的压缩比?低码率(Low Bit Rate)起了重要的作用,和MPEG-2和MPEG-4 ASP等压缩技术相比,H.264压缩技术将大大节省用户的下载时间和数据流量收费。尤其值得一提的是,H.264在具有高压缩比的同时还拥有高质量流畅 的图像。
音频编码嘛就选择mp3好了,毕竟便携设备的音响效果好不到哪里去 。

基于以上特点,适合在手机上播放的影片最好是h264编码,分辨率可以放到640x480,以充分利用机器的能力。

定好这些参数要求之后,采用什么工具呢?网上这种视频转换工具很多,简单易用的都是要收费的。免费的软件一般都会比较复杂。免费软件中,最为普遍的是mencoder,这还是款开源软件,命令行工具,它支持多个系统,而且也有很多前端,虽然这些前端也不一定好用。

虽然这个命令行工具有很多参数需要自行设置,但是好在网上相关的资源也很多,一般情况下参考一下别人的参数,就可以解决自己的问题。

现在手里有一部老友记,是mkv格式的。这里简单介绍一下mkv格式。
mkv其实是个容器,里面可以存放video,audio,subtitle等信息,而video,audio的格式是另外指定的。很可能视频是realvideo格式的,或者mpeg4格式的,audio则有可能是mp3或者aac格式的。通过一个文件,就把播放电影需要的各类信息全部囊括了,应该说是一个不错的构想。

与mkv类似的,还有苹果公司的mov格式,设计的思路也差不多,这里就不展开了。

mencoder的基本命令格式如下:

mencoder inputfile -ovc videoopts -oac audioopts -sub subopts -o outputfile

指定输入文件,然后指定输出的视频参数,音频参数,以及字幕参数,最后给出一个输出的文件名,就可以了。
以下是个例子

mencoder 22.rm -aspect 4:3 -ovc x264 -x264encopts bitrate=600:level_idc=41:bframes=0:frameref=0:nopsnr:nossim -vf scale=640:480 -audiofile 22.mp3 -oac copy -sub 22.srt -subcp utf8 -o 22.avi


这里用到的几个文件,22.rm,22.mp3,22.srt都是从22.mkv文件中剥离出来的,使用的是mkvextract工具。22.rm 是视频部分,22.mp3是音频部分,22.srt是字幕部分

考虑到h264编码是比较先进的编码方式,所以想尝试用h264对原视频进行转化。这里用到几个参数的含义解释一下:

bitrate是比特率,如果影片的清晰度高,比特率也要高,才不会丢失细节,但是比特率高,文件就大,所以要折衷处理.实际上如果放在手机上看,600k的bitrate就够了。

level_idc用于设置视频的硬件加速级别。对于高清的视频流(High Definition Video),要设置为41,对于标清的视频流(Standard Definition Video),要设置为31;遇到合适的硬件设备,就可以为之启用硬件加速

nopsnr,nossim都是为了加快编码速度而设置的,目的是减少部分不关键的计算量,提高编码速度

由于mencoder在封装av流时,支持得最好的容器是avi格式,所以对于转化后的视频音频流,采用avi封装。
这里主要对视频流进行了转码,由real40格式,转为h264格式,将bitrate提高,纵宽比变成4:3,分辨率改为640x480,音频部分因为以前就是mp3了,所以就不再转换。字幕部分需要告诉mencoder,字幕的字符集是utf8,否则显示就会有问题。

这样转出来的文件,放在s900上看,还是有问题,因为windows media player mobile 10 不识别avi容器。
后来在网上找到微软自己出的编码器,microsoft expression encoder 3.这个编码器有个免费的版本,可以用vc-1格式对视频进行转码。我尝试了一下,可以转为wmv格式。通过expression encoder来编码时,可以为视频流增加一个audio overlay,将音频和视频整合在一起。但是实际效果并不好,出现了音画不同步。

这样转出来的视频文件,quick time 可以正确识别,音画同步,而且字幕显示正常。然后通过quick time还可以把视频转为ipod能看的格式,这样就很完美了。

对于quicktime的文件,如果需要加上字幕,可以有2种方式。一种是在mov文件中加入text track,这需要quicktime pro帮助;一种是通过一个xml格式的配置文件,对视频流,音频流,字幕进行外部定义,播放器参考配置文件,准确实现3者的整合。看下来,似乎后者更加方便。


在mac os x下字幕的压制没有遇到问题,但是在linux下,字幕就总是一条横线。一开始以为是字符集的问题,但是就算是加上了 -subcp utf8 ,也没改变。后来考虑到以前曾看到过字幕和字体库也有关系,所以就上网搜了以下。发现可以指定字体文件。但是并不成功。摸索了半天,总算找到一个方法。

1.首先要找到一个中文的truetype字体文件。linux上一般自带,/usr/share/fonts/truetype。
2.利用linux自带的字体安装软件安装字体,并记录下字体的名称。在ubuntu 9.10里,双击字体文件,就能打开一个窗口,窗口旁还有字体信息,以及安装按钮。点击安装,就行了
3.在mencoder命令行里指定字体名,以及字体大小,就搞定了。






阅读(1518) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~