FFmpeg直播推流

1、本地视频ffmpeg推流rtmp(nginx+rtmp)

1、在Linux Centos7上安装docker(安装过程可以参考CentOS Docker 安装:​​https://www.runoob.com/docker/centos-docker-install.html​​)

输入:docker -v   

显示如下:

[root@localhost ~]# docker -v
Docker version 19.03.8, build afacb8b
[root@localhost ~]#

Linux----FFmpeg直播推流_nginx

2、安装nginx-rtmp,是ffmpeg要推流的流服务器

docker pull alfg/nginx-rtmp

Linux----FFmpeg直播推流_linux_02

3、运行rtmp实时流服务器容器

[root@localhost ~]# docker run -it -p 1935:1935 -p 8080:8080 --rm alfg/nginx-rtmp
--rm  表示停止之后就删除该容器,如果要长久使用,则可以使用如下:
[root@localhost ~]# docker run -itd -p 1935:1935 -p 8080:8080 alfg/nginx-rtmp
  • -i: 交互式操作
  • -t: 终端
  • -d: 后台运行
  • alfg/nginx-rtmp: alfg/nginx-rtmp 镜像

Linux----FFmpeg直播推流_nginx_03

 

出现上述界面,表示ffmepg实时流服务器alfg/nginx-rtmp已经搭建好了,下面使用ffmpeg推送本地文件1.mp4到实时流服务器alfg/nginx-rtmp

在ffmpeg.exe所在的文件夹种输入cmd,回车,

Linux----FFmpeg直播推流_docker_04

 

 之后输入

ffmpeg -threads 2 -re -fflags +genpts -i ./1.mp4 -c:v copy -c:a aac -strict -2 -f flv rtmp://192.168.1.191:1935/hls/hello1

再次在ffmpeg.exe所在的文件夹种输入cmd,回车,输入ffplay拉流

ffplay -fflags nobuffer  rtmp://192.168.1.191:1935/hls/hello1  # rtmp播放,也可以配置h5ss 播放

显示界面如下:

Linux----FFmpeg直播推流_docker_05

 

 使用vlc拉流,打开网络串流,输入:

rtmp://192.168.1.191:1935/hls/hello1

 

Linux----FFmpeg直播推流_nginx_06

 

 

Linux----FFmpeg直播推流_linux_07

 

2、在线实时ffmpeg推流rtmp(nginx+rtmp)

ffmpeg摄像头实时推送,在ffmpeg.exe所在的文件夹种输入cmd,回车,输入如下,惊醒实时推流

ffmpeg -rtbufsize 5M -f dshow  -i video="USB Camera" -s 640x360 -vcodec libx264 -tune zerolatency -preset ultrafast -b:v 1000k  -g 5 -ab 128k -f flv rtmp://192.168.1.191:1935/hls/hello1

使用ffplay以及vlc拉流

再次在ffmpeg.exe所在的文件夹种输入cmd,回车,输入ffplay拉流

ffplay -fflags nobuffer  rtmp://192.168.1.191:1935/hls/hello1  # rtmp播放,也可以配置h5ss 播放

 

使用vlc拉流,打开网络串流,输入:

rtmp://192.168.1.191:1935/hls/hello1

显示如下:

Linux----FFmpeg直播推流_nginx_08

 

注意:

如果出现“write /proc/self/attr/keycreate: permission denied”  则表示文件没有写入权限,被拒绝访问了这是selinux是linux为了系统安全性做的控制,会控制用户可以访问、读取、修改哪些文件,比如,前面的write /proc/self/attr/keycreate文件没有权限,就是被selinux控制了。selinux有三种模式:enforcing 强制 permissive 宽容的 diabled 禁止的,权限限制从高到低。

解决方法:

在Linux CentOS7中将​​/etc/selinux​​​下的​​config​​​文件中的​​SELINUX​​​属性改为​​disabled​​步骤:

vi /etc/selinux/config

可以看到里面的属性为:​​enforcing​​​强制性的,按i进入编辑模式,将​​SELINUX​​​属性改为​​disabled​​​,按Esc,再按:wq保存退出,重启​​liunx​​系统即可

龙腾一族至尊龙骑