ITPub博客

首页 > 应用开发 > IT综合 > 如何实现app直播源代码,通过HLS进行直播观看

如何实现app直播源代码,通过HLS进行直播观看

IT综合 作者:云豹科技阿星 时间:2021-08-17 17:12:10 0 删除 编辑

app直播源代码需要通过网页观看直播,无插件方案就是移动端使用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,却能正常观看,遂认为是app直播源代码的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浏览器能看则应该是因为内嵌了一个播放器用于播放视频及流媒体,播放器能掩盖很多小问题。
app直播源代码的推流命令换成这个,问题解决:

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

但是由于重编码可能耗费一点服务器性能,所以我们还是决定处理app直播源代码的rtsp流

网上查了很多资料,包括国外的,也没见提到这点,没认真看文档,或者说没留意到这个问题,app直播源代码开发时可能就走了很多弯路,所以写上来,提醒遇到同样问题的人

声明:本文由云豹科技转发自流萤 博客,如有侵权请联系作者删除


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69982461/viewspace-2787432/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2020-08-24

  • 博文量
    239
  • 访问量
    115528