Rtsp通过Nginx和FFmpeg转码Rtmp,网页播放rtmp

1、安装FFmpeg

tar zxvf ffmpeg-4.1.tar.gz
cd ffmpeg-4.1/
./configure
sudo make install

2、安装Nginx
(1) 安装相关的依赖包

yum install gcc
sudo apt-get install libpcre3 libpcre3-dev
sudo apt-get install zlib1g-dev
sudo apt-get install openssl libssl-dev

(2)下载安装nginx

wget http://nginx.org/download/nginx-1.13.10.tar.gz
#解压
tar -zxvf nginx-1.13.10.tar.gz
#下载RTMP(到HOME目录)
git clone https://github.com/arut/nginx-rtmp-module.git
#进入NGINX解压目录
cd nginx-1.13.10
#配置
./configure --prefix=/usr/local/nginx --add-module=~/nginx-rtmp-module --with-http_ssl_module
#编译
make
#安装
sudo make install

(3)查看是否安装成功

cd /usr/local/nginx/sbin
sudo ./nginx -t

(4)成功之后配置

#打开nginx配置文件
cd /usr/local/nginx/conf/
sudo gedit nginx.conf
打开文档下拉至末尾:
rtmp{
    server{
    listen 1935;

        application myapp{
          live on;
          record off;
        }
        application hls{
          live on;
          hls on;
          hls_path nginx-rtmp-module/hls;
          hls_cleanup off;
        }
    }
}

3、使用ffmpeg进行转码

#默认为UDP协议传输转码
ffmpeg -i "rtsp://xxxxxxx" -f flv -r 25 -s 1080*720 -an "rtmp://localhost:1935/hls/mystream"
#TCP协议转码
ffmpeg -re -rtsp_transport tcp -i "rtsp://xxxxxxxxxx" -f flv -r 25 -s 1080*720 -an "rtmp://localhost:1935/hls/mystream"

以上两个可能再播放的时候流畅度上不太好,画质也不好

#tcp协议转码,插件解码,但是插件需要安装
ffmpeg -re -rtsp_transport tcp -i "rtsp://xxxxxxxxxxxx" -vcodec libx264 -vprofile baseline -acodec aac -ar 44100 -strict -2 -ac 1 -f flv -s 1280x720 -q 10 "rtmp://localhost:1935/myapp/mystream"

3、可以用VLC播放器测试rtmp是否转码成功
转码地址为:

rtmp://localhost:1935/hls/mystream
rtmp://localhost:1935/myapp/mystream

ps:以上两个路径上面的hls 和 myapp都是在nginx配置的,路径后面的可以随意的改动,它的作用只是在为码流指定方向
4、网页播放
将上面得到的rtmp路径填写到html文件中,就可以播放视频了。不过最好用google浏览器。videojs-flash.js和videojs-contrib-hls.js有的时候,链接访问不到,所以需要自己去github上查找,并下载下来,加入本地或者使用一个可以使用的远程 链接

<!DOCTYPE html>
<html lang="en" dir="ltr">
  <head>
    <meta charset="utf-8">
    <title>video.js</title>
    <link href="https://unpkg.com/video.js@6.11.0/dist/video-js.min.css" rel="stylesheet">
    <script src="https://unpkg.com/video.js@6.11.0/dist/video.min.js"></script>
    <script src="https://unpkg.com/videojs-flash/dist/videojs-flash.js"></script>
    <script src="https://unpkg.com/videojs-contrib-hls/dist/videojs-contrib-hls.js"></script>
  </head>
  <body>
    <video id="my-player" class="video-js" controls>
        <source src="rtmp://localhost:1935/myapp/stream-name" type="rtmp/flv">
        <p class="vjs-no-js">
          not support
        </p>
    </video>
    <script type="text/javascript">
      var player = videojs('my-player',{
        width:400,
        heigh:200
      });
    </script>
  </body>
