在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进行设置


原文地址:https://www.cnblogs.com/dakewei/p/7407415.html