window 与 Linux 实现 rtsp 转 rtmp

本文介绍 window 与 Linux 两种不同操作系统下 实现 rtsp 转 rtmp , 文末直接提供代码,简单粗暴 。

一 : window 实现 rtsp 转 rtmp

1、将提供的windows下的ffmpeg包解压

配置环境变量 Path

window 与 Linux 实现 rtsp 转 rtmp_第1张图片
image

测试ffmpeg -version

window 与 Linux 实现 rtsp 转 rtmp_第2张图片
image

配置成功
若不配置环境变量,则将直播系统中配置文件中

window 与 Linux 实现 rtsp 转 rtmp_第3张图片
image

ffmpeg地址,改为绝对路径..\ffmpeg\bin\ffmpeg.exe

2、安装red5

下载地址:https://github.com/Red5/red5-server/releases
下载后进行安装,安装后修改配置文件中的IP地址

window 与 Linux 实现 rtsp 转 rtmp_第4张图片
image

点击安装目录先的red5.bat启动red5

3、安装tomcat并部署直播系统

安装tomcat。

通过提供的直播系统源码,导出war包放入或者直接用提供的war包放在tomcat下的webapps下 ,启动tomcat。修改如下配置文件

    注意:修改直播系统的配置文件red5.properties
window 与 Linux 实现 rtsp 转 rtmp_第5张图片
image

二 : Linux 实现 rtsp 转 rtmp

1.下载ffmpeg-4.1.tar.bz2 ##

执行tar -jxvf ffmpeg-4.1.tar.bz2-C /opt/moudle/ 解压安装包修改其源码,解决花屏问题,参照下方文档:花屏问题解决

进入解压路径,执行第三步,3.开始安装ffmpeg

遇到问题,参考第二步解决安装中的问题。

2.解决gcc is unable to create an executable file C compiler test failed.问题 安装gcc ##

1)在线安装 yum install gcc 报错

This system is not registered with an entitlement server. You can use subscription-manager to register. 解决方 式 https://www.cnblogs.com/yanduanduan/p/9083887.html

wget http://mirrors.163.com/centos/7/os/x86_64/Packages/python-kitchen-1.1.1-5.el7.noarch.rpmwget http://mirrors.163.com/centos/7/os/x86_64/Packages/python-chardet-2.2.1-1.el7_1.noarch.rpm执行rpm -ivh python-*新建repo配置文件(如 果是其他版本,则将下面的7改为你当前的版本数字) vim /etc/yum.repos.d/CentOS-Base.repo


#CentOS-Base.repo

    #  

    # The mirror system uses the connecting IP address of the client and the

    # update status of each mirror to pick mirrors that are updated to and

    # geographically close to the client.  You should use this for CentOS updates

    # unless you are manually picking other mirrors.

    #

    # If the mirrorlist= does not work for you, as a fall back you can try the  

    # remarked out baseurl= line instead.

    #

    #

    [base]

    name=CentOS-$7 - Base - 163.com

    #mirrorlist=http://mirrorlist.centos.org/?release=$7&arch=$basearch&repo=os

    baseurl=http://mirrors.163.com/centos/7/os/$basearch/

    gpgcheck=1

    gpgkey=http://mirrors.163.com/centos/RPM-GPG-KEY-CentOS-7

    #released updates

    [updates]

    name=CentOS-$7 - Updates - 163.com

    #mirrorlist=http://mirrorlist.centos.org/?release=$7&arch=$basearch&repo=updates

    baseurl=http://mirrors.163.com/centos/7/updates/$basearch/

    gpgcheck=1

    gpgkey=http://mirrors.163.com/centos/RPM-GPG-KEY-CentOS-7

    #additional packages that may be useful

    [extras]

    name=CentOS-$7 - Extras - 163.com

    #mirrorlist=http://mirrorlist.centos.org/?release=$7&arch=$basearch&repo=extras

    baseurl=http://mirrors.163.com/centos/7/extras/$basearch/

    gpgcheck=1

    gpgkey=http://mirrors.163.com/centos/RPM-GPG-KEY-CentOS-7

    #additional packages that extend functionality of existing packages

    [centosplus]

    name=CentOS-$7 - Plus - 163.com

    baseurl=http://mirrors.163.com/centos/7/centosplus/$basearch/

    gpgcheck=1

    enabled=0

    gpgkey=http://mirrors.163.com/centos/RPM-GPG-KEY-CentOS-7

清除缓存yum clean all

yum -y install gcc

2)离线安装****gcc**

下载相应的rpm包链接地址如下 http://mirrors.163.com/centos/6/os/x86_64/Packages/http://mirrors.aliyun.com/centos/7/os/x86_64/Packages/需要以下包mpfr-3.1.1-4.el7.x86_64.rpmlibmpc-1.0.1-3.el7.x86_64.rpmlibmpc-devel-1.0.1-3.el7.x86_64.rpmkernel-headers-3.10.0-957.el7.x86_64.rpmglibc-headers-2.17-260.el7.x86_64.rpmglibc-devel-2.17-260.el7.x86_64.rpmcpp-4.8.5-36.el7.x86_64.rpmgcc-4.8.5-36.el7.x86_64.rpmlibgomp-4.8.5-36.el7.x86_64.rpm执行以下命令rpm -Uvh *.rpm --nodeps --force或者挨个按顺序执行glibc两个包和gcc安装时会报错,建议执行上一个命令rpm -ivh mpfr-3.1.1-4.el7.x86_64.rpmrpm -ivh libmpc-1.0.1-3.el7.x86_64.rpmrpm -ivh kernel-headers-3.10.0-957.el7.x86_64.rpmrpm -ivh glibc-headers-2.17-260.el7.x86_64.rpmrpm -ivh glibc-devel-2.17-260.el7.x86_64.rpmrpm -ivh cpp-4.8.5-36.el7.x86_64.rpmrpm -ivh libgomp-4.8.5-36.el7.x86_64.rpmrpm -ivh gcc-4.8.5-36.el7.x86_64.rpm