</html>
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 要将RTSP流转换为RTMP流以在网页播放,可以借助媒体服务器进行转换。媒体服务器可以将RTSP流接收并转发为RTMP流,以便在网页上通过RTMP协议进行播放。 首先,需要建立一个媒体服务器,例如使用常用的开源流媒体服务器软件,如Nginx-rtmp模块、Wowza Streaming Engine等。在这个服务器上进行配置和设置。 然后,需要将RTSP流的地址发送给媒体服务器。可以在服务器的配置文件中指定RTSP流的URL,并设置其作为输入源,接收RTSP流。 接下来,媒体服务器会将接收到的RTSP流转发为RTMP流。可以设置转发规则,将RTSP流的数据转发到指定的RTMP流地址上。 最后,在网页上使用RTMP播放器,如JWPlayer、VideoJS等,通过指定RTMP流的地址进行播放。可以在网页上插入播放器并设置其相关参数,包括RTMP流地址,以实现RTMP流转换后在网页上的播放。 通过以上步骤,RTSP流可以成功转换为RTMP流,并通过网页播放器网页上进行播放。这样便实现了在网页播放RTSP流的需求。 ### 回答2: RTSP流是实时流传输协议,而RTMP流是实时消息传输协议。在将RTSP流转为RTMP流以供网页播放时,可以通过以下步骤实现。 首先,使用一个中间服务器软件,例如NginxFFmpeg,来接收RTSP流。这个服务器将充当RTSP流和RTMP流之间的转换器。 其次,配置服务器软件以接收RTSP流,并将其转换为RTMP流。可以通过在配置文件中设置RTSP流地址、端口号和转换方法来完成。 然后,将转换后的RTMP流传送到网页播放器上。可以使用开源播放器,如JW Player或Video.js,在网页上嵌入播放器,并将RTMP流作为播放源。 最后,通过将网页嵌入到网站的页面中,即可实现通过网页播放RTSP流转换后的RTMP流。这样,用户可以通过访问该网页,使用具有RTMP支持的网页播放器来观看RTSP流。 总结来说,将RTSP流转为RTMP流以供网页播放需要一个中间服务器软件来完成转换,并使用开源播放器嵌入到网页上来播放转换后的RTMP流。这样,用户可以通过访问网页来观看RTSP流转换后的视频内容。 ### 回答3: 要将 RTSP 流转为 RTMP 流进行网页播放,可以通过以下步骤实现: 1. 安装媒体服务器:首先,需要安装一个支持 RTMP 协议的媒体服务器,如 Nginx、Wowza、Adobe Media Server 等。 2. 配置 RTMP 模块:在媒体服务器上,需要配置 RTMP 模块,以允许接收 RTMP 流。 3. 获取 RTSP 流:从摄像头或其他 RTSP 源获取 RTSP 流的 URL。 4. 转码 RTSP 流:使用转码工具(如FFmpeg)将 RTSP 流转为 RTMP 流。可以通过以下命令将 RTSP 流转为 RTMP 流: ``` ffmpeg -i rtsp://ip_address:port/stream_name -c copy -f flv rtmp://ip_address:port/application/stream_name ``` 其中,`ip_address` 是服务器 IP 地址,`port` 是服务器端口号,`stream_name` 是流的名称。 5. 链接 RTMP 流:将转码后的 RTMP 流链接到媒体服务器上。例如,如果使用 Nginx 作为媒体服务器,可以在 Nginx 的配置文件中添加以下代码: ``` rtmp { server { listen 1935; application myapp { live on; push rtmp://ip_address:port/live/stream_name; } } } ``` 其中,`ip_address` 是服务器 IP 地址,`port` 是服务器端口号,`stream_name` 是流的名称。 6. 网页播放:最后,在网页上使用支持 RTMP 协议的播放器播放转码后的 RTMP 流。你可以使用开源的播放器库,如 JWPlayer、Video.js 或 Flowplayer,通过将播放器配置为连接到 RTMP 流的 URL 来实现播放。 通过以上步骤,可以将 RTSP 流转为 RTMP 流,并在网页上进行播放

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值