ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

android-某些流的Google Cast速度很慢

2019-11-08 14:36:39  阅读:240  来源: 互联网

标签:google-cast audio-streaming chromecast internet-radio android


我有一个Android应用程序,可通过Google Cast播放来自网络的实时流(主要是广播).一切正常且快速,但是现在某些流开始(发出声音)需要更长的时间.这可能与Chromecast固件升级有关,这是因为我的Chromecast设备最近更新到了最新版本(1.32.124602).

这就是我通过Cast播放视频流的方式:

MediaMetadata metadata = new MediaMetadata(MediaMetadata.MEDIA_TYPE_GENERIC);
metadata.putString(MediaMetadata.KEY_TITLE, "My title");
metadata.putString(MediaMetadata.KEY_SUBTITLE, "My subtitle");
metadata.addImage(new WebImage(myImageUri);
MediaInfo mediaInfo = new MediaInfo.Builder(streamUrl)
        .setStreamType(MediaInfo.STREAM_TYPE_LIVE)
        .setContentType("audio/mpeg")
        .setMetadata(metadata)
        .build();
MediaLoadOptions options = new MediaLoadOptions.Builder()
       .setAutoplay(true)
       .setPlayPosition(0)
       .build();
sessionManager.getCurrentCastSession().getRemoteMediaClient().load(mediaInfo, options);

奇怪的是,有些流非常快,而另一些却没有:

> http://stream.funradio.sk:8000/dance128.mp3-20秒后发出声音
> http://stream.expres.sk:8000/128.mp3-1秒内发出声音

我还注意到,load()函数的ResultCallback几乎立即为第二个流触发,而第一个流大约需要3秒钟.

感谢您提供任何帮助或想法,以解决此问题.

解决方法:

第二个链接具有较大的缓冲区可以刷新.

Throughput Analysis

该图显示了吞吐量.第一个弯曲是当我在stream.funradio.sk:8000上测试第一个URL时.第二个花样是当我在stream.expres.sk:8000上测试第二个URL时.

您会注意到,在这两种连接的开头都有大量的数据.它们旨在尽快填充播放器缓冲区,以立即开始播放.您还将注意到,在连接开始时,第二个流具有更多的功能.这是因为它准备好了音频数据的缓冲区.

缓冲区大小是每个流可配置的.配置第二个流的人们认为可以增加此缓冲区,从而可以使侦听器快速启动,这对于保留侦听器至关重要.唯一真正的权衡是延迟.第二个流已经有效地预先录制了几秒钟的音频,以发送给新客户.对于大多数互联网广播电台而言,此延迟根本不是问题.最好让该流快速启动,并且对于具有斑点连接的侦听器来说更可靠.

I appreciate any help or idea how to fix this.

缺少代理流,您无能为力. Android设备和Chromecast对MP3流特别挑剔,并且需要大量数据才能与其同步.

此外,Chrome浏览器正在使用的算法来确定缓冲区是否足够满,可以播放而不会停顿,这并不知道您正在向其发送广播流,并且看到速率下降并在开始播放前缓冲了更多缓冲区.可以通过完全编码自己的播放器来解决此问题,该播放器可以缓冲数据,然后将其传递给解码器,而不仅仅是给底层系统提供URL.在网络上,这可以通过Media Source Extensions完成.对于Android,我在那儿没有太多经验.

标签:google-cast,audio-streaming,chromecast,internet-radio,android
来源: https://codeday.me/bug/20191108/2008658.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有