Skip to content

Commit bdd8f6a

Browse files
committed
android/sample: use IjkExoPlayer
1 parent bbaa0a4 commit bdd8f6a

4 files changed

Lines changed: 90 additions & 47 deletions

File tree

android/ijkplayer/ijkplayer-sample/src/main/java/tv/danmaku/ijk/media/sample/application/Settings.java

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,11 @@ public class Settings {
2626
private Context mAppContext;
2727
private SharedPreferences mSharedPreferences;
2828

29+
public static final int PV_PLAYER__Auto = 0;
30+
public static final int PV_PLAYER__AndroidMediaPlayer = 1;
31+
public static final int PV_PLAYER__IjkMediaPlayer = 2;
32+
public static final int PV_PLAYER__IjkExoMediaPlayer = 3;
33+
2934
public Settings(Context context) {
3035
mAppContext = context.getApplicationContext();
3136
mSharedPreferences = PreferenceManager.getDefaultSharedPreferences(mAppContext);
@@ -36,9 +41,14 @@ public boolean getEnableBackgroundPlay() {
3641
return mSharedPreferences.getBoolean(key, false);
3742
}
3843

39-
public boolean getUsingAndroidPlayer() {
40-
String key = mAppContext.getString(R.string.pref_key_using_android_player);
41-
return mSharedPreferences.getBoolean(key, false);
44+
public int getPlayer() {
45+
String key = mAppContext.getString(R.string.pref_key_player);
46+
String value = mSharedPreferences.getString(key, "");
47+
try {
48+
return Integer.valueOf(value).intValue();
49+
} catch (NumberFormatException e) {
50+
return 0;
51+
}
4252
}
4353

4454
public boolean getUsingMediaCodec() {

android/ijkplayer/ijkplayer-sample/src/main/java/tv/danmaku/ijk/media/sample/widget/media/IjkVideoView.java

Lines changed: 49 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@
4343
import java.util.Locale;
4444
import java.util.Map;
4545

46+
import tv.danmaku.ijk.media.exo.IjkExoMediaPlayer;
4647
import tv.danmaku.ijk.media.player.AndroidMediaPlayer;
4748
import tv.danmaku.ijk.media.player.IMediaPlayer;
4849
import tv.danmaku.ijk.media.player.IjkMediaPlayer;
@@ -290,46 +291,57 @@ private void openVideo() {
290291
am.requestAudioFocus(null, AudioManager.STREAM_MUSIC, AudioManager.AUDIOFOCUS_GAIN);
291292

292293
try {
293-
if (mSettings.getUsingAndroidPlayer()) {
294-
AndroidMediaPlayer androidMediaPlayer = new AndroidMediaPlayer();
295-
mMediaPlayer = androidMediaPlayer;
296-
} else {
297-
IjkMediaPlayer ijkMediaPlayer = null;
298-
if (mUri != null) {
299-
ijkMediaPlayer = new IjkMediaPlayer();
300-
ijkMediaPlayer.native_setLogLevel(IjkMediaPlayer.IJK_LOG_DEBUG);
301-
302-
if (mSettings.getUsingMediaCodec()) {
303-
ijkMediaPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_PLAYER, "mediacodec", 1);
304-
if (mSettings.getUsingMediaCodecAutoRotate()) {
305-
ijkMediaPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_PLAYER, "mediacodec-auto-rotate", 1);
294+
switch (mSettings.getPlayer()) {
295+
case Settings.PV_PLAYER__IjkMediaPlayer: {
296+
IjkMediaPlayer ijkMediaPlayer = null;
297+
if (mUri != null) {
298+
ijkMediaPlayer = new IjkMediaPlayer();
299+
ijkMediaPlayer.native_setLogLevel(IjkMediaPlayer.IJK_LOG_DEBUG);
300+
301+
if (mSettings.getUsingMediaCodec()) {
302+
ijkMediaPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_PLAYER, "mediacodec", 1);
303+
if (mSettings.getUsingMediaCodecAutoRotate()) {
304+
ijkMediaPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_PLAYER, "mediacodec-auto-rotate", 1);
305+
} else {
306+
ijkMediaPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_PLAYER, "mediacodec-auto-rotate", 0);
307+
}
306308
} else {
307-
ijkMediaPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_PLAYER, "mediacodec-auto-rotate", 0);
309+
ijkMediaPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_PLAYER, "mediacodec", 0);
308310
}
309-
} else {
310-
ijkMediaPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_PLAYER, "mediacodec", 0);
311-
}
312311

313-
if (mSettings.getUsingOpenSLES()) {
314-
ijkMediaPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_PLAYER, "opensles", 1);
315-
} else {
316-
ijkMediaPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_PLAYER, "opensles", 0);
317-
}
312+
if (mSettings.getUsingOpenSLES()) {
313+
ijkMediaPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_PLAYER, "opensles", 1);
314+
} else {
315+
ijkMediaPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_PLAYER, "opensles", 0);
316+
}
318317

