google / google/ExoPlayer

Casting failure for M3u8 files

Open
#7,295 6 comments 1 reaction 1 assignee Claimed by @AquilesCanta View on GitHub
bug: in dependency
Dominant language
Java
Stars
21.9k
Forks
6k
PR merge metrics
No merged PRs in 30d

Description

### [REQUIRED] Issue description
When executing some of the URL's I am getting following error.

I am using HLS (.m3u8) URL's to be played on Exoplayer and casting them to cast receiver.
URL's plays fine on Exoplayer but throws below error when cast.

> MediaControlChannel: received unexpected error: Invalid Request.
> MediaQueue: Error fetching queue item ids, statusCode=2100, statusMessage=null

### [REQUIRED] Reproduction steps
My code :

```
private fun loadRemoteMedia(position: Int) {
if (mCastSession == null) {
return
}
val remoteMediaClient: RemoteMediaClient? = mCastSession?.remoteMediaClient

val videoURL = mTrack?.videoUri
val subTitle = ResourceUtils.getString(R.string.cast_casting_to_device, mCastSession?.castDevice?.friendlyName)
if (!videoURL.isNullOrEmpty()) {
mSelectedMedia = CastVideoProvider.buildMediaInfo(mTrack?.trackId.toString(), mTrack?.title
?: "", subTitle, Integer.parseInt(mTrack?.duration
?: "0"), videoURL,
VideoModule.getInstance().getMimeType(mActivity, Uri.parse(videoURL)), mTrack?.thumbnailUri
?: "", null)
}

remoteMediaClient ?: return

remoteMediaClient.registerCallback(object : RemoteMediaClient.Callback() {
override fun onStatusUpdated() {
ExpandedCastingActivity.startActivity(mActivity, mSelectedMedia)
remoteMediaClient.unregisterCallback(this)
}
})

remoteMediaClient.load(MediaLoadRequestData.Builder()
.setMediaInfo(mSelectedMedia)
.setAutoplay(true)
.setCurrentTime(position.toLong()).build())
}
```

```
fun buildMediaInfo(contentId: String, title: String,
subTitle: String,
duration: Int, url: String, mimeType: String, imgUrl: String,
tracks: List?): MediaInfo {
val movieMetadata = MediaMetadata(MEDIA_TYPE_MOVIE)
movieMetadata.putString(MediaMetadata.KEY_TITLE, title)
movieMetadata.putString(MediaMetadata.KEY_SUBTITLE, subTitle)
if (!StringUtil.isNullOrEmpty(imgUrl)) {
movieMetadata.addImage(WebImage(Uri.parse(imgUrl)))
}
return MediaInfo.Builder(contentId)
.setStreamType(MediaInfo.STREAM_TYPE_BUFFERED)
.setContentUrl(url)
.setContentType(mimeType)
.setStreamDuration(duration.toLong())
.build()
}
```

### [REQUIRED] Link to test content
Emailed you the content URL

### [REQUIRED] Version of ExoPlayer being used
Casting framework version : 18.1.0
Exoplayer version : 2.11.1

### [REQUIRED] Device(s) and version(s) of Android being used
Pixel 3 on Android Q
Chromecast 3

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.