本文介绍 window 与 Linux 两种不同操作系统下 实现 rtsp 转 rtmp , 文末直接提供代码,简单粗暴 。
一 : window 实现 rtsp 转 rtmp
1、将提供的windows下的ffmpeg包解压
配置环境变量 Path
测试ffmpeg -version
配置成功
若不配置环境变量,则将直播系统中配置文件中
ffmpeg地址,改为绝对路径..\ffmpeg\bin\ffmpeg.exe
2、安装red5
下载地址:https://github.com/Red5/red5-server/releases
下载后进行安装,安装后修改配置文件中的IP地址
点击安装目录先的red5.bat启动red5
3、安装tomcat并部署直播系统
安装tomcat。
通过提供的直播系统源码,导出war包放入或者直接用提供的war包放在tomcat下的webapps下 ,启动tomcat。修改如下配置文件
注意:修改直播系统的配置文件red5.properties
二 : 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配置文件
启动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)如下图
安装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 上拉下来就可以用了
这个看播放流,如果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