Picture
T感觉腰酸酸的,眼睛挺干,精神头不大好。最近这几天以来,T几乎试遍了所有的办法,可我始终无法看到从我的流媒体服务器发出去的H.264视频被播放出来。T定睛看着屏幕上那块他希望看到视频的区域,那里依然干净。

喝水,揉太阳穴,用力叹气。根据上次抓到的数据包修改服务器的消息发送序列。好,再播放一遍。唔,依然一片空白。于是将Wireshark里面捕获的TCP流Dump到一个二进制文件。打开文件比较工具,逐字节的人肉解析出消息队列。希望能从中看出点让自己呐喊的差别来。

可是两边的消息队列几乎一模一样。

程序员琐碎,沉溺于细节的职业本性使T没有一点气急败坏的样子。他目光呆滞,后背瘫倒椅子上,抬头望着天花板。闭上眼睛后,他觉得自己的大脑就像一个空荡荡的房间一样了,那个恼人的问题就像弹珠球一样咚——咚的轻敲着他的脑壁。

耳旁是无休止的键盘的噼里啪啦声。。。

。。。。。。。。

T睁开睡意依旧的眼睛。下意识的在搜索框里面输入“RTMP 握手”。搜索结果中有一条中出现了“H264”,“无法播放”等让T产生强烈共鸣的字眼。T觉得自己心跳变快了一些。于是他点了那个链接。那篇文章非常有用,作者也遇到了类似的问题。原来,在Flash Player 10.x后,Adobe修改了RTMP握手的细节,在新的握手过程中,服务端需要用包含”Genuine Adobe Flash Media Server 001"的一个字符数组加密客户端握手数据的一段,然后将其包含在握手回应中的特定区域中。否则Flash Player就会停止对H.264和AAC编码的支持。

商业公司这种下三滥的自我保护手段很适合作为谈资,T自然不会放着这么有意思的话题不讲讲。T只是很惊讶自己居然就这么把原因找到了,只是感慨程序员的世界时常会多么杂乱无章、充满意外。。。T目前不会有更多的感慨了,因为他实在太累了。
dora
8/18/2010 12:25:59 pm

呃。。膜拜一下

Reply



Leave a Reply.