若使用ExoPlayer在Android应用中播放DRM启用的DASH流时返回415响应代码,可能是因为服务器未正确响应请求或未提供所需的内容类型。可以使用以下代码在ExoPlayer中设置所需的内容类型:
val drmSessionManager = DefaultDrmSessionManager.Builder()
.setUuidAndExoMediaDrmProvider(C.WIDEVINE_UUID, FrameworkMediaDrm.DEFAULT_PROVIDER)
.build(mediaDrm)
val trackingSelector = DefaultTrackSelector(adaptiveTrackSelectionFactory)
val httpDataSourceFactory = DefaultHttpDataSourceFactory(Util.getUserAgent(context, "app-name"))
httpDataSourceFactory.defaultRequestProperties["Content-Type"] = "application/dash+xml"
val mediaSource = DashMediaSource.Factory(
DefaultDashChunkSource.Factory(httpDataSourceFactory),
buildDataSourceFactory(),
DefaultDashTrackSelector()
).createMediaSource(Uri.parse(url))
val player = ExoPlayerFactory.newSimpleInstance(context, trackingSelector, DefaultLoadControl())
player.prepare(mediaSource)
在上述代码中,httpDataSourceFactory
使用了DefaultHttpDataSourceFactory
,并设置了Content-Type
属性为application/dash+xml
。这将确保向服务器发送的请求具有所需的内容类型,从而避免返回415响应代码。