ffmpeg+nginx+dash调用摄像头直播
参考:
https://www.cnblogs.com/nowgood/p/ffmpegnginx.html
https://www.jianshu.com/p/512cb67e35d1
-----------------------------------------
最终效果是:摄像头实时拍摄的画面通过ffmpeg推送到nginx服务器中(DASH),vlc播放器通过链接播放视频画面。
-------------------------------------------------------------------------------------------------------------------
1、nginx安装,需源码编译,因为需要添加nginx-rtmp-module模块 。其次nginx的版本不要太低,以免make的时候出错。
#安装依赖
sudo apt-get update
sudo apt-get install libpcre3 libpcre3-dev
sudo apt-get install openssl libssl-dev
#找个文件夹,我是在home/ffy/workSpace/nginx文件夹下运行下面命令
wget http://nginx.org/download/nginx-1.19.2.tar.gz
wget https://github.com/arut/nginx-rtmp-module/archive/master.zip
unzip master.zip
tar -zxvf nginx-1.19.2.tar.gz
cd nginx-1.19.2/
./configure --prefix=/usr/local/nginx --with-http_ssl_module --add-module=../nginx-rtmp-module-master
#地址是/use/local/nginx,需要记住
make
make install
修改/usr/local/nginx/conf/nginx.conf文件,修改如下,记得换地址(我的目录可能和你的不一样),主要就是开头的rtmp和http中的location /之类的,这个是浏览器的路由,就是你的Dash文件放在哪的地方,自己比较着看,把缺少的补上就行,不要直接复制过去。
#user nobody;
worker_processes 1;
events {
worker_connections 1024;
}
rtmp {
server {
listen 1935;
chunk_size 4096;
application dash {
live on;
dash on;
dash_path /home/ffy/workSpace/DASH/dash;
}
}
}
http {
include mime.types;
default_type application/octet-stream;
#access_log logs/access.log main;
sendfile on;
keepalive_timeout 65;
server {
listen 80;
server_name localhost;
location /stat {
rtmp_stat all;
rtmp_stat_stylesheet stat.xsl;
}
location /stat.xsl {
root /home/ffy/workSpace/nginx/nginx-rtmp-module-master;
}
location /dash {
# Serve DASH fragments
root /home/ffy/workSpace/DASH;
add_header Cache-Control no-cache;
}
location / {
root html;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
运行nginx,首先进入nginx安装目录的/sbin文件夹,运行如下代码
sudo ./nginx -c conf/nginx.conf
不出意外的话,可以成功允许。
2、安装ffmpeg,教程:https://blog.csdn.net/hiudawn/article/details/80302420
3、找个mp4视频,我这里是input.mp4,记得替换一下名称,测试一***意视频路径。
ffmpeg -re -i input.mp4 -vcodec copy -acodec copy -f flv rtmp://localhost/dash/test
4、浏览器打开http://localhost/stat会显示如下界面。
5、此时找个播放器,比如vlc,输入网址http://localhost/dash/test.mpd,即可播放,直播的,不能拖拽进度条。
6、此时我们已经完成一大半了,接下来就是推摄像头的视频流。下面命令中的/dev/video0是设备名词,可以通过输入ls /dev/video*查看。这个地方我卡住了一会,一直报错:Video codec rawvideo not compatible with flv。按照如下命令就可以了。之后播放的步骤和之前一样,在播放器中输入URL。
sudo ffmpeg -re -f v4l2 -framerate 25 -s 640x480 -i /dev/video0 -vcodec libx264 -preset ultrafast -acodec libfaac -f flv rtmp://localhost/dash/test
注意
输入的url,可以试着复制到浏览器中看会不会出现404的错误,如果出现很大可能是url错了,可以仔细检查nginx.conf文件,注意location/dash的填写。
下一篇: TCP拥塞控制原理