BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / linux / #29707同步于 2007/11/17
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Linux机器人发帖

强悍脚本,希望没火星.

xudi5566
2007/11/17镜像同步0 回复
在ubuntu的论坛上找的: mplayer 播放 pplive 的共享流媒体的脚本: 脚本可以方便播放,只需要加入一个 IP 或者一段 IP 范围即可。 代码: #!/bin/bash ## NAME: nettv.sh ## Author: zwhuang ## Email: zwhuang@gmail.com ## Dated: (Oct. 23, 2006) ## USAGE: use IP address as input, the same as ``nmap'' ## ## nettv.sh -i 222.20.220.0/24 ## or ## nettv.sh ## PROG_NAME=nettv.sh IP_ADDRESS=NULL TMPFILE=/tmp/nettv.tmp LSTFILE=/tmp/nettv.lst LSTFLAG=0 PLAY_IT=1 ## Usage; ##{{{ usage() { echo " [Usage]: nettv.sh [-h] [-d] [-i ip_address] [-f ip_listfile]" echo "" echo " -i specify the (i)p_address to be scanned;" echo " -f use an ip_list (f)ile;" echo " -d (d)aemon mode, only gets IPs, doesn't call mplayer." echo " -h (h)elp message;" echo "" exit 1 } ##}}} ## GetOpts; ##{{{ while getopts "i:f:dh" opt do case $opt in i) IP_ADDRESS=$OPTARG;; f) LSTFLAG=1 LSTFILE=$OPTARG;; d) PLAY_IT=0;; h) usage;; ?) usage;; esac done ##}}} if [ $LSTFLAG -eq 0 ] && [ "$IP_ADDRESS" != NULL ];then # getting valid IP address' with port 8888 open; nmap "$IP_ADDRESS" -p 8888 -oG $TMPFILE > /dev/null grep open $TMPFILE | sed 's/Host: \([0-9.]*\).*/\1/g' > $LSTFILE fi if [ ! -r $LSTFILE ];then echo "*** The NetTV IP list file [$LSTFILE] seems not reachable." echo "*** You'd better run <$PROG_NAME> with [-i ip_address]." exit 1 fi # playing the video resource of these IP's one by one; # you can switch to the next one by pressing ``q'' to quit from the present # video; cat $LSTFILE if [ $PLAY_IT -eq 1 ];then for OPENIP in `cat $LSTFILE` do echo ">>> Playing NetTV [#] $OPENIP" mplayer -nortc -ontop -afm dmo http://$OPENIP:8888/1.asf > /dev/null sleep 0.25 done fi # vim:fdm=marker:fmr=##{{{,##}}}:tw=78 其中用到了 nmap -oG file 输出结果为方便 grep 查找的格式到一个文件。通过 grep 提取出包含可以访问的 IP 的条目,并且用 sed 截取 IP 地址,输出到一个临时 的 IP 列表文件。通过循环来逐一播放相应 IP 的视频资源。 之前会将可用的 IP 列表列出,并且显示正在播放资源的 IP。播放的文本信息通过 /dev/null 屏蔽,每个源的播放间隔为 0.25s,以便程序退出和启动的缓冲。 通过 -i 选项来指定 IP 就会重新扫描可用的 IP 资源,更新列表文件,重新开 始播放视频资源上的视频。通过 -f 选项来指定 IP 列表文件,则会跳过 IP 扫 描,直接使用列表文件中的 IP 来尝试播放。如果不指定 IP 和列表文件,则不进行扫描 ,直接访问默认的旧的列表文件,可以达到瞬时显示的效果。播放频道的切换可以通过 mplayer 的退出当前视频快捷键 q 来实现。退出一个播放视频后,延时 0.25s 后启动 下一个视频资源的播放,相当于看电视的换台操作。 再附加一点,pplive 可以开多个频道共享,也就是同时开多个端口映射来播放多个节目 。那么,怎样知道这些端口呢?其实这个问题比较简单,端口是又 8888 顺序往后分配的 。也就是,默认的节目是映射到 8888 端口的,之后打开的共享节目映射到端口 8889, 再后是 8890,依次类推。扫描的方法也很简单: 代码: $ nmap -p 8888-8893 $IP_ADDRESS 不过,对于这个脚本而言,扫描后面的端口几乎没有用处。因为个人用户看 pplive 节目 是不会开多个节目的! 附件(10KB) nettv.sh.tar
订阅后,新回复会通过你的通知中心匿名送达。
0 条回复
暂无回复 · 你可以订阅本帖等待新回复。