【问题标题】:RemoteMediaPlayer not loading media from urlRemoteMediaPlayer 未从 url 加载媒体
【发布时间】:2015-07-02 10:59:00
【问题描述】:

因此,我尝试从 android 电视上的 url 播放 mp3,每当我尝试创建媒体对象时,都会在调试器中引发未知错误,并带有以下足迹。

{statusCode=unknown status code: 2001, resolution=null}

这是我目前尝试创建 MediaInfo 对象的方式:

MediaMetadata mediaMetadata = new MediaMetadata(MediaMetadata.MEDIA_TYPE_MUSIC_TRACK);
    mediaMetadata.putString(MediaMetadata.KEY_TITLE, songName);
MediaInfo mediaInfo = new MediaInfo.Builder(songUrl)
    .setContentType("audio/mpeg")
    .setStreamType(MediaInfo.STREAM_TYPE_BUFFERED)
    .setMetadata(mediaMetadata)
    .build();

songUrl 指向存储在外部服务器上的 mp3。

这就是我创建 MediaPlayer 对象的方式:

try {
        mRemoteMediaPlayer.load(mApiClient, mediaInfo, true)
                .setResultCallback(new ResultCallback<RemoteMediaPlayer.MediaChannelResult>() {
                    @Override
                    public void onResult(RemoteMediaPlayer.MediaChannelResult mediaChannelResult) {
                        if (mediaChannelResult.getStatus().isSuccess()) {
                            Log.d("done loading song", "");

                            mSongIsLoaded = true;
                        } else {
                            Log.d("", "failed to load");
                        }
                    }
                });

    } catch (Exception e) {
        e.printStackTrace();
    }

有什么想法吗?

【问题讨论】:

  • 请发布完整的堆栈跟踪以及错误发生的位置
  • 没有抛出异常。我必须在调试器中查看 mediaChannelResult 的值,该值存储在状态字段中。
  • 如果你调试这段代码,它会到达 catch Exception 块吗?如果是这样,我需要看看 e.printStackTrace() 说了什么。
  • 它没有到达 catch 块。
  • 错误2001表示请求无效;您构建 MediaInfo 的方式没有什么特别的问题,这很好(只要您填充的字段的值都是有效值。加载命令本身也很好,因此您需要确保 mApiClient有效且媒体渠道已建立等

标签: android google-cast


【解决方案1】:

遇到了同样的问题,原来演员表应用程序没有启动。我在加载媒体之前放置了这段代码。

try {
        Cast.CastApi.launchApplication(mApiClient, Id, false)
        .setResultCallback(new ResultCallback<Cast.ApplicationConnectionResult>() {
            @Override
            public void onResult(Cast.ApplicationConnectionResult applicationConnectionResult) {
                Status status = applicationConnectionResult.getStatus();
                if( status.isSuccess() ) {
                    load(media);
                }else{
                    Log.v(TAG, ""+applicationConnectionResult.getStatus().getStatusCode());
                }
            }
        });         
    } catch( Exception e ) {
        Log.v(TAG, "failed:"+e.getMessage());
    }

load(media) 方法与您原始问题中的代码相同

【讨论】:

    【解决方案2】:
    猜你喜欢
    • 2021-06-16
    • 2015-10-31
    • 1970-01-01
    • 1970-01-01
    • 2014-06-22
    • 1970-01-01
    • 2012-10-03
    • 2018-02-27
    • 1970-01-01
    相关资源
    最近更新 更多