利用vps转发youtube live视频流

系统版本:debian 8

实现思路:

  1. 用youtube-dl获取live stream的真实地址
  2. 用ffmpeg将视频流转换成rtmp流
  3. 启动rtmp服务转发数据

具体实现:

  1. 编译带rtmp插件的nginx

    1
    2
    3
    4
    5
    6
    7
    8
    sudo apt-get install build-essential libpcre3-dev libssl-dev zlib1g-dev -y
    wget https://nginx.org/download/nginx-1.11.13.tar.gz
    tar -xf nginx-1.11.13.tar.gz
    git clone https://github.com/arut/nginx-rtmp-module.git
    cd nginx-1.11.13
    ./configure --add-module=../nginx-rtmp-module
    make
    make install
  2. 配置nginx的rtmp服务

    1
    nano /usr/local/nginx/conf/nginx.conf
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    #user  nobody;
    worker_processes 1;
    error_log logs/error.log debug;
    events {
    worker_connections 1024;
    }

    rtmp {
    server {
    listen 1935;
    ping 30s;
    notify_method get;
    application live {
    allow publish 127.0.0.1;
    deny publish all;
    live on;
    record off;
    }
    }
    }

    启动nginx

    1
    /usr/local/nginx/sbin/nginx
  3. 安装youtube-dl和ffmpeg

    1
    sudo apt-get update && sudo apt-get install youtube-dl ffmpeg -y
  4. 使用youtube-dl获取下载地址

    https://www.youtube.com/watch?v=CUKpfr9tWBc 为例

    • 获取视频流质量

      1
      youtube-dl --list-formats https://www.youtube.com/watch?v=CUKpfr9tWBc
    • 获取真实下载地址,这里使用1080p对应的参数96

      1
      youtube-dl -f 96 -g https://www.youtube.com/watch?v=CUKpfr9tWBc
    • 用ffmpeg将视频流转换成rtmp流

      1
      ffmpeg -i [这里填上面获取的地址] -vcodec copy -c:a libmp3lame -ar 44100 -f flv rtmp://localhost/live/
  5. 用vlc播放器打开地址 rtmp://your_url/live/ 播放