我正在使用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 at com.google.android.exoplayer2.upstream.DefaultHttpDataSource.open(DefaultHttpDataSource.java:211)at com.google.android.exoplayer2.upstream.DefaultDataSource.open(DefaultDataSource.java:141)at com.google.android.exoplayer2.upstream.DataSourceInputStream.checkopen(DataSourceInputStream.java:102)atcom.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)at java.lang.Thread.run(Thread.java:764)2021 05-06 08:42:12.396 7020-7020/?电子/视频播放视图: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);
下面我提到了我是如何更改“准备HlsVideoUriSusQuery”方法的。
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 player中加载m3u8 authstring?
和任何关于设置mimetype的想法在这里描述Android HLS视频mime类型
如ExoPlayer文档中所述,当尝试打开连接导致响应代码不在2xx范围内时,将引发InvalidResponseCodeException。
错误消息告诉您服务器拒绝了请求,响应代码为403,这意味着您被禁止访问资源。
考虑到它在启用身份验证之前就可以工作,很可能您的令牌生成代码工作不正常,正在生成服务器认为无效的令牌。
我可以找到解决办法,
初始化类时,我添加了
private static final CookieManager DEFAULT_COOKIE_MANAGER;
static
{
DEFAULT_COOKIE_MANAGER = new CookieManager();
DEFAULT_COOKIE_MANAGER.setCookiePolicy(CookiePolicy.ACCEPT_ALL);
}
在OnViewCreated()中,
if (CookieHandler.getDefault() != DEFAULT_COOKIE_MANAGER)
{
CookieHandler.setDefault(DEFAULT_COOKIE_MANAGER);
}
当数据源创建加载时,而不是
最终数据源。工厂dataSourceFactory=new DefaultDataSourceFactory(...)
我补充道
DefaultHttpDataSourceFactory dataSourceFactory = new DefaultHttpDataSourceFactory(MediaHelper.USER_AGENT);
dataSourceFactory.getDefaultRequestProperties().set("Cookie", "cookieValue");
那就行了!
我试了所有的办法,但似乎都不奏效。据我说,图像的路径是正确的。(虽然我附上了一张图片供参考)。这就是我得到的错误- 这是**pubspec.yaml*- 名称:foodfast描述:一个新的颤振项目。 Publish_To:'none' 版本:1.0.0+1 环境:SDK:“>=2.7.0<3.0.0” 依赖项:flutter:SDK:flutter 弹出屏幕:^1.3.5 cupertino_i
我有这个密码。 我正在加载这个url
在谷歌宣布基于IntelliJ的Android Studio后,我想试一试,但我遇到了一个问题。它安装得很好,并且在安装过程中成功地找到了JDK,但是当我尝试启动它时,什么也没有发生。没有错误,没有闪屏没有什么。 还有其他人有过这个问题吗? 谢谢你能提供的任何帮助。
这是我的m3u8,内置字幕: 我使用加载我的hls视频。我的m3u8文件怎么了?
我的简单Web服务器是Python3 SimpleHTTPRequest estHandler,它工作得很好。它在LAN机器的图片文件夹中运行,我已经使用浏览器对其进行了测试并输入了测试URL,例如:http://192.168.1.111:8000/2020-02-09/test.jpg 但是,毕加索不会加载相同的URL。它将通过“file://”加载本地图片。作为测试,我测试了一个Intern
我正在尝试加载图像使用壁画库,但我有一个奇怪的问题。 png图像正在加载,但我加载的是jpg图像我使用的壁画版本是2.0.0,我尝试了一切无效缓存,改变壁画版本,清除数据,重建项目。但对我来说没有任何意义。 不工作 //初始化壁画 您可以在下面看到所有的日志: