Linux搭建ffmpeg+red5

  1. 安装ffmpeg
  2. 将下载的ffmpeg-4.1.tar.bz2(官网http://ffmpeg.org/download.html)拷贝至服务器目录下
  3. 解压:tar -xvzf ffmpeg-4.1.tar.bz2
  4. cd ffmpeg-4.1
  5. 配置:./configure
  6. 编译:make(耗时较长)
  7. 安装:make install

常见问题

  1. 错误:yasm/nasm not found or too old. Use --disable-yasm for a crippledbuild

解决办法:①安装合适版本的yasm

https://blog.****.net/yzhang6_10/article/details/75635734

②配置时使用:./configure --disable-x86asm

2.编译ffmpeg过程报错gcc is unable to create an executable file. If gcc is a cross-compiler,

原因:linux系统没有安装gcc编译器,yum install gcc 

  1. 安装red5
  2. 将下载的red5-server-1.0.6-RELEASE-server.tar.gz

https://github.com/Red5/red5-server/releases)拷贝至服务器目录下

2)解压:tar -xvzf red5-server-1.0.6-RELEASE-server.tar.gz

3)cd red5-server

4)设置为可执行chmod +x *.sh 

5)编辑配置文件/webapps/live/WEB-INF/red5.properties文件,增加0.0.0.0 IP地址

6)启动安装:./red5.sh

Linux搭建ffmpeg+red5

Linux搭建ffmpeg+red5

启动以后访问:192.168.100.222:5080,出现以下界面即为成功

Linux搭建ffmpeg+red5

http://192.168.100.222:5080/demos/publisher.html

本次采用的是自定义直播见面即:red5\webapps\oflaDemo\ index.html,修改以下红框部分js代码(附JWplayer参数介绍https://blog.****.net/keji_123/article/details/78951208)。

Linux搭建ffmpeg+red5

保存以后浏览器访问:

http://192.168.100.222:5080/oflaDemo/index.html

注:此时页面并无视频直播画面,需执行第三步读码解码命令,目前常见的设备类型有海康威视、大华,它们命令有所不同下面有介绍(本次采用的是海康设备,故大华命令不敢保证正确性)。

常见问题

Red5 Run Unrecognized VM option 'MaxMetaspaceSize=128m'

Error: Could not create the Java Virtual Machine.

Error: A fatal exception has occurred. Program will exit.

这个问题原因:当前环境使用的是java7或更低版本,把编译环境改为java8后就OK了。

  1. 视频读码解码

海康: rtsp://[username]:[password]@[ip]:[port]/[codec]/[channel]/[subtype]/av_stream

说明: username: 用户名。例如admin。 password: 密码。例如12345。 ip: 为设备IP。例如 192.168.100.222 port: 端口号默认为554,若为默认可不填写。 codec:有h264、MPEG-4、mpeg4这几种。 channel: 通道号,起始为1。例如通道1,则为ch1。 subtype: 码流类型,主码流为main,辅码流为sub。

例如:

ffmpeg -i "rtsp://admin:1234567a@192.168.100.53:554/h264/ch1/main/av_stream" -b 1024k -f flv -r 25 -s 640x480 -an "rtmp://192.168.100.222/oflaDemo/dt"

大华: rtsp://username:password@ip:port/cam/realmonitor?channel=1&subtype=0 说明: username: 用户名。例如admin。 password: 密码。例如admin。 ip: 为设备IP。例如 192.168.100.222 port: 端口号默认为554,若为默认可不填写。 channel: 通道号,起始为1。例如通道2,则为channel=2。 subtype: 码流类型,主码流为0(即subtype=0),辅码流为1(即subtype=1

例如,请求某设备的通道2的辅码流,

ffmpeg -i

"rtsp://admin:dsgbridge@192.168.100.222:554/cam/realmonitor?channel=2&subtype=1" -vcodec h264 -f flv -an "rtmp://192.168.100.222/oflaDemo/dt "

上一篇:flutter的appBar使用自己写好的方法出现了 ‘HomeHeade‘ is not a subtype of type ‘PreferredSizeWi 解决办法


下一篇:PHP获取路径或目录实现