提交 25551600 编写于 作者: G guoshuyu

update exoplayer 2.11.3

上级 bf97fe11
......@@ -285,6 +285,8 @@ public class DetailPlayer extends AppCompatActivity {
//String url = "http://video.7k.cn/app_video/20171202/6c8cf3ea/v.m3u8.mp4";
//String url = "http://devimages.apple.com.edgekey.net/streaming/examples/bipbop_4x3/bipbop_4x3_variant.m3u8";
String url = "http://9890.vod.myqcloud.com/9890_4e292f9a3dd011e6b4078980237cc3d3.f20.mp4";
//ssl error
//String url = "https://file.shftz.cn:8443/filesystem/download/10/2019/3/26/ce2c7c66-e9eb-42be-adf6-f9008385ea8c.mov/play";
//String url = "https://us-4.wl-cdn.com/hls/20200225/fde4f8ef394731f38d68fe6d601cfd56/index.m3u8";
//String url = "https://cdn61.ytbbs.tv/cn/tv/55550/55550-1/play.m3u8?md5=v4sI4lWlo4XojzeAjgBGaQ&expires=1521204012&token=55550";
//String url = "http://1253492636.vod2.myqcloud.com/2e5fc148vodgzp1253492636/d08af82d4564972819086152830/plHZZoSkje0A.mp4";
......
......@@ -3,6 +3,7 @@ package com.example.gsyvideoplayer;
import androidx.multidex.MultiDexApplication;
import tv.danmaku.ijk.media.exo2.Exo2PlayerManager;
import tv.danmaku.ijk.media.exo2.ExoSourceManager;
import tv.danmaku.ijk.media.exo2.IjkExo2MediaPlayer;
import tv.danmaku.ijk.media.player.IMediaPlayer;
......
package com.example.gsyvideoplayer.source;
import android.content.Context;
import com.google.android.exoplayer2.upstream.DataSource;
import com.google.android.exoplayer2.upstream.DefaultBandwidthMeter;
import com.google.android.exoplayer2.upstream.DefaultDataSourceFactory;
import com.google.android.exoplayer2.util.Util;
public class CustomSourceTag {
/**
* 获取SourceFactory
*/
static public DataSource.Factory getDataSourceFactory(Context context, boolean preview) {
return new DefaultDataSourceFactory(context, preview ? null : new DefaultBandwidthMeter(),
getHttpDataSourceFactory(context, preview));
}
static public DataSource.Factory getHttpDataSourceFactory(Context context, boolean preview) {
DefaultHttpDataSourceFactory dataSourceFactory = new DefaultHttpDataSourceFactory(Util.getUserAgent(context,
"yout tag"), preview ? null : new DefaultBandwidthMeter());
return dataSourceFactory;
}
}
/*
* Copyright (C) 2016 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.example.gsyvideoplayer.source;
import com.google.android.exoplayer2.upstream.HttpDataSource;
import com.google.android.exoplayer2.upstream.HttpDataSource.BaseFactory;
import com.google.android.exoplayer2.upstream.HttpDataSource.Factory;
import com.google.android.exoplayer2.upstream.TransferListener;
import androidx.annotation.Nullable;
/** A {@link Factory} that produces {@link DefaultHttpDataSource} instances. */
public final class DefaultHttpDataSourceFactory extends BaseFactory {
private final String userAgent;
private final @Nullable
TransferListener listener;
private final int connectTimeoutMillis;
private final int readTimeoutMillis;
private final boolean allowCrossProtocolRedirects;
/**
* Constructs a DefaultHttpDataSourceFactory. Sets {@link
* DefaultHttpDataSource#DEFAULT_CONNECT_TIMEOUT_MILLIS} as the connection timeout, {@link
* DefaultHttpDataSource#DEFAULT_READ_TIMEOUT_MILLIS} as the read timeout and disables
* cross-protocol redirects.
*
* @param userAgent The User-Agent string that should be used.
*/
public DefaultHttpDataSourceFactory(String userAgent) {
this(userAgent, null);
}
/**
* Constructs a DefaultHttpDataSourceFactory. Sets {@link
* DefaultHttpDataSource#DEFAULT_CONNECT_TIMEOUT_MILLIS} as the connection timeout, {@link
* DefaultHttpDataSource#DEFAULT_READ_TIMEOUT_MILLIS} as the read timeout and disables
* cross-protocol redirects.
*
* @param userAgent The User-Agent string that should be used.
* @param listener An optional listener.
* @see #DefaultHttpDataSourceFactory(String, TransferListener, int, int, boolean)
*/
public DefaultHttpDataSourceFactory(String userAgent, @Nullable TransferListener listener) {
this(userAgent, listener, DefaultHttpDataSource.DEFAULT_CONNECT_TIMEOUT_MILLIS,
DefaultHttpDataSource.DEFAULT_READ_TIMEOUT_MILLIS, false);
}
/**
* @param userAgent The User-Agent string that should be used.
* @param connectTimeoutMillis The connection timeout that should be used when requesting remote
* data, in milliseconds. A timeout of zero is interpreted as an infinite timeout.
* @param readTimeoutMillis The read timeout that should be used when requesting remote data, in
* milliseconds. A timeout of zero is interpreted as an infinite timeout.
* @param allowCrossProtocolRedirects Whether cross-protocol redirects (i.e. redirects from HTTP
* to HTTPS and vice versa) are enabled.
*/
public DefaultHttpDataSourceFactory(
String userAgent,
int connectTimeoutMillis,
int readTimeoutMillis,
boolean allowCrossProtocolRedirects) {
this(
userAgent,
/* listener= */ null,
connectTimeoutMillis,
readTimeoutMillis,
allowCrossProtocolRedirects);
}
/**
* @param userAgent The User-Agent string that should be used.
* @param listener An optional listener.
* @param connectTimeoutMillis The connection timeout that should be used when requesting remote
* data, in milliseconds. A timeout of zero is interpreted as an infinite timeout.
* @param readTimeoutMillis The read timeout that should be used when requesting remote data, in
* milliseconds. A timeout of zero is interpreted as an infinite timeout.
* @param allowCrossProtocolRedirects Whether cross-protocol redirects (i.e. redirects from HTTP
* to HTTPS and vice versa) are enabled.
*/
public DefaultHttpDataSourceFactory(
String userAgent,
@Nullable TransferListener listener,
int connectTimeoutMillis,
int readTimeoutMillis,
boolean allowCrossProtocolRedirects) {
this.userAgent = userAgent;
this.listener = listener;
this.connectTimeoutMillis = connectTimeoutMillis;
this.readTimeoutMillis = readTimeoutMillis;
this.allowCrossProtocolRedirects = allowCrossProtocolRedirects;
}
@Override
protected DefaultHttpDataSource createDataSourceInternal(
HttpDataSource.RequestProperties defaultRequestProperties) {
DefaultHttpDataSource dataSource =
new DefaultHttpDataSource(
userAgent,
/* contentTypePredicate= */ null,
connectTimeoutMillis,
readTimeoutMillis,
allowCrossProtocolRedirects,
defaultRequestProperties);
if (listener != null) {
dataSource.addTransferListener(listener);
}
return dataSource;
}
}
......@@ -14,7 +14,7 @@ ext {
androidTargetSdkVersion = 28
androidCompileSdkVersion = 28
supportLibraryVersion = '1.1.0-alpha05'
supportLibraryVersion = '1.1.0'
otherVersion = '1.0.0'
......@@ -35,7 +35,7 @@ ext {
gsyVideoVersion = '7.1.2'
exo_player2 = '2.10.4'
exo_player2 = '2.11.3'
permissionsdispatcher = '4.3.0'
......
......@@ -6,7 +6,7 @@ import android.net.Uri;
import androidx.annotation.Nullable;
import tv.danmaku.ijk.media.exo2.source.GSYExoHttpDataSource;
import tv.danmaku.ijk.media.exo2.source.GSYDefaultHttpDataSource;
import tv.danmaku.ijk.media.exo2.source.GSYExoHttpDataSourceFactory;
import android.text.TextUtils;
......@@ -14,7 +14,6 @@ import android.text.TextUtils;
import com.google.android.exoplayer2.C;
import com.google.android.exoplayer2.ext.rtmp.RtmpDataSourceFactory;
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;
......@@ -312,13 +311,13 @@ public class ExoSourceManager {
* 获取SourceFactory
*/
private DataSource.Factory getDataSourceFactory(Context context, boolean preview) {
return new DefaultDataSourceFactory(context, preview ? null : new DefaultBandwidthMeter(),
return new DefaultDataSourceFactory(context, preview ? null : new DefaultBandwidthMeter.Builder(context).build(),
getHttpDataSourceFactory(context, preview));
}
private DataSource.Factory getHttpDataSourceFactory(Context context, boolean preview) {
int connectTimeout = GSYExoHttpDataSource.DEFAULT_CONNECT_TIMEOUT_MILLIS;
int readTimeout = GSYExoHttpDataSource.DEFAULT_READ_TIMEOUT_MILLIS;
int connectTimeout = GSYDefaultHttpDataSource.DEFAULT_CONNECT_TIMEOUT_MILLIS;
int readTimeout = GSYDefaultHttpDataSource.DEFAULT_READ_TIMEOUT_MILLIS;
if (sHttpConnectTimeout > 0) {
connectTimeout = sHttpConnectTimeout;
}
......
......@@ -15,6 +15,7 @@
*/
package tv.danmaku.ijk.media.exo2.source;
import com.google.android.exoplayer2.upstream.DefaultHttpDataSource;
import com.google.android.exoplayer2.upstream.HttpDataSource;
import com.google.android.exoplayer2.upstream.HttpDataSource.BaseFactory;
import com.google.android.exoplayer2.upstream.HttpDataSource.Factory;
......@@ -23,7 +24,7 @@ import com.google.android.exoplayer2.upstream.TransferListener;
import androidx.annotation.Nullable;
/**
A {@link Factory} that produces {@link GSYExoHttpDataSource} instances.
A {@link Factory} that produces {@link GSYDefaultHttpDataSource} instances.
*/
public final class GSYExoHttpDataSourceFactory extends BaseFactory {
......@@ -36,8 +37,8 @@ public final class GSYExoHttpDataSourceFactory extends BaseFactory {
/**
Constructs a GSYExoHttpDataSourceFactory. Sets {@link
GSYExoHttpDataSource#DEFAULT_CONNECT_TIMEOUT_MILLIS} as the connection timeout, {@link
GSYExoHttpDataSource#DEFAULT_READ_TIMEOUT_MILLIS} as the read timeout and disables
GSYDefaultHttpDataSource#DEFAULT_CONNECT_TIMEOUT_MILLIS} as the connection timeout, {@link
GSYDefaultHttpDataSource#DEFAULT_READ_TIMEOUT_MILLIS} as the read timeout and disables
cross-protocol redirects.
@param userAgent The User-Agent string that should be used.
......@@ -48,8 +49,8 @@ public final class GSYExoHttpDataSourceFactory extends BaseFactory {
/**
Constructs a GSYExoHttpDataSourceFactory. Sets {@link
GSYExoHttpDataSource#DEFAULT_CONNECT_TIMEOUT_MILLIS} as the connection timeout, {@link
GSYExoHttpDataSource#DEFAULT_READ_TIMEOUT_MILLIS} as the read timeout and disables
GSYDefaultHttpDataSource#DEFAULT_CONNECT_TIMEOUT_MILLIS} as the connection timeout, {@link
GSYDefaultHttpDataSource#DEFAULT_READ_TIMEOUT_MILLIS} as the read timeout and disables
cross-protocol redirects.
@param userAgent The User-Agent string that should be used.
......@@ -57,8 +58,8 @@ public final class GSYExoHttpDataSourceFactory extends BaseFactory {
@see #GSYExoHttpDataSourceFactory(String, TransferListener, int, int, boolean)
*/
public GSYExoHttpDataSourceFactory(String userAgent, @Nullable TransferListener listener) {
this(userAgent, listener, GSYExoHttpDataSource.DEFAULT_CONNECT_TIMEOUT_MILLIS,
GSYExoHttpDataSource.DEFAULT_READ_TIMEOUT_MILLIS, false);
this(userAgent, listener, GSYDefaultHttpDataSource.DEFAULT_CONNECT_TIMEOUT_MILLIS,
GSYDefaultHttpDataSource.DEFAULT_READ_TIMEOUT_MILLIS, false);
}
/**
......@@ -107,12 +108,11 @@ public final class GSYExoHttpDataSourceFactory extends BaseFactory {
}
@Override
protected GSYExoHttpDataSource createDataSourceInternal(
protected GSYDefaultHttpDataSource createDataSourceInternal(
HttpDataSource.RequestProperties defaultRequestProperties) {
GSYExoHttpDataSource dataSource =
new GSYExoHttpDataSource(
GSYDefaultHttpDataSource dataSource =
new GSYDefaultHttpDataSource(
userAgent,
/* contentTypePredicate= */ null,
connectTimeoutMillis,
readTimeoutMillis,
allowCrossProtocolRedirects,
......
......@@ -36,7 +36,7 @@ dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
api project(':gsyVideoPlayer-java')
//api project(':gsyVideoPlayer-exo_player2')
api project(':gsyVideoPlayer-exo_player2')
//api project(':gsyVideoPlayer-armv5')
//api project(':gsyVideoPlayer-armv7a')
//api project(':gsyVideoPlayer-armv64')
......@@ -49,7 +49,7 @@ dependencies {
//api "com.shuyu:GSYVideoPlayer:$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-armv7a:$gsyVideoVersion"
//api "com.shuyu:gsyVideoPlayer-arm64:$gsyVideoVersion"
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册