|
本帖最后由 nabice 于 2015-3-20 16:36 编辑
系统环境 lubuntu, 硬解vlc播放器, HDMI电视
初步使用流程:在pad/手机上打开想看的优酷页面,复制URL地址,粘贴在自己搭建的网页上面,点击播放,电视开始播放视频。
改进版: 在pad/手机上打开想看的优酷页面,直接点击优酷页面的“在电视上播放”按钮, 电视开始播放视频
实现思路/方式:(代码仅供参考)
简述:
1, 修改优酷的ip, 让手机访问优酷的请求重定向到cb4, 在cb4修改优酷页面,添加”在电视上播放“的按钮。
2, nginx接收到播放请求, 发信号给后台进程, 调用flvcd.com的解析接口,还原出视频实际地址
3, 调用vlc播放视频实际地址
详细:
1,安装dnsmasq,nginx,php等
1.1 配置dnsmasq,其中添加:address=/v.youku.com/cb4_IP, 同时,手机/pad设置cb4_IP为dns服务器。
1.2 配置nginx- server {
- listen 80;
- root /usr/share/nginx/private;
- index flvcd.php;
- location / {
- if (!-e $request_filename){
- rewrite ^/(.*)$ /do.php last;
- }
- }
- location ~ \.php$ {
- include fastcgi_params;
- fastcgi_pass unix:/tmp/php.socket;
- fastcgi_index flvcd.php;
- fastcgi_read_timeout 300;
- }
- }
复制代码 1.3 编写web代码
1.3.1 /usr/share/nginx/private/do.php- <?php
- $url = "http://".$_SERVER["HTTP_HOST"].$_SERVER["REQUEST_URI"];
- $content = file_get_contents($url);
- if(strpos($_SERVER["REQUEST_URI"], "v_show")|| strpos($_SERVER["REQUEST_URI"], "vplay")){
- $replace_str = '<form target="flvcd" action="/" method="POST"><input type="hidden" name="url" value="'.$url.'"/><input class="button" style="width:100%;height:50px;border: 0px none;background-color:#eee;" type="submit" value="在电视上打开"/></form><iframe style="width:0;height:0;display:none" name="flvcd" id="flvcd"></iframe>';
- echo preg_replace("/(<body[^>]*>)/", '$1'.$replace_str, $content);
- }else{
- echo $content;
- }
- ?>
复制代码 1.3.2 /usr/share/nginx/private/flvcd.php- <?php
- if($_POST["url"]){
- $fd = fopen("/tmp/flvcd.url", "w");
- fwrite($fd, $_POST["url"]);
- fclose($fd);
- exec("super kill -10 YOURMONITOR_PID");
- }
- ?>
复制代码 2 编写后台监控代码
xxxx.py- #!/usr/bin/env python
- #-*- coding:utf-8 -*-
- import signal
- import os
- def playflv(signum, frame):
- if os.path.exists("/tmp/flvcd.url"):
- os.system("/xxxx/flvcd ""+open("/tmp/flvcd.url").read()+"" &")
- signal.signal(signal.SIGUSR1, playflv)
复制代码 3. 编写解析优酷地址取实际流的代码
flvcd- #!/bin/bash
- export DISPLAY=:0
- PLAYLIST="/tmp/vlcplay.$RANDOM"
- ps -ef| grep "vlc -f" |grep -v grep -q
- if [ $? -eq 0 ]; then
- echo 'shutdown' | nc localhost 50022 -q 1
- fi
- if [ -z "$@" ]; then
- exit
- fi
- curl 'http://www.flvcd.com/parse.php' --get \
- --data-urlencode "kw=$@" \
- --data-urlencode "flag=one" \
- --data-urlencode "format=super" |
- sed -n '/name="inf"/s/.*value="\(.*\)"\/>/\1/gp' |
- sed 's/|/\n/g' > "$PLAYLIST" || exit
-
- vlc -f --no-video-title-show --play-and-exit "$PLAYLIST" -I rc --rc-host=localhost:50022
- rm -f "$PLAYLIST"
复制代码 4, 大功告成
|
|