Linux----FFmpeg直播推流

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 ~]#

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

docker pull alfg/nginx-rtmp

Linux----FFmpeg直播推流_第1张图片

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直播推流_第2张图片

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

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

Linux----FFmpeg直播推流_第3张图片

 之后输入

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直播推流_第4张图片

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

rtmp://192.168.1.191:1935/hls/hello1

Linux----FFmpeg直播推流_第5张图片

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直播推流_第6张图片

注意:

如果出现“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系统即可

你可能感兴趣的:(linux,nginx,docker,ffmpeg)