Skip to content

Commit

Permalink
exoplayer version change
Browse files Browse the repository at this point in the history
  • Loading branch information
mkaflowski committed Oct 14, 2022
1 parent 4820594 commit 092f741
Show file tree
Hide file tree
Showing 3 changed files with 64 additions and 40 deletions.
6 changes: 3 additions & 3 deletions demo/src/main/java/hybridmediaplayer/demo/MainActivity.java
Original file line number Diff line number Diff line change
Expand Up @@ -118,7 +118,7 @@ private void createPlayer() {
mediaPlayer.stop();
mediaPlayer.release();
}
String url = "http://217.74.72.11/RADIOFONIA";
String url = "https://www.soundhelix.com/examples/mp3/SoundHelix-Song-1.mp3";

String url2 = "http://217.74.72.11/RADIOFONIA";
String url3 = "https://github.com/mediaelement/mediaelement-files/blob/master/big_buck_bunny.mp4?raw=true";
Expand Down Expand Up @@ -224,7 +224,8 @@ public void onClick(View view) {
KLog.i(mediaPlayer.getDuration());
}
} else if (view.getId() == R.id.fastForward) {
mediaPlayer.seekTo(mediaPlayer.getDuration() - 1500);
mediaPlayer.seekTo(mediaPlayer.getCurrentPosition() + 1500);
KLog.e(mediaPlayer.getCurrentPlayer().getCurrentWindowIndex());
// mediaPlayer.seekTo(mediaPlayer.getCurrentPosition() + 2000);
} else if (view.getId() == R.id.btSpeed) {
// loadOtherSources();
Expand Down Expand Up @@ -252,7 +253,6 @@ public void onClick(View view) {
KLog.d(mediaPlayer.getCurrentWindow());
KLog.i("abc " + (mediaPlayer.getCurrentWindow() + 1) % mediaPlayer.getWindowCount() + " / " + mediaPlayer.getWindowCount());
mediaPlayer.seekTo((mediaPlayer.getCurrentWindow() + 1) % mediaPlayer.getWindowCount(), 0);
mediaPlayer.seekTo(1000);
KLog.i(mediaPlayer.getCurrentPlayer().getPlaybackState());
// KLog.i(mediaPlayer.getCurrentPlayer().getPlaybackError());
} else if (view.getId() == R.id.btCreatePlayer) {
Expand Down
9 changes: 3 additions & 6 deletions hybridmediaplayer/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,11 @@ apply plugin: 'com.github.dcendents.android-maven'
group = 'com.github.mkaflowski'

android {
compileSdkVersion 30
compileSdkVersion 31

defaultConfig {
minSdkVersion 16
targetSdkVersion 30
targetSdkVersion 31
versionCode 1
versionName "1.0"

Expand Down Expand Up @@ -37,13 +37,10 @@ dependencies {
})
testImplementation 'junit:junit:4.12'

implementation 'com.android.support:support-compat:28.0.0'
implementation 'com.github.zhaokaiqiang.klog:library:1.6.0'
api 'com.google.android.exoplayer:exoplayer:2.15.0'
api "com.google.android.exoplayer:extension-mediasession:2.15.0"
api 'com.google.android.exoplayer:extension-cast:2.14.0'

api 'com.google.android.gms:play-services-cast-framework:20.0.0'
api 'com.google.android.exoplayer:extension-cast:2.15.0'

}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,9 @@
import android.os.Handler;
import android.view.SurfaceView;

import com.google.android.exoplayer2.ExoPlaybackException;
import com.google.android.exoplayer2.LoadControl;
import com.google.android.exoplayer2.MediaItem;
import com.google.android.exoplayer2.MediaMetadata;
import com.google.android.exoplayer2.PlaybackException;
import com.google.android.exoplayer2.PlaybackParameters;
import com.google.android.exoplayer2.Player;
Expand All @@ -31,15 +32,11 @@
import com.google.android.exoplayer2.upstream.LoadErrorHandlingPolicy;
import com.google.android.exoplayer2.util.MimeTypes;
import com.google.android.exoplayer2.util.Util;
import com.google.android.gms.cast.MediaInfo;
import com.google.android.gms.cast.MediaMetadata;
import com.google.android.gms.cast.MediaQueueItem;
import com.google.android.gms.cast.MediaStatus;
import com.google.android.gms.cast.framework.CastContext;
import com.google.android.gms.cast.framework.CastSession;
import com.google.android.gms.cast.framework.SessionManager;
import com.google.android.gms.cast.framework.media.RemoteMediaClient;
import com.google.android.gms.common.images.WebImage;
import com.socks.library.KLog;

import java.util.ArrayList;
Expand All @@ -58,7 +55,7 @@ public class ExoMediaPlayer extends HybridMediaPlayer implements SessionAvailabi

private Context context;
private MediaSource exoMediaSource;
private MediaQueueItem[] mediaItems = new MediaQueueItem[0];
private List<MediaItem> mediaItems;
private int currentState;
private boolean isPreparing = false;
private OnTrackChangedListener onTrackChangedListener;
Expand Down Expand Up @@ -184,31 +181,41 @@ private void init() {
private void prepareCastMediaSourceInfoList(List<MediaSourceInfo> mediaSourceInfoList) {
this.mediaSourceInfoList = mediaSourceInfoList;
//media sources for CastPlayer
mediaItems = new MediaQueueItem[mediaSourceInfoList.size()];
mediaItems = new ArrayList<>();
for (int i = 0; i < mediaSourceInfoList.size(); i++) {
mediaItems[i] = buildMediaQueueItem(mediaSourceInfoList.get(i).getUrl(), mediaSourceInfoList.get(i), i + 1);
MediaItem mediaItem = buildMediaQueueItem(mediaSourceInfoList.get(i), i + 1);
mediaItems.add(mediaItem);
}
}

private MediaQueueItem buildMediaQueueItem(String url, MediaSourceInfo mediaSourceInfo, int position) {
private MediaItem buildMediaQueueItem(MediaSourceInfo mediaSourceInfo, int position) {
if (mediaSourceInfo == null)
mediaSourceInfo = MediaSourceInfo.PLACEHOLDER;

MediaMetadata movieMetadata = new MediaMetadata(mediaSourceInfo.isVideo() ? MediaMetadata.MEDIA_TYPE_MOVIE : MediaMetadata.MEDIA_TYPE_MUSIC_TRACK);
movieMetadata.putString(MediaMetadata.KEY_TITLE, mediaSourceInfo.getTitle());
movieMetadata.putString(MediaMetadata.KEY_ALBUM_ARTIST, mediaSourceInfo.getAuthor());
movieMetadata.putInt(MediaMetadata.KEY_TRACK_NUMBER, position);
String imageUrl = mediaSourceInfo.getImageUrl();
if (imageUrl != null) {
Uri parse = Uri.parse(imageUrl);
movieMetadata.addImage(new WebImage(parse));
}
MediaInfo mediaInfo = new MediaInfo.Builder(url)
.setStreamType(MediaInfo.STREAM_TYPE_BUFFERED)
.setContentType(mediaSourceInfo.isVideo() ? MimeTypes.VIDEO_UNKNOWN : MimeTypes.AUDIO_UNKNOWN)
.setMetadata(movieMetadata).build();
MediaMetadata.Builder movieMetadata = new MediaMetadata.Builder();
movieMetadata.setTitle(mediaSourceInfo.getTitle());
movieMetadata.setArtist(mediaSourceInfo.getAuthor());

// MediaMetadata movieMetadata = new MediaMetadata(mediaSourceInfo.isVideo() ? MediaMetadata.MEDIA_TYPE_MOVIE : MediaMetadata.MEDIA_TYPE_MUSIC_TRACK);
// movieMetadata.putString(MediaMetadata.KEY_TITLE, mediaSourceInfo.getTitle());
// movieMetadata.putString(MediaMetadata.KEY_ALBUM_ARTIST, mediaSourceInfo.getAuthor());
// movieMetadata.putInt(MediaMetadata.KEY_TRACK_NUMBER, position);
// String imageUrl = mediaSourceInfo.getImageUrl();
// if (imageUrl != null) {
// Uri parse = Uri.parse(imageUrl);
// movieMetadata.addImage(new WebImage(parse));
// }
// MediaInfo mediaInfo = new MediaInfo.Builder(url)
// .setStreamType(MediaInfo.STREAM_TYPE_BUFFERED)
// .setContentType(mediaSourceInfo.isVideo() ? MimeTypes.VIDEO_UNKNOWN : MimeTypes.AUDIO_UNKNOWN)
// .setMetadata(movieMetadata).build();

return new MediaQueueItem.Builder(mediaInfo).build();
MediaItem.Builder builder = new MediaItem.Builder();
builder.setMimeType(mediaSourceInfo.isVideo() ? MimeTypes.VIDEO_UNKNOWN : MimeTypes.AUDIO_UNKNOWN);
builder.setUri(mediaSourceInfo.getUrl());
builder.setMediaMetadata(movieMetadata.build());

return builder.build();
}


Expand Down Expand Up @@ -237,14 +244,26 @@ public void onAudioSessionIdChanged(EventTime eventTime, int audioSessionId) {
init();

if (castPlayer != null && isCasting()) {
castPlayer.loadItems(mediaItems, initialWindowNum, 0, Player.REPEAT_MODE_OFF);
// castPlayer.setPlayWhenReady(true);
castPlayer.setPlayWhenReady(true);
}

if (onTrackChangedListener != null)
onTrackChangedListener.onTrackChanged(false);
}

private void setCastItems() {
// castPlayer.clearMediaItems();
ArrayList<MediaItem> mediaItemsCast = new ArrayList<>();
int i = 0;
for (MediaSourceInfo mediaItem : mediaSourceInfoList) {
mediaItemsCast.add(buildMediaQueueItem(mediaItem, i));
i++;
}
KLog.d(mediaItemsCast.size());
castPlayer.setMediaItems(mediaItemsCast, currentWindow, exoPlayer.getCurrentPosition());
castPlayer.play();
}

private void setEqualizer() {
if (!isSupportingSystemEqualizer)
return;
Expand Down Expand Up @@ -315,7 +334,8 @@ public void seekTo(int windowIndex, int msec) {
}
try {
if (currentPlayer == castPlayer)
castPlayer.loadItems(mediaItems, windowIndex, msec, Player.REPEAT_MODE_OFF);
castPlayer.seekTo(windowIndex, msec);
// castPlayer.loadItems(mediaItems, windowIndex, msec, Player.REPEAT_MODE_OFF);
else
currentPlayer.seekTo(windowIndex, msec);
} catch (ArrayIndexOutOfBoundsException e) {
Expand Down Expand Up @@ -399,13 +419,17 @@ public void setLoadErrorHandlingPolicy(LoadErrorHandlingPolicy loadErrorHandling

@Override
public void onCastSessionAvailable() {
setCurrentPlayer(castPlayer);
KLog.d();
if (currentPlayer != castPlayer)
setCurrentPlayer(castPlayer);
if (onCastAvailabilityChangeListener != null)
onCastAvailabilityChangeListener.onCastAvailabilityChange(true);
}

@Override
public void onCastSessionUnavailable() {
KLog.e(castPlayer.getCurrentWindowIndex());
KLog.e(exoPlayer.getCurrentWindowIndex());
setCurrentPlayer(exoPlayer);
if (onCastAvailabilityChangeListener != null)
onCastAvailabilityChangeListener.onCastAvailabilityChange(false);
Expand All @@ -426,18 +450,21 @@ private void setCurrentPlayer(Player player) {
long time = currentPlayer.getCurrentPosition();
int window = currentPlayer.getCurrentWindowIndex();

KLog.d(window);
KLog.i(time);

currentPlayer = player;
isPreparing = true;


if (currentPlayer == castPlayer) {
KLog.d();
isCasting = true;
if (mediaItems.length != 0)
castPlayer.loadItems(mediaItems, window, time, Player.REPEAT_MODE_OFF);
if (mediaItems != null && mediaItems.size() != 0)
setCastItems();
}

if (currentPlayer == exoPlayer) {
seekTo(window, (int) time);
seekTo(currentWindow, (int) time);
if (shouldPlay)
play();
else
Expand Down

0 comments on commit 092f741

Please sign in to comment.