319-
String pixelFormat = mSettings.getPixelFormat();
320-
if (TextUtils.isEmpty(pixelFormat)) {
321-
ijkMediaPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_PLAYER, "overlay-format", IjkMediaPlayer.SDL_FCC_RV32);
322-
} else {
323-
ijkMediaPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_PLAYER, "overlay-format", pixelFormat);
324-
}
325-
ijkMediaPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_PLAYER, "framedrop", 1);
326-
ijkMediaPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_PLAYER, "start-on-prepared", 0);
318+
String pixelFormat = mSettings.getPixelFormat();
319+
if (TextUtils.isEmpty(pixelFormat)) {
320+
ijkMediaPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_PLAYER, "overlay-format", IjkMediaPlayer.SDL_FCC_RV32);
321+
} else {
322+
ijkMediaPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_PLAYER, "overlay-format", pixelFormat);
323+
}
324+
ijkMediaPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_PLAYER, "framedrop", 1);
325+
ijkMediaPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_PLAYER, "start-on-prepared", 0);
327326

328-
ijkMediaPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_FORMAT, "http-detect-range-support", 0);
327+
ijkMediaPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_FORMAT, "http-detect-range-support", 0);
329328

330-
ijkMediaPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_CODEC, "skip_loop_filter", 48);
329+
ijkMediaPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_CODEC, "skip_loop_filter", 48);
330+
}
331+
mMediaPlayer = ijkMediaPlayer;
332+
}
333+
break;
334+
case Settings.PV_PLAYER__IjkExoMediaPlayer: {
335+
IjkExoMediaPlayer IjkExoMediaPlayer = new IjkExoMediaPlayer(mAppContext);
336+
mMediaPlayer = IjkExoMediaPlayer;
331337
}
332-
mMediaPlayer = ijkMediaPlayer;
338+
break;
339+
case Settings.PV_PLAYER__AndroidMediaPlayer:
340+
default: {
341+
AndroidMediaPlayer androidMediaPlayer = new AndroidMediaPlayer();
342+
mMediaPlayer = androidMediaPlayer;
343+
}
344+
break;
333345
}
334346

