Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
NotesChapter
GSYVideoPlayer
提交
b51bebc7
G
GSYVideoPlayer
项目概览
NotesChapter
/
GSYVideoPlayer
与 Fork 源项目一致
从无法访问的项目Fork
通知
8
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
G
GSYVideoPlayer
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
b51bebc7
编写于
11月 29, 2019
作者:
G
guoshuyu
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fix #2436 增加 exo 的 http timeout
上级
18576d6c
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
58 addition
and
17 deletion
+58
-17
app/src/main/java/com/example/gsyvideoplayer/DetailPlayer.java
...rc/main/java/com/example/gsyvideoplayer/DetailPlayer.java
+1
-1
gsyVideoPlayer-exo_player2/src/main/java/tv/danmaku/ijk/media/exo2/ExoSourceManager.java
...main/java/tv/danmaku/ijk/media/exo2/ExoSourceManager.java
+57
-16
未找到文件。
app/src/main/java/com/example/gsyvideoplayer/DetailPlayer.java
浏览文件 @
b51bebc7
...
...
@@ -254,7 +254,7 @@ public class DetailPlayer extends AppCompatActivity {
private
String
getUrl
()
{
//String url = "android.resource://" + getPackageName() + "/" + R.raw.test
1
;
//String url = "android.resource://" + getPackageName() + "/" + R.raw.test;
//注意,用ijk模式播放raw视频,这个必须打开
//GSYVideoManager.instance().enableRawPlay(getApplicationContext());
...
...
gsyVideoPlayer-exo_player2/src/main/java/tv/danmaku/ijk/media/exo2/ExoSourceManager.java
浏览文件 @
b51bebc7
...
...
@@ -17,6 +17,7 @@ import com.google.android.exoplayer2.extractor.DefaultExtractorsFactory;
import
com.google.android.exoplayer2.source.ExtractorMediaSource
;
import
com.google.android.exoplayer2.source.LoopingMediaSource
;
import
com.google.android.exoplayer2.source.MediaSource
;
import
com.google.android.exoplayer2.source.ProgressiveMediaSource
;
import
com.google.android.exoplayer2.source.dash.DashMediaSource
;
import
com.google.android.exoplayer2.source.dash.DefaultDashChunkSource
;
import
com.google.android.exoplayer2.source.hls.HlsMediaSource
;
...
...
@@ -58,7 +59,14 @@ public class ExoSourceManager {
/**
* 忽律Https证书校验
*/
private
static
boolean
mSkipSSLChain
=
false
;
private
static
boolean
sSkipSSLChain
=
false
;
private
static
int
sHttpReadTimeout
=
-
1
;
private
static
int
sHttpConnectTimeout
=
-
1
;
private
static
boolean
s
=
false
;
private
Context
mAppContext
;
...
...
@@ -99,7 +107,7 @@ public class ExoSourceManager {
int
contentType
=
inferContentType
(
dataSource
,
overrideExtension
);
if
(
"android.resource"
.
equals
(
contentUri
.
getScheme
()))
{
if
(
"android.resource"
.
equals
(
contentUri
.
getScheme
()))
{
DataSpec
dataSpec
=
new
DataSpec
(
contentUri
);
final
RawResourceDataSource
rawResourceDataSource
=
new
RawResourceDataSource
(
mAppContext
);
try
{
...
...
@@ -113,9 +121,9 @@ public class ExoSourceManager {
return
rawResourceDataSource
;
}
};
ExtractorMediaSource
extractorMediaSource
=
new
ExtractorMediaSource
(
rawResourceDataSource
.
getUri
(),
factory
,
new
DefaultExtractorsFactory
(),
null
,
null
);
return
extractorMediaSource
;
return
new
ProgressiveMediaSource
.
Factory
(
factory
).
createMediaSource
(
contentUri
);
}
switch
(
contentType
)
{
...
...
@@ -135,14 +143,14 @@ public class ExoSourceManager {
break
;
case
TYPE_RTMP:
RtmpDataSourceFactory
rtmpDataSourceFactory
=
new
RtmpDataSourceFactory
(
null
);
mediaSource
=
new
ExtractorMediaSource
.
Factory
(
rtmpDataSourceFactory
)
.
setExtractorsFactory
(
new
DefaultExtractorsFactory
())
mediaSource
=
new
ProgressiveMediaSource
.
Factory
(
rtmpDataSourceFactory
,
new
DefaultExtractorsFactory
())
.
createMediaSource
(
contentUri
);
break
;
case
C
.
TYPE_OTHER
:
default
:
mediaSource
=
new
ExtractorMediaSource
.
Factory
(
getDataSourceFactoryCache
(
mAppContext
,
cacheEnable
,
preview
,
cacheDir
))
.
setExtractorsFactory
(
new
DefaultExtractorsFactory
())
mediaSource
=
new
ProgressiveMediaSource
.
Factory
(
getDataSourceFactoryCache
(
mAppContext
,
cacheEnable
,
preview
,
cacheDir
),
new
DefaultExtractorsFactory
())
.
createMediaSource
(
contentUri
);
break
;
}
...
...
@@ -251,7 +259,7 @@ public class ExoSourceManager {
public
static
boolean
isSkipSSLChain
()
{
return
m
SkipSSLChain
;
return
s
SkipSSLChain
;
}
/**
...
...
@@ -260,7 +268,30 @@ public class ExoSourceManager {
* @param skipSSLChain true时是hulve
*/
public
static
void
setSkipSSLChain
(
boolean
skipSSLChain
)
{
mSkipSSLChain
=
skipSSLChain
;
sSkipSSLChain
=
skipSSLChain
;
}
public
static
int
getHttpReadTimeout
()
{
return
sHttpReadTimeout
;
}
/**
* 如果设置小于 0 就使用默认 8000 MILLIS
*/
public
static
void
setHttpReadTimeout
(
int
httpReadTimeout
)
{
ExoSourceManager
.
sHttpReadTimeout
=
httpReadTimeout
;
}
public
static
int
getHttpConnectTimeout
()
{
return
sHttpConnectTimeout
;
}
/**
* 如果设置小于 0 就使用默认 8000 MILLIS
*/
public
static
void
setHttpConnectTimeout
(
int
httpConnectTimeout
)
{
ExoSourceManager
.
sHttpConnectTimeout
=
httpConnectTimeout
;
}
/**
...
...
@@ -286,14 +317,23 @@ public class ExoSourceManager {
}
private
DataSource
.
Factory
getHttpDataSourceFactory
(
Context
context
,
boolean
preview
)
{
int
connectTimeout
=
GSYExoHttpDataSource
.
DEFAULT_CONNECT_TIMEOUT_MILLIS
;
int
readTimeout
=
GSYExoHttpDataSource
.
DEFAULT_READ_TIMEOUT_MILLIS
;
if
(
sHttpConnectTimeout
>
0
)
{
connectTimeout
=
sHttpConnectTimeout
;
}
if
(
sHttpReadTimeout
>
0
)
{
readTimeout
=
sHttpReadTimeout
;
}
boolean
allowCrossProtocolRedirects
=
false
;
if
(
mMapHeadData
!=
null
&&
mMapHeadData
.
size
()
>
0
)
{
allowCrossProtocolRedirects
=
"true"
.
equals
(
mMapHeadData
.
get
(
"allowCrossProtocolRedirects"
));
}
if
(
m
SkipSSLChain
)
{
if
(
s
SkipSSLChain
)
{
GSYExoHttpDataSourceFactory
dataSourceFactory
=
new
GSYExoHttpDataSourceFactory
(
Util
.
getUserAgent
(
context
,
TAG
),
preview
?
null
:
new
DefaultBandwidthMeter
(),
GSYExoHttpDataSource
.
DEFAULT_CONNECT_TIMEOUT_MILLIS
,
GSYExoHttpDataSource
.
DEFAULT_READ_TIMEOUT_MILLIS
,
allowCrossProtocolRedirects
);
TAG
),
preview
?
null
:
new
DefaultBandwidthMeter
.
Builder
(
mAppContext
).
build
(),
connectTimeout
,
readTimeout
,
allowCrossProtocolRedirects
);
if
(
mMapHeadData
!=
null
&&
mMapHeadData
.
size
()
>
0
)
{
for
(
Map
.
Entry
<
String
,
String
>
header
:
mMapHeadData
.
entrySet
())
{
dataSourceFactory
.
getDefaultRequestProperties
().
set
(
header
.
getKey
(),
header
.
getValue
());
...
...
@@ -302,8 +342,9 @@ public class ExoSourceManager {
return
dataSourceFactory
;
}
DefaultHttpDataSourceFactory
dataSourceFactory
=
new
DefaultHttpDataSourceFactory
(
Util
.
getUserAgent
(
context
,
TAG
),
preview
?
null
:
new
DefaultBandwidthMeter
(),
GSYExoHttpDataSource
.
DEFAULT_CONNECT_TIMEOUT_MILLIS
,
GSYExoHttpDataSource
.
DEFAULT_READ_TIMEOUT_MILLIS
,
allowCrossProtocolRedirects
);
TAG
),
preview
?
null
:
new
DefaultBandwidthMeter
.
Builder
(
mAppContext
).
build
(),
connectTimeout
,
readTimeout
,
allowCrossProtocolRedirects
);
if
(
mMapHeadData
!=
null
&&
mMapHeadData
.
size
()
>
0
)
{
for
(
Map
.
Entry
<
String
,
String
>
header
:
mMapHeadData
.
entrySet
())
{
dataSourceFactory
.
getDefaultRequestProperties
().
set
(
header
.
getKey
(),
header
.
getValue
());
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录