nabice 发表于 2015-3-20 16:18:10

【原创分享】用CB4观看无广告的优酷视频

本帖最后由 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 配置nginxserver {
            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, 大功告成

jiangdou 发表于 2015-3-20 16:59:15

长知识了

费德勒 发表于 2015-3-20 17:22:35

1.实现了吗?
2.流畅吗?

nabice 发表于 2015-3-20 17:38:08

费德勒 发表于 2015-3-20 17:22 static/image/common/back.gif
1.实现了吗?
2.流畅吗?

实现了的, 你的v0.4一出来我就赶紧实现了
流畅
不过优酷的视频一般会分段, 切换下一段的时候没有缓冲会闪一下

翼京/ka 发表于 2015-3-23 14:39:06

不错:):):)

sunbeyond 发表于 2015-3-27 15:19:31

支持一下。感觉这个可以做点什么。 家庭服务器+ 家庭多媒体中心。

allen 发表于 2015-4-13 11:10:46

nabice 发表于 2015-3-20 17:38 static/image/common/back.gif
实现了的, 你的v0.4一出来我就赶紧实现了
流畅
不过优酷的视频一般会分段, 切换下一段的时候没有缓冲会 ...

推荐使用mpv播放器,分段视频播放时屏幕不会闪,但会有一些停顿,感觉还行。

nabice 发表于 2015-4-19 15:15:55

allen 发表于 2015-4-13 11:10 static/image/common/back.gif
推荐使用mpv播放器,分段视频播放时屏幕不会闪,但会有一些停顿,感觉还行。 ...

这个播放器在a80能硬解不? 播放1080p给力不?

allen 发表于 2015-4-20 16:43:17

nabice 发表于 2015-4-19 15:15 static/image/common/back.gif
这个播放器在a80能硬解不? 播放1080p给力不?

我用cubieboard1放720p h264没问题,1080p应该也行。
页: [1]
查看完整版本: 【原创分享】用CB4观看无广告的优酷视频