335347
if (mSettings.getEnableDetachedSurfaceTextureView()) {
@@ -456,7 +468,7 @@ public void onPrepared(IMediaPlayer mp) {
456468
mMediaController.show();
457469
}
458470
} else if (!isPlaying() &&
459-
(seekToPosition != 0 || getCurrentPosition() > 0)) {
471+
(seekToPosition != 0 || getCurrentPosition() > 0)) {
460472
if (mMediaController != null) {
461473
// Show the media controls when we're paused into a video and make 'em stick.
462474
mMediaController.show(0);
@@ -1019,7 +1031,7 @@ public void showMediaInfo() {
10191031
ITrackInfo trackInfos[] = mMediaPlayer.getTrackInfo();
10201032
if (trackInfos != null) {
10211033
int index = -1;
1022-
for (ITrackInfo trackInfo: trackInfos) {
1034+
for (ITrackInfo trackInfo : trackInfos) {
10231035
index++;
10241036

10251037
int trackType = trackInfo.getTrackType();
@@ -1082,7 +1094,8 @@ private String buildTimeMilli(long duration) {
10821094
long seconds = total_seconds % 60;
10831095
if (duration <= 0) {
10841096
return "--:--";
1085-
} if (hours >= 100) {
1097+
}
1098+
if (hours >= 100) {
10861099
return String.format(Locale.US, "%d:%02d:%02d", hours, minutes, seconds);
10871100
} else if (hours > 0) {
10881101
return String.format(Locale.US, "%02d:%02d:%02d", hours, minutes, seconds);

android/ijkplayer/ijkplayer-sample/src/main/res/values/strings_pref.xml

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,27 @@
1111
<string name="pref_title_using_android_player">Using system player</string>
1212
<string name="pref_summary_using_android_player"></string>
1313

14+
<string name="pref_key_player">pref.player</string>
15+
<string name="pref_title_player">Choose Player</string>
16+
<string-array name="pref_entries_player">
17+
<item>Auto Select</item>
18+
<item>AndroidMediaPlayer</item>
19+
<item>IjkMediaPlayer</item>
20+
<item>IjkExoMediaPlayer</item>
21+
</string-array>
22+
<string-array name="pref_entry_values_player">
23+
<item>0</item>
24+
<item>1</item>
25+
<item>2</item>
26+
<item>3</item>
27+
</string-array>
28+
<string-array name="pref_entry_summaries_player">
29+
<item>Auto Select</item>
30+
<item>AndroidMediaPlayer</item>
31+
<item>IjkMediaPlayer</item>
32+
<item>IjkExoMediaPlayer</item>
33+
</string-array>
34+
1435
<!-- -->
1536
<string name="pref_title_ijkplayer_video">Video: ijkplayer</string>
1637

android/ijkplayer/ijkplayer-sample/src/main/res/xml/settings.xml

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -8,18 +8,18 @@
88
android:persistent="true"
99
android:summary="@string/pref_summary_enable_background_play"
1010
android:title="@string/pref_title_enable_background_play" />
11-
<CheckBoxPreference
12-
android:defaultValue="false"
13-
android:disableDependentsState="true"
14-
android:key="@string/pref_key_using_android_player"
11+
<tv.danmaku.ijk.media.sample.widget.preference.IjkListPreference
12+
android:defaultValue="0"
13+
android:entries="@@array/pref_entries_player"
14+
android:entryValues="@array/pref_entry_values_player"
15+
android:key="@string/pref_key_player"
1516
android:persistent="true"
16-
android:summary="@string/pref_summary_using_android_player"
17-
android:title="@string/pref_title_using_android_player" />
17+
android:title="@string/pref_title_player"
18+
app:entrySummaries="@array/pref_entry_summaries_player" />
1819
</PreferenceCategory>
1920
<PreferenceCategory android:title="@string/pref_title_ijkplayer_video">
2021
<CheckBoxPreference
2122
android:defaultValue="false"
22-
android:dependency="@string/pref_key_using_android_player"
2323
android:key="@string/pref_key_using_media_codec"
2424
android:persistent="true"
2525
android:summary="@string/pref_summary_using_media_codec"
@@ -42,7 +42,6 @@
4242
<PreferenceCategory android:title="@string/pref_title_ijkplayer_audio">
4343
<CheckBoxPreference
4444
android:defaultValue="false"
45-
android:dependency="@string/pref_key_using_android_player"
4645
android:key="@string/pref_key_using_opensl_es"
4746
android:persistent="true"
4847
android:summary="@string/pref_summary_using_opensl_es"

0 commit comments

Comments
 (0)