Casting failure for M3u8 files
- 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
Assessment
This issue has not been assessed yet.