ffmpeg+easydarwin把rtmp流转换成m3u8

ffmpeg+easydarwin把rtmp流转换成m3u8

最近需要对接视频监控,要在网页上播放,rtmp流需要装flash插件,很多浏览器都不支持了,所以需要把rtmp流转换成 m3u8 来播放

Ffmpeg地址: https://github.com/BtbN/FFmpeg-Builds/releases
easydarwin地址:https://github.com/easydarwin/easydarwin/releases

Windows

安装ffmpeg

从上面的链接下载 ffmpeg-n4.4-79-gde1132a891-win64-gpl-shared-4.4.zip
在这里插入图片描述解压文件

添加环境变量 D:\install\ffmpeg-n4.4-79-gde1132a891-win64-gpl-shared-4.4\bin
在这里插入图片描述

安装easydarwin

从上面的链接下载 EasyDarwin-windows-8.1.0-1901141151.zip
在这里插入图片描述
解压文件

修改ini文件

;easydarwin使用ffmpeg工具来进行存储。这里表示ffmpeg的可执行程序的路径
ffmpeg_path=D:/install/ffmpeg-n4.4-79-gde1132a891-win64-gpl-shared-4.4/bin/ffmpeg

;本地存储所将要保存的根目录。如果不存在,程序会尝试创建该目录。
m3u8_dir_path=D:/EasyDarwinGoM3u8

如果需要保存视频到本地,可以修改这个配置为1
save_stream_to_local=1 使用后则可以进行录像查询与回放。
在这里插入图片描述
单击 serviceinstall-easydarwin.exe 等待安装完成如下:
在这里插入图片描述
打开浏览器,输入 http://127.0.0.1:10008 可以看到设备当前运行状态和推流拉流的列表

安装Nginx

下载地址如下http://nginx.org/en/download.html
在这里插入图片描述
下载一个稳定版本,然后解压文件
在 nginx.conf 文件里,加上一段配置

location /hls {  
		types{  
		application/vnd.apple.mpegurl m3u8;  
		video/mp2t ts;  
		}  
		root html;  
		add_header Cache-Control no-cache;
			add_header Access-Control-Allow-Origin *;
   }

执行命令

这个命令是我在网上找到的cctv14的直播视频流,把它转化成rtsp流

ffmpeg.exe -i rtmp://58.200.131.2:1935/livetv/cctv14 -vcodec copy -acodec copy  -rtsp_transport tcp -f rtsp rtsp://127.0.0.1/test.hls

然后再把rtsp流转换成m3u8文件,文件存在nginx的html目录下

ffmpeg.exe -i rtsp://127.0.0.1/test.hls -fflags flush_packets -max_delay 2 -hls_flags delete_segments -hls_time 2 -g 30 D:\workspace\ui-manage\html\live.m3u8

然后就可以通过 http://localhost:8080/live.m3u8 来访问视频流(这个端口号是nginx配置的端口号)

播放m3u8

可以通过下载VLC播放器来播放m3u8文件

也可以通过 https://wow.techbrood.com/fiddle/48210 这个网址,修改下m3u8文件的地址,来进行播放

也可以通过 https://www.m3u8play.com/ 这个网址,来进行播放测试

如果想在自己的项目里播放m3u8,需要在前端页面引用hls.js,下载地址

<!DOCTYPE html>

<html>
<head>
    <meta name="viewport" content="width=device-width" />
    <title></title>
    <script src="hls.js"></script> //下载的hls.js 文件路径
    <script>
        function btn_OpenHls() {
            var htmlvideo = document.getElementById("videoPlay");
            htmlvideo.controls = true;
            var hls = new Hls();
            hls.loadSource("http://localhost:8080/live.m3u8");//m3u8文件路径
            hls.attachMedia(htmlvideo);
            hls.on(Hls.Events.MANIFEST_PARSED, function () {
                htmlvideo.play();
            });
        }
    </script>
</head>
<body>
    <button onclick="btn_OpenHls()">打开HLS视频</button>
    <video id="videoPlay" width="300" height="300"></video>
</body>
</html>

这是我在自己项目里的测试情况
在这里插入图片描述

Linux

安装ffmpeg

下载ffmpeg

wget https://johnvansickle.com/ffmpeg/releases/ffmpeg-release-amd64-static.tar.xz

解压文件

tar -xvf ffmpeg-release-amd64-static.tar.xz

执行./ffmpeg 命令,查看是否安装成功

添加环境变量

vim /etc/profile
export PATH=$PATH:/usr/share/ffmpeg-4.4-amd64-static/
source /etc/profile

再执行下面命令,环境变量就生效了

Ffmpeg -version

安装easydarwin

从上面的链接下载 EasyDarwin-linux-8.1.0-1901141151.tar.gz
在这里插入图片描述
解压文件

tar -zxvf EasyDarwin-linux-8.1.0-1901141151.tar.gz 

修改ini文件

ffmpeg_path=/usr/share/ffmpeg-4.4-amd64-static/ffmpeg

;本地存储所将要保存的根目录。如果不存在,程序会尝试创建该目录。
m3u8_dir_path=/data/EasyDarwinGoM3u8

安装命令如下:

cd /usr/share/EasyDarwin-linux-8.1.0-1901141151
./start.sh

打开浏览器,输入 http://linux机器ip:10008 可以看到设备当前运行状态和推流拉流的列表

安装Nginx

下载地址如下http://nginx.org/en/download.html

下载一个稳定版本,然后解压文件
在 nginx.conf 文件里,加上一段配置(这个和windows一样)

location /hls {  
		types{  
		application/vnd.apple.mpegurl m3u8;  
		video/mp2t ts;  
		}  
		root html;  
		add_header Cache-Control no-cache;
			add_header Access-Control-Allow-Origin *;
   }

执行命令

这个命令是我在网上找到的cctv14的直播视频流,把它转化成rtsp流

nohup ffmpeg -i rtmp://58.200.131.2:1935/livetv/cctv14 -vcodec copy -acodec copy  -rtsp_transport tcp -f rtsp rtsp://127.0.0.1/test.hls &

然后再把rtsp流转换成m3u8文件,文件存在nginx的html目录下

nohup ffmpeg -i rtsp://127.0.0.1/test.hls -fflags flush_packets -max_delay 2 -hls_flags delete_segments -hls_time 2 -g 30 /usr/local/openresty/nginx/html/live.m3u8 & 

然后就可以通过 http://linux机器ip:8080/live.m3u8 来访问视频流(这个端口号是nginx配置的端口号)

参考链接 https://blog.csdn.net/spring0832/article/details/89677050
参考链接 https://www.cnblogs.com/psjinfo/p/10521523.html

  • 0
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值