Android无法通过浏览器观看HLS直播的问题
来源:互联网 发布:淘宝清除缓存在哪里 编辑:程序博客网 时间:2024/05/04 15:52
公司的产品,有直播功能,需要通过网页观看直播,无插件方案就是移动端使用HLS
方法为FFMPEG推流到带Nginx-RTMP-Module的Nginx上,转出RTMP流和HLS流
所用命令为:
ffmpeg.exe -ss 0 -rtsp_transport tcp -i rtsp://192.168.1.1/stream/0 -vcodec copy -acodec copy -f flv rtmp://127.0.0.1:1935/hls/hlstest结果发现,HLS流在iOS上观看正常,在Android的微信、QQ浏览器、UC浏览器上观看正常。
其他浏览器上无法观看,点击播放后,只能显示一帧画面,播放按钮灰色。点击全屏按钮则提示“抱歉,此视频无法播放”。
而视频点播我们也使用的Nginx,却能正常观看,遂认为是我们的rtsp流有问题(之前还研究过是否配置问题,MIME问题,等等)
而后测试使用ffmpeg分别推视频文件和rtsp流到nginx,然后在nginx的temp/hls文件夹获取切片文件(.ts)
分析之后发现了区别:
左边是推视频文件的切片文件的信息,右边是流的
可以看到,音频都是AAC,但是视频的是LC-AAC,流的是Main-AAC
Apple关于HLS的资料
查阅资料后发现HLS支持的音频编码为:
HE-AAC or AAC-LC, stereo
MP3 (MPEG-1 Audio Layer 3), stereo
所以应该是AAC编码导致的问题,至于iOS能看,应该是因为iOS上播放都是使用了自带播放器,而Android上的微信、QQ浏览器、UC浏览器能看则应该是因为内嵌了一个播放器用于播放视频及流媒体,播放器能掩盖很多小问题。
推流命令换成这个,问题解决:
ffmpeg.exe -ss 0 -rtsp_transport tcp -i rtsp://192.168.1.1/stream/0 -vcodec copy -acodec aac -f flv rtmp://127.0.0.1:1935/hls/hlstest
但是由于重编码可能耗费一点服务器性能,所以我们还是决定处理我们的rtsp流
网上查了很多资料,包括国外的,也没见提到这点,没认真看文档,或者说没留意到这个问题,可能就走了很多弯路,所以写上来,提醒遇到同样问题的人
1 0
- Android无法通过浏览器观看HLS直播的问题
- HLS直播NAL_AUD问题
- 如何生成手机HLS Player(M3U8Player)观看电视频道直播
- 【直播】RMTP HLS直播延时问题因素
- HLS直播服务体系的探讨
- 监控物联网直播时遇到iOS无法播放HLS流的问题解决
- 生成M3U8播放地址用于手机HLS Player(M3U8Player)观看电视频道直播方案
- 解决ubunto下firefox无法在线观看视频的问题
- android观看直播编辑消息EditText失去焦点的问题解决方案
- 关于实现HLS直播的一些探究
- 基于nginx的hls直播系统
- windows 下 hls 的点播和直播
- 基于nginx的hls直播系统
- 直播协议的选择:RTMP vs. HLS
- 基于NGINX的HLS直播服务搭建
- 直播协议的选择:RTMP vs. HLS
- 解决用EasyDarwin开源流媒体服务器做HLS直播时Flash Player卡住的问题
- ios平台上 hls直播 第二次点击无法播放
- bzoj 1576[Usaco2009 Jan]安全路经Travel
- ArrayList的泛型
- 通过配置jvm参数向应用程序传参数
- hash校验算法
- 最长回文子串-解法一
- Android无法通过浏览器观看HLS直播的问题
- linux awk命令详解
- java 调 C (jni 与 jna)
- 【数据库】MYSQL查看所有表记录数命令
- linux netstat命令
- 玩转Java对象和XML相互转换
- Servlet 的配置和生命周期方法——day_04
- zookeeper的学习
- HTML Meta中添加X-UA-Compatible和IE=Edge,chrome=1有什么作用