rtmp学习记录(2) HLS

接下来是边测试边记录了

原始设置

rtmp {
    server {
        listen 1935;
        chunk_size 4000;
        application live {
             live on;
             hls on;
             hls_path /temp;
             hls_fragment 5s; 
        }
    }
}

1.hls有什么用,可以去掉吗

结论是,

1.1.直播流可以去掉。

改成后,restart-rtmp.bat,运行推流,没问题。

1.2.hls使用

参考:

HLS,RTSP,RTMP的区别(https://www.jianshu.com/p/70c9a2fd918b

Nginx支持HLS配置(https://blog.csdn.net/zongyue_wang/article/details/82698281

推流指令:ffmpeg -loglevel verbose -re -i a.mp4 -vcodec libx264 -vprofile baseline -acodec libmp3lame -ar 44100 -ac 1 -f flv rtmp://localhost:1935/live/a 

结果:

视频查看地址:http://127.0.0.1:9090/live/a.m3u8

视频文件在目录是在分区的根目录去了

1.发现这个视频的效果比实时流好。

2.播放一次后就不能播放了,不然这个不是可以做回放用吗?

   发现不是播放后就没有文件里,而是,过段时间就没有,不知道是哪个配置项

   要添加配置项 

hls_cleanup off;
application live {
             live on;
             hls on;
             hls_path /temp;
             hls_fragment 5s; 
             hls_cleanup off;
        }

参考:m3u8 and ts files are deleted after a while(https://askubuntu.com/questions/920536/m3u8-and-ts-files-are-deleted-after-a-while

但是这样的话,同名视频生成多次的话ts文件会越来越多。

 

另外这里学到ffmpeg可以直接生成hls文件:

ffmpeg -i /var/mp4s/gua.mp4 -strict -2  -f hls /mnt/hls/index.m3u8

改一下 就是 

ffmpeg -i a.mp4 -strict -2  -f hls hls/a.m3u8

注意这里的hls文件夹要手动创建,该命令没有创建文件夹的功能

 

3.手机浏览器(Androd手机、华为或者小米)的视频缓存虽然没有.ts文件,但是是也有个文件夹有一些数字文件和一个index.m3u8文件,外面有个.vdat文件,估计和这个是相关的。hls流文件存到本地吧。

4.修改文件路径到程序所在目录下:

对应的server里面的配置也要改

5.m3u8文件

a.m3u8的内容

#EXTM3U
#EXT-X-VERSION:3
#EXT-X-MEDIA-SEQUENCE:0
#EXT-X-TARGETDURATION:6
#EXT-X-DISCONTINUITY
#EXTINF:6.267,
a-0.ts
#EXTINF:6.200,
a-1.ts
#EXTINF:5.966,
a-2.ts
#EXTINF:2.134,
a-3.ts

参考:HLS 直播协议m3u8详解(https://blog.csdn.net/aoshilang2249/article/details/82012187

6.html播放hls

<html lang="en">
    <head>
        <meta charset=utf-8/>
    </head>
    <body>

        <script src="https://cdn.jsdelivr.net/npm/hls.js@latest"></script>
<video id="video"></video>
<script>
  if(Hls.isSupported()) {
    var video = document.getElementById('video');
    var hls = new Hls();
    hls.loadSource('http://127.0.0.1:9090/live/a.m3u8');
    hls.attachMedia(video);
    hls.on(Hls.Events.MANIFEST_PARSED,function() {
      video.play();
  });
 }
</script>

    </body>
</html>

IE11里面播放正常,Chrome和FireFox里面只是一个图片,先不管了。我重心是unity。

7.unity播放

Unity自身的VideoPlayer不行,参考(https://docs.google.com/document/d/1s1ISPgLIM70IVuH2W1lbst6HPiHXSoRct64SJmn7-cg/edit)。

用之前的项目的UniversalMediaPlayer,改一下播放地址,弹出错误,直接unity崩溃了。

明明它的例子的后缀名就是m3u8。

发现项目中的UniversalMediaPlayer版本是1.1,而最新的版本是2.0,找了一圈没找到下载的,上淘宝买了个,5块钱

可以用。

8.发现直接往temp/hls_temp文件夹中放mp4视频,也是能够用vlc访问到的,而且,进度条还能滑动,比m3u8还方便,这个就是个视频服务器了!

有子目录也没问题

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值