最近研究了一下手机流媒体服务器的搭建,目的是实现通过3G手机看在线视频。
开始的时候研究了一下 Tudou手机版 ,可它哪并没有实现在线播放,因为视频地址是 http 协议的。参看了许多文章,终于了解到要用 RTSP 、MMS 这类。
RTSP 有一个来自 Apple 的开源项目:Darwin Streaming Server (DSS)
DSS 是跨平台的软件,可以在Linux、Mac OSX 或 Windows 等上面部署。
一、DSS Windows 安装教程:研究这个东西费了我好大的劲,一开始不知道视频还有专门针对流媒体的,以为只要用 MediaCoder 将视频转换成合适的格式,如:MPEG4 + AAC + MP4 / MPEG4 + AAC + 3GP 就可以放了,反复放到服务器上面去测试,VLC 和 QuickTime 都没法打开。于是又用工具打开 DSS 自带的几个示例视频看它们的格式,反复转换试不同的视频和音频编码和外壳,还是不行...郁闷死我了
在 DSS 的邮件列表里面找了找相关的文章,发现有讲好像要用特别的工具对视频 hint 一下,然后就可以在 RTSP 上面用了,说可以用 QuickTime Pro 或 VLC 来转换,我用 VLC 试了一下,文件菜单一个叫“流(s)”的功能,但试了还是不行,没看到文件有变动过。
于是再沿着 Hint 关键词在 Google 上面找文章,找到了 Nokia 论坛里面,看到这篇文章:http://discussion.forum.nokia.com/forum/showthread.php?t=125540 里面有说可以使用 Mp4box 对视频进行 hint
于是我在 http://www.videohelp.com/tools/mp4box 这里下载到了mp4box (不用下载GUI的,直接用命令行操作就好了,只用一条命名)
下载到到解压出后会有个叫 mp4box.exe ,用它在命令行下面运行
C:\Program Files\Darwin Streaming Server\Movies>mp4box mymovie.mp4 -hint
出现结果:
Hinting file with Path-MTU 1450 Bytes
Hinting track ID 201 - Type "mp4v:mp4v" (MP4V-ES) - BW 33 kbps
Hinting track ID 101 - Type "mp4a:mp4a" (mpeg4-generic) - BW 64 kbps
Saving mymovie.mp4: 0.500 secs Interleaving
流媒体视频就转换好了,现在文件大小就会有变动,变大了一些。
然后,再用 VLC 或 QuickTime 打开 rtsp://127.0.0.1:554/mymovie.mp4 试试能否播放吧!如果你有3G手机,可以直接用手机打开这个地址试一下。
三、附加资源 Apple’s Darwin Streaming Server On Centos 5.2 (如何在 CentOS 5.2 下面安装DSS)
以上部分是转自http://huacnlee.com/blog/deploy-mobile-streaming-server-by-dss的高手写的文章,写的比较详细。
经过测试,在电脑上测试能够成功播放,但是在手机上还是不能播放,不经意间看到了一篇关于手机使用net方式和使用wap方式的区别,wap方式使用于流量比较小的网络,所以我就把wap方式改成net方式,呵呵,熟悉的画面终于出现了,dss自带的3gp的视频能够播放了。欣喜之余想试试自己的3gp文件是否能够正常播放,于是把自己的视频文件放到指定的目录,用rtsp方式访问,提示“无法打开视频文件”,回来又看了看上面的第二部分,猜测可能没有对视频文件进行流化的原因,于是根据第二部分将文件进行hint,流程如下:cmd==》进入视频文件地址==》将下载的MP4box.exe复制到视频文件目录==》dos下执行 MP4box 1.3gp -hint 。执行后会给出一系列的相关信息,说明hint成功。用手机访问发现能够手机能够正常播放。
呵呵,终于成功了,不过在这过程中也走了不少弯路,以下再补充一下具体注意事项:
(1)若要进行使用外网访问,要开放端口,我使用的默认的544.
(2)3gp文件若不能正常播放,hint一下再试试。