zoukankan      html  css  js  c++  java
  • 在ubuntu16.04上搭建视频服务器

    推荐方案三:超级简单 

    方案一.hls (缺陷:需要花很多时间切片)

    1.Distributor ID: Ubuntu
      Description: Ubuntu 16.04.3 LTS
      Release: 16.04
     Codename: xenial

    2.Linux 4.4.0-89-generic #112-Ubuntu SMP Mon Jul 31 19:38:41 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux

    mkdir ~/working

    切换到~/working目录下

    cd ~/working

    获取nginx源码:

    wget http://nginx.org/download/nginx-1.13.4.tar.gz

    解压

    tar xvf nginx-1.13.4.tar.gz

    获取最新的nginx-rtmp源码

    git clone https://github.com/arut/nginx-rtmp-module.git

    切换到nginx目录

    cd nginx-1.13.4

    配置

    ./configure --with-http_ssl_module --with-http_stub_status_module --add-module=../nginx-rtmp-module

    编译和安装配置有nginx-rtmp模块的nginx

    make

    sudo make install

    安装nginx初始化脚本

    获取nginx初始化脚本

    wget https://raw.github.com/JasonGiedymin/nginx-init-ubuntu/master/nginx

    将脚本复制到/etc/init.d/目录下

    sudo cp nginx /etc/init.d/

    修改权限

    sudo chmod +x /etc/init.d/nginx

    使用update-rc.d进行启动项管理

    sudo update-rc.d nginx defaults

    创建目录结构

    sudo mkdir /HLS

    sudo mkdir /HLS/mobile

    sudo mkdir /HLS/live

    sudo mkdir /video_recordings

    sudo chmod -R 777  /video_recordings

    配置nginx

    备份原来的nginx配置文件

    sudo cp /usr/local/nginx/conf/nginx.conf /usr/local/nginx/conf/nginx.conf.back

    sudo gedit /usr/local/nginx/conf/nginx.conf

    往/usr/local/nginx/conf/nginx.conf添加以下内容

    worker_processes 1;
    error_log logs/error.log debug;
    events {
    worker_connections 1024;
    }
    rtmp {
    server {
    listen 1935;
    allow play all;

    #creates our "live" full-resolution HLS videostream from our incoming encoder stream and tells where to put the HLS video manifest and video fragments
    application live {
    allow play all;
    live on;
    record all;
    record_path /video_recordings;
    record_unique on;
    hls on;
    hls_nested on;
    hls_path /HLS/live;
    hls_fragment 10s;

    #creates the downsampled or "trans-rated" mobile video stream as a 400kbps, 480x360 sized video
    exec ffmpeg -i rtmp://192.168.1.104:1935/$app/$name -acodec copy -c:v libx264 -preset veryfast -profile:v baseline -vsync cfr -s 480x360 -b:v 400k -maxrate 400k -bufsize 400k -threads 0 -r 30 -f flv rtmp://192.168.1.104:1935/mobile/$;
    }

    #creates our "mobile" lower-resolution HLS videostream from the ffmpeg-created stream and tells where to put the HLS video manifest and video fragments
    application mobile {
    allow play all;
    live on;
    hls on;
    hls_nested on;
    hls_path /HLS/mobile;
    hls_fragment 10s;
    }

    #allows you to play your recordings of your live streams using a URL like "rtmp://my-ip:1935/vod/filename.flv"
    application vod {
    play /video_recordings;
    }
    }
    }


    http {
    include mime.types;
    default_type application/octet-stream;

    server {
    listen 80;
    server_name 192.168.1.104;

    #creates the http-location for our full-resolution (desktop) HLS stream - "http://my-ip/live/my-stream-key/index.m3u8"
    location /live {
    types {
    application/vnd.apple.mpegurl m3u8;
    }
    alias /HLS/live;
    add_header Cache-Control no-cache;
    }

    #creates the http-location for our mobile-device HLS stream - "http://my-ip/mobile/my-stream-key/index.m3u8"
    location /mobile {
    types {
    application/vnd.apple.mpegurl m3u8;
    }
    alias /HLS/mobile;
    add_header Cache-Control no-cache;
    }

    #allows us to see how stats on viewers on our Nginx site using a URL like: "http://my-ip/stats"
    location /stats {
    stub_status;
    }

    #allows us to host some webpages which can show our videos: "http://my-ip/my-page.html"
    location / {
    root html;
    index index.html index.htm;
    }
    }
    }

    !!记得将本地内网地址换成你实际使用的哦!!

    启动nginx服务

    sudo service nginx start

    安装ffmpeg

    sudo apt-get install ffmpeg

    一.推流开始

    1.ffmpeg -re -i test.mp4 -vcodec libx264 -acodec aac -f flv rtmp://localhost/mobile/haha   /*将本地视频文件test.mp4转码推流到本地服务器*/

    2.在本机端打开vlc播放器

    输入流地址rtmp://localhost/mobile/haha即可观看视频,不过本地播放有些卡顿,网络播放更卡

    这种方法很不可靠,本身切片就很耗费cpu资源的

    二.可以先将视频文件切换成片段保存到服务器上然后再播放:

    1.在服务器端:ffmpeg -i test.mp4 -f hls test.m3u8 (此test.m3u8保存在/HLS/mobile/目录下,这种切片方法是错误的,生成的test.m3u8文件总是只有最新的ts片段,导致只能播放一个片段,几秒钟就没了)

    正确做法如下:

    ffmpeg -i test.mp4 -codec:v libx264 -codec:a mp3 -map 0 -f ssegment -segment_format mpegts -segment_list test.m3u8 -segment_time 10 out%04d.ts
    解析参数:
    -i 指定输入文件
    ssegment的一些参数: -segment_format mpegts 指定输出格式为mpegts;-segment_list test.m3u8 指定配置输出的列表文件名;-segment_time 10 指定切片时长为10秒

    2.直接在浏览器上输入http://your-ip/mobile/test.m3u8即可播放视频

    方案二.apache+php+mysql

    1.安装apache

    sudo apt-get install apache2

    2.安装php

    sudo apt-get install php

    3.安装mysql

    sudo apt-get install mysql-server

    此方案未做完

    方案三.emby media server

    1.ubuntu16.04不能从不安全的仓库安装软件,因此使用以下命令添加emby秘钥

    wget -nv http://download.opensuse.org/repositories/home:emby/xUbuntu_16.04/Release.key -O Release.key

       sudo apt-key add - < Release.key

       sudo apt-get update

    2.sudo sh -c "echo 'deb http://download.opensuse.org/repositories/home:/emby/xUbuntu_16.04/ /' > /etc/apt/sources.list.d/emby-server.list"

       sudo apt-get update

       sudo apt-get install emby-server

    启动emby-server

       sudo systemctl start emby-server

    设置开机启动emby-server

       sudo systemctl enable emby-server

    访问localhost:8096进行设置

    
    
  • 相关阅读:
    基于alpine定制常用命令镜像
    sudo cat > EOF权限问题
    Nginx AWS ELB 域名解析后端502问题
    harbor使用aws s3存储
    Tomcat 优化和改进
    webservice 使用JaxWsDynamicClientFactory报空指针异常
    spring boot 集成 Apache CXF 调用 .NET 服务端 WebService
    eclipse launching workspace太慢的解决方法
    Remote System Explorer Operation卡死Eclipse解决方案
    同一个Tomcat 同一个端口 部署多个项目
  • 原文地址:https://www.cnblogs.com/dakewei/p/7407415.html
Copyright © 2011-2022 走看看