欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

ffmpeg+nginx+dash调用摄像头直播

程序员文章站 2022-07-06 16:21:26
...

参考:

https://www.cnblogs.com/nowgood/p/ffmpegnginx.html

https://www.jianshu.com/p/512cb67e35d1

-----------------------------------------

最终效果是:摄像头实时拍摄的画面通过ffmpeg推送到nginx服务器中(DASH),vlc播放器通过链接播放视频画面。

                                                             ffmpeg+nginx+dash调用摄像头直播 

------------------------------------------------------------------------------------------------------------------- 

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会显示如下界面。

ffmpeg+nginx+dash调用摄像头直播

5、此时找个播放器,比如vlc,输入网址http://localhost/dash/test.mpd,即可播放,直播的,不能拖拽进度条。

                                                        ffmpeg+nginx+dash调用摄像头直播

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的填写。