Closed shoyu666 closed 7 years ago
It's unclear what the problem being described is. Please provide clear reproduction steps (ideally using the demo app or a minimal modification of it).
thank for reply i use demo find same problem
step 1
change json
"name": "Playlists",
"samples": [
{
"name": "Cats -> Dogs",
"playlist": [
{
"uri": "http://1253365662.vod2.myqcloud.com/2bd5f4a6vodgzp1253365662/82a51d919031868222882862818/f0.mp4"
},
{
"uri": "http://1253365662.vod2.myqcloud.com/2bd5f4a6vodgzp1253365662/82a5a1709031868222882863618/f0.mp4"
}
]
},
step 2
<com.google.android.exoplayer2.ui.SimpleExoPlayerView android:id="@+id/player_view"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
to
<com.google.android.exoplayer2.ui.PlaybackControlView android:id="@+id/player_view"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
// simpleExoPlayerView before SimpleExoPlayerView now is PlaybackControlView
simpleExoPlayerView = (PlaybackControlView) findViewById(R.id.player_view);
// simpleExoPlayerView.setControllerVisibilityListener(this); remove it
simpleExoPlayerView.requestFocus();
simpleExoPlayerView.show(); add show
@Override
public boolean dispatchKeyEvent(KeyEvent event) {
// Show the controls on any key event.
// simpleExoPlayerView.showController(); remove it
// If the event was not handled then see if the player view can handle it as a media key event.
return super.dispatchKeyEvent(event) || simpleExoPlayerView.dispatchMediaKeyEvent(event);
}
step 3
add log
PlaybackControlView#updateProgress
long duration = player == null ? 0 : player.getDuration();
long position = player == null ? 0 : player.getCurrentPosition();
android.util.Log.d("updateProgress","duration "+duration+" position "+position); add log
if (durationView != null) {
durationView.setText(stringForTime(duration));
}
android.util.Log.d("updateProgress","duration "+duration+" position "+position); log
03-16 09:17:44.875 12004-12004/com.google.android.exoplayer2.demo D/updateProgress: duration -9223372036854775807 position 0
03-16 09:17:44.960 12004-12004/com.google.android.exoplayer2.demo D/updateProgress: duration 3125 position 0
03-16 09:17:45.029 12004-12004/com.google.android.exoplayer2.demo D/updateProgress: duration 3125 position 0
03-16 09:17:45.182 12004-12004/com.google.android.exoplayer2.demo D/updateProgress: duration 3125 position 28
03-16 09:17:46.155 12004-12004/com.google.android.exoplayer2.demo D/updateProgress: duration 3125 position 929
03-16 09:17:47.227 12004-12004/com.google.android.exoplayer2.demo D/updateProgress: duration 3125 position 2005
03-16 09:17:48.143 12004-12004/com.google.android.exoplayer2.demo D/updateProgress: duration 3125 position 2919
03-16 09:17:49.146 12004-12004/com.google.android.exoplayer2.demo D/updateProgress: duration 3125 position 2937
03-16 09:17:50.148 12004-12004/com.google.android.exoplayer2.demo D/updateProgress: duration 3125 position 2937
03-16 09:17:51.148 12004-12004/com.google.android.exoplayer2.demo D/updateProgress: duration 3125 position 2937
03-16 09:17:52.151 12004-12004/com.google.android.exoplayer2.demo D/updateProgress: duration 3125 position 2937
03-16 09:17:53.153 12004-12004/com.google.android.exoplayer2.demo D/updateProgress: duration 3125 position 2937
03-16 09:17:54.154 12004-12004/com.google.android.exoplayer2.demo D/updateProgress: duration 3125 position 2937
more.... duration 3125 position 2937
position always < duration ?
EventLogger
03-16 09:18:28.118 12004-12004/com.google.android.exoplayer2.demo D/EventLogger: videoDisabled [11.34]
03-16 09:18:28.118 12004-12004/com.google.android.exoplayer2.demo D/EventLogger: audioDisabled [11.34]
03-16 09:18:29.527 12004-12004/com.google.android.exoplayer2.demo D/EventLogger: state [0.00, true, I]
03-16 09:18:29.546 12004-12004/com.google.android.exoplayer2.demo D/EventLogger: state [0.02, true, B]
03-16 09:18:29.546 12004-12004/com.google.android.exoplayer2.demo D/EventLogger: sourceInfo [periodCount=2, windowCount=2
03-16 09:18:29.546 12004-12004/com.google.android.exoplayer2.demo D/EventLogger: period [?]
03-16 09:18:29.546 12004-12004/com.google.android.exoplayer2.demo D/EventLogger: period [?]
03-16 09:18:29.546 12004-12004/com.google.android.exoplayer2.demo D/EventLogger: window [?, false, false]
03-16 09:18:29.546 12004-12004/com.google.android.exoplayer2.demo D/EventLogger: window [?, false, false]
03-16 09:18:29.546 12004-12004/com.google.android.exoplayer2.demo D/EventLogger: ]
03-16 09:18:29.546 12004-12004/com.google.android.exoplayer2.demo D/EventLogger: loading [true]
03-16 09:18:29.562 12004-12004/com.google.android.exoplayer2.demo D/EventLogger: sourceInfo [periodCount=2, windowCount=2
03-16 09:18:29.563 12004-12004/com.google.android.exoplayer2.demo D/EventLogger: period [3.12]
03-16 09:18:29.563 12004-12004/com.google.android.exoplayer2.demo D/EventLogger: period [?]
03-16 09:18:29.563 12004-12004/com.google.android.exoplayer2.demo D/EventLogger: window [3.12, true, false]
03-16 09:18:29.563 12004-12004/com.google.android.exoplayer2.demo D/EventLogger: window [?, false, false]
03-16 09:18:29.563 12004-12004/com.google.android.exoplayer2.demo D/EventLogger: ]
03-16 09:18:29.565 12004-12004/com.google.android.exoplayer2.demo D/EventLogger: Tracks [
03-16 09:18:29.565 12004-12004/com.google.android.exoplayer2.demo D/EventLogger: Renderer:0 [
03-16 09:18:29.565 12004-12004/com.google.android.exoplayer2.demo D/EventLogger: Group:0, adaptive_supported=N/A [
03-16 09:18:29.565 12004-12004/com.google.android.exoplayer2.demo D/EventLogger: [X] Track:0, id=1, mimeType=video/avc, res=176x144, supported=YES
03-16 09:18:29.566 12004-12004/com.google.android.exoplayer2.demo D/EventLogger: ]
03-16 09:18:29.566 12004-12004/com.google.android.exoplayer2.demo D/EventLogger: ]
03-16 09:18:29.566 12004-12004/com.google.android.exoplayer2.demo D/EventLogger: Renderer:1 [
03-16 09:18:29.566 12004-12004/com.google.android.exoplayer2.demo D/EventLogger: Group:0, adaptive_supported=N/A [
03-16 09:18:29.566 12004-12004/com.google.android.exoplayer2.demo D/EventLogger: [X] Track:0, id=2, mimeType=audio/mp4a-latm, channels=2, sample_rate=48000, language=und, supported=YES
03-16 09:18:29.566 12004-12004/com.google.android.exoplayer2.demo D/EventLogger: ]
03-16 09:18:29.566 12004-12004/com.google.android.exoplayer2.demo D/EventLogger: Metadata [
03-16 09:18:29.566 12004-12004/com.google.android.exoplayer2.demo D/EventLogger: TSSE: value=Lavf56.40.101
03-16 09:18:29.566 12004-12004/com.google.android.exoplayer2.demo D/EventLogger: ]
03-16 09:18:29.566 12004-12004/com.google.android.exoplayer2.demo D/EventLogger: ]
03-16 09:18:29.566 12004-12004/com.google.android.exoplayer2.demo D/EventLogger: ]
03-16 09:18:29.566 12004-12004/com.google.android.exoplayer2.demo D/EventLogger: videoEnabled [0.04]
03-16 09:18:29.566 12004-12004/com.google.android.exoplayer2.demo D/EventLogger: audioEnabled [0.04]
03-16 09:18:29.574 12004-12004/com.google.android.exoplayer2.demo D/EventLogger: videoFormatChanged [0.05, id=1, mimeType=video/avc, res=176x144]
03-16 09:18:29.592 12004-12004/com.google.android.exoplayer2.demo D/EventLogger: audioDecoderInitialized [0.06, OMX.google.aac.decoder]
03-16 09:18:29.592 12004-12004/com.google.android.exoplayer2.demo D/EventLogger: audioFormatChanged [0.06, id=2, mimeType=audio/mp4a-latm, channels=2, sample_rate=48000, language=und]
03-16 09:18:29.593 12004-12004/com.google.android.exoplayer2.demo D/EventLogger: state [0.07, true, R]
03-16 09:18:29.604 12004-12004/com.google.android.exoplayer2.demo D/EventLogger: audioSessionId [5376]
03-16 09:18:29.696 12004-12004/com.google.android.exoplayer2.demo D/EventLogger: sourceInfo [periodCount=2, windowCount=2
03-16 09:18:29.697 12004-12004/com.google.android.exoplayer2.demo D/EventLogger: period [3.12]
03-16 09:18:29.697 12004-12004/com.google.android.exoplayer2.demo D/EventLogger: period [73.00]
03-16 09:18:29.697 12004-12004/com.google.android.exoplayer2.demo D/EventLogger: window [3.12, true, false]
03-16 09:18:29.697 12004-12004/com.google.android.exoplayer2.demo D/EventLogger: window [73.00, true, false]
03-16 09:18:29.697 12004-12004/com.google.android.exoplayer2.demo D/EventLogger: ]
03-16 09:18:29.815 12004-12004/com.google.android.exoplayer2.demo D/EventLogger: loading [false]
03-16 09:18:32.643 12004-12004/com.google.android.exoplayer2.demo D/EventLogger: state [3.12, true, B]
E is End? but never E
i find mp4 1 play end and mp4 2 will play auto ( i use demo with out modify) mp4 1 play end but mp4 2 will not play auto ( i use demo with modify)
These MP4s have video streams but there is no surface to render to, as unlike the demo app you're not using a SimpleExoPlayerView
. If you have control over what files you're playing, I think the best fix is to remove the video streams so that the source MP4s only have audio. Alternative options include disabling the video renderer (e.g. trackSelector.setRendererDisabled(0, true)
), or subclassing SimpleExoPlayer
and overriding buildVideoRenderers
to do nothing.
@andrewlewis thanks for you reply subclassing SimpleExoPlayer and overriding buildVideoRenderers to do nothing it work for me thanks
dear author: i use com.google.android.exoplayer:exoplayer:r2.2.0 play mp4 url source but meet a proplem
i use PlaybackControlView only with out SimpleExoPlayerView we only care about audio in mp4
we want play mp4 A ,when A end , auto play mp4 B but position always <duration and STATE_ENDED never rev (onPlayerStateChanged)