• 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

    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 镜像

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

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

     之后输入

    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 播放

    显示界面如下:

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

    rtmp://192.168.1.191:1935/hls/hello1

    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

    显示如下:

    注意:

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

    龙腾一族至尊龙骑
  • 相关阅读:
    numpy数组行列拼接
    Dropout和BN层的模式切换
    利用sklearn计算决定系数R2
    从曲线图中提取原始数据
    Matlab在极坐标中绘图
    MATLAB中scatter绘制散点图
    说一说你对HTML5语义化的理解
    第十一章 前端开发-html
    详解mysql int类型的长度值问题
    进程间通信(队列和管道)
  • 原文地址:https://www.cnblogs.com/1175429393wljblog/p/15194383.html
Copyright © 2020-2023  润新知