【发布时间】:2021-07-28 10:57:31
【问题描述】:
我正在使用 com.google.android.exoplayer2(exoPlayer 版本 = 'r2.5.2'),我必须加载/流式传输视频,例如
> https://something.com/test/something.m3u8
效果很好。
但需求发生了变化,并据此通过在 URL 的查询参数中添加了一些身份验证相关部分来更改视频的“URL 格式”。
> https://something.com/test/something.m3u8?media-auth=exp=1623782763942~acl=/test/7dede44-djnjcndncj/*~hmac=3232434242
现在播放器未加载此视频。
错误日志显示此错误。
2021-05-06 08:42:12.395 7020-7220/? E/ExoPlayerImplInternal:源错误。 com.google.android.exoplayer2.upstream.HttpDataSource$InvalidResponseCodeException:响应代码:403 在 com.google.android.exoplayer2.upstream.DefaultHttpDataSource.open(DefaultHttpDataSource.java:211) 在 com.google.android.exoplayer2.upstream.DefaultDataSource.open(DefaultDataSource.java:141) 在 com.google.android.exoplayer2.upstream.DataSourceInputStream.checkOpened(DataSourceInputStream.java:102) 在 com.google.android.exoplayer2.upstream.DataSourceInputStream.open(DataSourceInputStream.java:65) 在 com.google.android.exoplayer2.upstream.ParsingLoadable.load(ParsingLoadable.java:125) 在 com.google.android.exoplayer2.upstream.Loader$LoadTask.run(Loader.java:315) 在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167) 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641) 在 java.lang.Thread.run(Thread.java:764) 2021-05-06 08:42:12.396 7020-7020/? E/VideoPlayerView: onError
HlsSource sourceHLS = new HlsSource(videoQuiz.video.id(),
videoQuiz.video.title(),
VideoHelper.prepareHlsVideoUriWithQuery("video URL"),
HlsSource.TIME_UNSET,
0,
HlsSource.TIME_UNSET,
0L, null);
videoPlayerView.start(sourceHLS,
toUri(thumbnailUrl),
autoPlay,
getCurrentSegmentStartPosition());
showQuestionAt(currentQuestionPosition);
下面我提到了我如何更改“prepareHlsVideoUriWithQuery”方法。
public static Uri prepareHlsVideoUriWithQuery(String thisUrl) {
URL url = null;
try {
url = new URL("video URL");
} catch (MalformedURLException e) {
e.printStackTrace();
}
Uri.Builder builder = new Uri.Builder()
.scheme(url.getProtocol())
.encodedAuthority(url.getAuthority())
.encodedPath(url.getPath().substring(1))
.encodedQuery("video-auth=exp=24244~test=/test/232323-3232323/*~test=24242c0232n3223");
return builder.build();
}
那么,在 exo 播放器中我必须更改哪个位置才能加载 m3u8+authstring?
任何关于 set mimetype 的想法都在这里描述Android HLS video mime type
【问题讨论】:
标签: android video-streaming mime-types http-live-streaming exoplayer