首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

把学校直播的电视节目保留到本地

2013-10-22 
把学校直播的电视节目保存到本地有时候想看电视节目,但播放的时候自己可能在开会在吃饭在厕上等等,经常错

把学校直播的电视节目保存到本地

        有时候想看电视节目,但播放的时候自己可能在开会在吃饭在厕上等等,经常错过好多电视节目。每个学校都有电视转播的网站,从那里定时下载,到时候观看就啥都不耽误了,关键还能快进哈~开始搞起~

        学校的电视直播地址是http://video.ustc.edu.cn/tv.php,比如用vlc看凤凰卫视:


可以看到用的是RTSP协议,RTSP协议提供几个方法如下:

把学校直播的电视节目保留到本地

        非常简单,和HTTP协议类似,使用554端口。到这里,我还不知道直播的视频流是什么格式的,于是在截的包里接着找,发现DESCRIBE的响应包非常大,用了4个TCP分段才组成这个PDU,把这个PDU数据包取出来如下(太大了,截取重要部分):


这种ASF的视频格式我认为是落后的,所以没必要搞的很明白,能用就好。0x30 0x26就是ASF文件的开始,这个没错,果然是头信息。第二行前8个字节代表视频头的长度,这个地方很重要,我在这儿浪费了好长时间,它的长度不是0x94 0x0a 0x00 ... 0x00,而是翻过来,小端模式来看,和普通的TCP包段有所区别,很坑~所以它的包大小为:0x0a94,即2708字节。通过截取的数据包发现,SETUP发送两次,第一次先请求audio,同时获得sessionID,因为RTSP是有状态的协议,需要一个session来维持;第二次请求video,这时发送的请求包里必须带着sessionID。定义的代码如下:

php rtspdump.php -r rtsp://202.38.64.43/tv5 -a tcp -o tv.asf

        现在的码农大多数都不是从0开始闭门造车,各种代码资源git clone一下如探囊取物,很多自己想的东西都是有大神们之前做过了,何不直接拿来用呢?如果真想研究细致一点可以再细究,如果不想研究,比如我对这个ASF格式就不太喜欢,内心总感觉是注定要淘汰的东西,所以我也只是为了下载视频而做这件事儿,但有现成的程序(虽然是php的),我也就没有再做下去的理由了,花时间在更感兴趣的事情上罢~哈哈,这是我的小感悟,以后一定先搞好调研再搞起!最后,再感谢下linux版主~


转载请注明:转自http://blog.csdn.net/littlethunder/article/details/12875339


热点排行