[if !supportLists]1. [endif]解决nasm/yasm not found or too old. Use --disable-x86asm for a crippled build.下载yasm-1.3.0.tar.gz执行如下命令tar -xvzf yasm-1.3.0.tar.gzcd yasm-1.3.0/./configuremakemake install

3****.开始安装 ffmpeg

./configure --enable-shared --prefix=/opt/moudle/ffmpeg-4.1makemake install输入./ffmpeg -verson报错 libavdevice.so.58: cannot open shared object file: No such file or directoryvi /etc/ld.so.conf.d/ffmpeg.conf然后添加一行内容: /opt/moudle/ffmpeg-4.1/lib 之后保存并退出,然后执行 ldconfig 使配置生效,现在再次执行 ./ffmpeg -version

为了方便在任何时候都能使用直播系统将ffmpeg加入到环境变量vi ~/.bash_profile加入FFMPEG_HOME=/opt/moudle/ffmpeg-4.1 export FFMPEG_HOMEPATH=PATHexport PATHsource ~/.bash_profile ffmpeg -version

4****.安装red5 ##

red5-server-1.0.10-M10.tar.gz下载路径:https://github.com/Red5/red5-server/releases执行tar -zxvf red5-server-1.0.10-M10.tar.gz -C /opt/module

解压完后,修改red5配置文件,

/red5-server/conf 下red5.properties配置文件

window 与 Linux 实现 rtsp 转 rtmp_第6张图片
image

启动red5cd解压路径中 运行 red5-server.sh

修改配置文件测试是否成功浏览器中输入http://IP:port进入red5主页 (默认端口5080) 指定red5启动时jdk路径修改red5.sh添加export JAVA_HOME=/home/cci/ehv/videoServer/moudle/jdk1.8.0_144

5****.安装tomcat ##

apache-tomcat-8.5.37.tar.gz下载路径: https://tomcat.apache.org/download-80.cgi执行tar -zxvf apache-tomcat-8.5.37.tar.gz -C /opt/moudle启动tomcatcd解压目录中\bin执行./startup.sh将直播系统的War包放入到webapps中修改直播系统配置文件,red5.properties注意:指定启动时jdk路径修改catalina.sh开头位置添加export JAVA_HOME=/home/cci/ehv/videoServer/moudle/jdk1.8.0_144export JRE_HOME=/home/cci/ehv/videoServer/moudle/jdk1.8.0_144/jre修改setclasspath.sh开始位置空白处添加export JAVA_HOME=/home/cci/ehv/videoServer/moudle/jdk1.8.0_144export JRE_HOME=/home/cci/ehv/videoServer/moudle/jdk1.8.0_144/jre

三 : 问题解决

1、花屏问题解决

下载ffmpeg源码,修改ffmpeg\libavformat

下册udp.c 中

UDP_MAX_PKT_SIZE 由65536改为(65536*10)如下图

image.png

安装MinGW

下载地址 http://www.mingw.org/

下载yasm

下载地 http://yasm.tortall.net/Download.html

更改yasm*.exe为yasm.exe后复制到MinGW的bin目录下(也有文章让放在c:\windows\system32下我这边尝试无效) 建议两个路径都放入

开始编译

运行MinGW\msys\1.0\msys.bat

进入FFmpeg的解压路径

编译命令

./configure --enable-shared --disable-static

make

make install

编译ffmpeg 时配置完执行make 遇到common.mak:159: *** missing separator. Stop. (159值不固定可能为其他数字)

解决方案:

运行

Git** config --global core.autocrlf false** #然后运行下面的命令删除ffmpeg代码,并重新获取一下即可 git rm --cached -r . git reset --hard

2、 org.red5.server.net.rtmp.RTMPHandler - Scope oflaDemo not found on 192.168.0.103

最近window使用ffmpeg 与 red5 实现rtsp 转换成 rtmp 遇见的坑 (window 环境)

安装 ffmpeg , 配置环境变量

安装red5 (window 10) 默认可以不配置java_home 导致一直失败,注意了

别人发给我的exe ,安装之后少了oflaDemo ,导致报错,需要在webapps 下面添加,我这里是从linux 上拉下来就可以用了


window 与 Linux 实现 rtsp 转 rtmp_第7张图片
image.png

这个看播放流,如果9个,你可以播放子码流

摄像头一半都有两个流,一个子码流,一个主码流,类似一个高清,一个流畅。多窗口同时播放,建议使用子码流。单个窗口播放使用主码流

3、码流常识

海康

主码流地址格式:

rtsp://[user]:[password]@[ip]:[port]/[codec]/ch[channel]/main/av_stream

子码流地址格式:

rtsp://[user]:[password]@[ip]:[port]/[codec]/ch[channel]/sub/av_stream

大华

主码流地址格式:

rtsp://[user]:[password]@[ip]:[port]/cam/realmonitor?channel=[channel]&subtype=0

子码流地址格式:

rtsp://[user]:[password]@[ip]:[port]/cam/realmonitor?channel=[channel]&subtype=1

四 : 资源

linux :

链接:https://pan.baidu.com/s/1uIjoiQMHb7suGG9Ht-ofOg
提取码:zr1g

window :

链接:https://pan.baidu.com/s/1Pw8sLIYyWSst0tmusxykxw
提取码:jxlr

你可能感兴趣的:(window 与 Linux 实现 rtsp 转 rtmp)