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

猜你喜欢

转载自blog.csdn.net/qq_37437983/article/details/108082177