提交 873de027 编写于 作者: G guoshuyu

增加 exo 支持 raw

上级 02dc1124
...@@ -11,6 +11,7 @@ import android.widget.RelativeLayout; ...@@ -11,6 +11,7 @@ import android.widget.RelativeLayout;
import com.example.gsyvideoplayer.video.LandLayoutVideo; import com.example.gsyvideoplayer.video.LandLayoutVideo;
import com.google.android.exoplayer2.SeekParameters; import com.google.android.exoplayer2.SeekParameters;
import com.google.android.exoplayer2.upstream.RawResourceDataSource;
import com.shuyu.gsyvideoplayer.GSYVideoManager; import com.shuyu.gsyvideoplayer.GSYVideoManager;
import com.shuyu.gsyvideoplayer.listener.GSYSampleCallBack; import com.shuyu.gsyvideoplayer.listener.GSYSampleCallBack;
import com.shuyu.gsyvideoplayer.listener.GSYVideoProgressListener; import com.shuyu.gsyvideoplayer.listener.GSYVideoProgressListener;
...@@ -253,9 +254,12 @@ public class DetailPlayer extends AppCompatActivity { ...@@ -253,9 +254,12 @@ public class DetailPlayer extends AppCompatActivity {
private String getUrl() { private String getUrl() {
//String url = "android.resource://" + getPackageName() + "/" + R.raw.test; ///String url = "android.resource://" + getPackageName() + "/" + R.raw.test1;
//注意,用ijk模式播放raw视频,这个必须打开 //注意,用ijk模式播放raw视频,这个必须打开
//GSYVideoManager.instance().enableRawPlay(getApplicationContext()); ///GSYVideoManager.instance().enableRawPlay(getApplicationContext());
///exo raw 支持
///String url = RawResourceDataSource.buildRawResourceUri(R.raw.test).toString();
//断网自动重新链接,url前接上ijkhttphook: //断网自动重新链接,url前接上ijkhttphook:
//String url = "ijkhttphook:https://res.exexm.com/cw_145225549855002"; //String url = "ijkhttphook:https://res.exexm.com/cw_145225549855002";
......
...@@ -23,9 +23,11 @@ import com.google.android.exoplayer2.source.hls.HlsMediaSource; ...@@ -23,9 +23,11 @@ import com.google.android.exoplayer2.source.hls.HlsMediaSource;
import com.google.android.exoplayer2.source.smoothstreaming.DefaultSsChunkSource; import com.google.android.exoplayer2.source.smoothstreaming.DefaultSsChunkSource;
import com.google.android.exoplayer2.source.smoothstreaming.SsMediaSource; import com.google.android.exoplayer2.source.smoothstreaming.SsMediaSource;
import com.google.android.exoplayer2.upstream.DataSource; import com.google.android.exoplayer2.upstream.DataSource;
import com.google.android.exoplayer2.upstream.DataSpec;
import com.google.android.exoplayer2.upstream.DefaultBandwidthMeter; import com.google.android.exoplayer2.upstream.DefaultBandwidthMeter;
import com.google.android.exoplayer2.upstream.DefaultDataSourceFactory; import com.google.android.exoplayer2.upstream.DefaultDataSourceFactory;
import com.google.android.exoplayer2.upstream.DefaultHttpDataSourceFactory; import com.google.android.exoplayer2.upstream.DefaultHttpDataSourceFactory;
import com.google.android.exoplayer2.upstream.RawResourceDataSource;
import com.google.android.exoplayer2.upstream.cache.Cache; import com.google.android.exoplayer2.upstream.cache.Cache;
import com.google.android.exoplayer2.upstream.cache.CacheDataSource; import com.google.android.exoplayer2.upstream.cache.CacheDataSource;
import com.google.android.exoplayer2.upstream.cache.CacheDataSourceFactory; import com.google.android.exoplayer2.upstream.cache.CacheDataSourceFactory;
...@@ -95,6 +97,27 @@ public class ExoSourceManager { ...@@ -95,6 +97,27 @@ public class ExoSourceManager {
mDataSource = dataSource; mDataSource = dataSource;
Uri contentUri = Uri.parse(dataSource); Uri contentUri = Uri.parse(dataSource);
int contentType = inferContentType(dataSource, overrideExtension); int contentType = inferContentType(dataSource, overrideExtension);
if("android.resource".equals(contentUri.getScheme())) {
DataSpec dataSpec = new DataSpec(contentUri);
final RawResourceDataSource rawResourceDataSource = new RawResourceDataSource(mAppContext);
try {
rawResourceDataSource.open(dataSpec);
} catch (RawResourceDataSource.RawResourceDataSourceException e) {
e.printStackTrace();
}
DataSource.Factory factory = new DataSource.Factory() {
@Override
public DataSource createDataSource() {
return rawResourceDataSource;
}
};
ExtractorMediaSource extractorMediaSource = new ExtractorMediaSource(rawResourceDataSource.getUri(),
factory, new DefaultExtractorsFactory(), null, null);
return extractorMediaSource;
}
switch (contentType) { switch (contentType) {
case C.TYPE_SS: case C.TYPE_SS:
mediaSource = new SsMediaSource.Factory( mediaSource = new SsMediaSource.Factory(
......
...@@ -36,7 +36,7 @@ dependencies { ...@@ -36,7 +36,7 @@ dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar']) implementation fileTree(dir: 'libs', include: ['*.jar'])
api project(':gsyVideoPlayer-java') api project(':gsyVideoPlayer-java')
//api project(':gsyVideoPlayer-exo_player2') api project(':gsyVideoPlayer-exo_player2')
//api project(':gsyVideoPlayer-armv5') //api project(':gsyVideoPlayer-armv5')
//api project(':gsyVideoPlayer-armv7a') //api project(':gsyVideoPlayer-armv7a')
//api project(':gsyVideoPlayer-armv64') //api project(':gsyVideoPlayer-armv64')
...@@ -49,7 +49,7 @@ dependencies { ...@@ -49,7 +49,7 @@ dependencies {
//api "com.shuyu:GSYVideoPlayer:$gsyVideoVersion" //api "com.shuyu:GSYVideoPlayer:$gsyVideoVersion"
//api "com.shuyu:gsyVideoPlayer-java:$gsyVideoVersion" //api "com.shuyu:gsyVideoPlayer-java:$gsyVideoVersion"
api "com.shuyu:GSYVideoPlayer-exo2:$gsyVideoVersion" //api "com.shuyu:GSYVideoPlayer-exo2:$gsyVideoVersion"
//api "com.shuyu:gsyVideoPlayer-armv5:$gsyVideoVersion" //api "com.shuyu:gsyVideoPlayer-armv5:$gsyVideoVersion"
//api "com.shuyu:gsyVideoPlayer-armv7a:$gsyVideoVersion" //api "com.shuyu:gsyVideoPlayer-armv7a:$gsyVideoVersion"
//api "com.shuyu:gsyVideoPlayer-arm64:$gsyVideoVersion" //api "com.shuyu:gsyVideoPlayer-arm64:$gsyVideoVersion"
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册