参考:
ExoPlayer Home |
备注1:
04-13 21:22:29.978 1723 1828 W DebugLog: ExoMediaPlayer: onPlayerError
04-13 21:22:29.978 1723 1828 W DebugLog: com.google.android.exoplayer2.ExoPlaybackException
04-13 21:22:29.978 1723 1828 W DebugLog: at com.google.android.exoplayer2.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:353)
04-13 21:22:29.978 1723 1828 W DebugLog: at android.os.Handler.dispatchMessage(Handler.java:98)
04-13 21:22:29.978 1723 1828 W DebugLog: at android.os.Looper.loop(Looper.java:136)
04-13 21:22:29.978 1723 1828 W DebugLog: at android.os.HandlerThread.run(HandlerThread.java:61)
04-13 21:22:29.978 1723 1828 W DebugLog: Caused by: com.google.android.exoplayer2.source.UnrecognizedInputFormatException: None of the available extractors (MatroskaExtractor, FragmentedMp4Extractor, Mp4Extractor, Mp3Extractor, AdtsExtractor, Ac3Extractor, TsExtractor, FlvExtractor, OggExtractor, PsExtractor, WavExtractor) could read the stream.
04-13 21:22:29.978 1723 1828 W DebugLog: at com.google.android.exoplayer2.source.ExtractorMediaPeriod$ExtractorHolder.selectExtractor(ExtractorMediaPeriod.java:924)
04-13 21:22:29.978 1723 1828 W DebugLog: at com.google.android.exoplayer2.source.ExtractorMediaPeriod$ExtractingLoadable.load(ExtractorMediaPeriod.java:846)
04-13 21:22:29.978 1723 1828 W DebugLog: at com.google.android.exoplayer2.upstream.Loader$LoadTask.run(Loader.java:308)
04-13 21:22:29.978 1723 1828 W DebugLog: at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
04-13 21:22:29.978 1723 1828 W DebugLog: at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
04-13 21:22:29.978 1723 1828 W DebugLog: at java.lang.Thread.run(Thread.java:841)
04-13 21:22:29.998 1723 1828 D MediaExtendPlayer: onError: what=0, extra=0
备注2:
调整display尺寸,会再次触发 onVideoSizeChanged、onRenderedFirstFrame
04-14 07:48:12.988 28648 28782 D MediaExtendPlayer: setMediaDisplay
04-14 07:48:12.998 28648 28782 D MediaProgramPlayer: InitializedState: MSG_UPDATE_SURFACE: set surface
04-14 07:48:12.998 28648 28782 V TaskPlayer: [000001|test:///1] onInfoUpdated: prop=RECTANGLE
04-14 07:48:12.998 28648 28782 D TaskPlayer: [000001|test:///1] notifyListener: onEvent: what=INFO_CHANGED, extra=17
04-14 07:48:12.998 28648 28648 D TvService: onLayoutChange
04-14 07:48:12.998 28648 28648 D TvService: onLayoutChange updated
04-14 07:48:13.008 28648 28671 D TvService: setInputPosition
04-14 07:48:13.008 28648 28782 D ExoMediaPlayer: onVideoSizeChanged
04-14 07:48:13.008 28648 28782 D MediaExtendPlayer: onVideoSizeChanged: width=640, height=400
04-14 07:48:13.008 28648 28782 D ExoMediaPlayer: onRenderedFirstFrame
04-14 07:48:13.018 28648 28782 D MediaExtendPlayer: onInfo: what=3, extra=0
04-14 07:48:13.018 28648 28782 D MediaExtendPlayer: onVideoSizeChanged: width=640, height=400
04-14 07:48:13.028 28648 28782 D MediaExtendPlayer: onReady: extra=0
04-14 07:48:13.458 28648 28648 D TvService: onLayoutChange
备注3:
preseek 没有效果
04-14 07:48:11.468 28648 28782 D TaskPlayer: [000001|test:///1] notifyListener: onStatusChange: PLAYING/0/PREPARED:85[45975][0%][Ready][Seeking]
04-14 07:48:11.468 28648 28782 V MediaProgramPlayer: StartedState enter
04-14 07:48:11.478 28648 28782 D MediaExtendPlayer: start
04-14 07:48:11.488 28648 28782 D ExoMediaPlayer: start
04-14 07:48:11.498 28648 28782 D ExoMediaPlayer: onPlayerStateChanged true, 3
04-14 07:48:11.508 28648 28782 D MediaExtendPlayer: onInfo: what=702, extra=0
04-14 07:48:11.548 28648 28782 V TaskPlayer: [000001|test:///1] onStateChangeTo: state=STARTED
04-14 07:48:11.558 28648 28782 D TaskPlayer: [000001|test:///1] notifyListener: onStatusChange: PLAYING/0/STARTED:85[45975][0%][Ready][Seeking]
04-14 07:48:11.568 28648 28782 V TaskPlayer: [000001|test:///1] onEvent: what=5, extra=154
04-14 07:48:11.568 28648 28782 D TaskPlayer: [000001|test:///1] notifyListener: onEvent: what=SEEKING_END, extra=154
04-14 07:48:11.598 28648 28782 D TaskPlayer: [000001|test:///1] notifyListener: onStatusChange: PLAYING/0/STARTED:17[165][0%][Ready]
备注4:
joint hls 失败
04-15 07:54:19.618 6825 6825 W ExoMediaPlayer: onPlayerError
04-15 07:54:19.618 6825 6825 W ExoMediaPlayer: com.google.android.exoplayer2.ExoPlaybackException
04-15 07:54:19.618 6825 6825 W ExoMediaPlayer: at com.google.android.exoplayer2.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:353)
04-15 07:54:19.618 6825 6825 W ExoMediaPlayer: at android.os.Handler.dispatchMessage(Handler.java:98)
04-15 07:54:19.618 6825 6825 W ExoMediaPlayer: at android.os.Looper.loop(Looper.java:136)
04-15 07:54:19.618 6825 6825 W ExoMediaPlayer: at android.os.HandlerThread.run(HandlerThread.java:61)
04-15 07:54:19.618 6825 6825 W ExoMediaPlayer: Caused by: java.io.EOFException
04-15 07:54:19.618 6825 6825 W ExoMediaPlayer: at com.google.android.exoplayer2.extractor.DefaultExtractorInput.readFromDataSource(DefaultExtractorInput.java:265)
04-15 07:54:19.618 6825 6825 W ExoMediaPlayer: at com.google.android.exoplayer2.extractor.DefaultExtractorInput.skipFully(DefaultExtractorInput.java:102)
04-15 07:54:19.618 6825 6825 W ExoMediaPlayer: at com.google.android.exoplayer2.extractor.DefaultExtractorInput.skipFully(DefaultExtractorInput.java:110)
04-15 07:54:19.618 6825 6825 W ExoMediaPlayer: at com.google.android.exoplayer2.extractor.mp4.FragmentedMp4Extractor.readAtomPayload(FragmentedMp4Extractor.java:417)
04-15 07:54:19.618 6825 6825 W ExoMediaPlayer: at com.google.android.exoplayer2.extractor.mp4.FragmentedMp4Extractor.read(FragmentedMp4Extractor.java:305)
04-15 07:54:19.618 6825 6825 W ExoMediaPlayer: at com.google.android.exoplayer2.source.hls.HlsMediaChunk.loadMedia(HlsMediaChunk.java:285)
04-15 07:54:19.618 6825 6825 W ExoMediaPlayer: at com.google.android.exoplayer2.source.hls.HlsMediaChunk.load(HlsMediaChunk.java:219)
04-15 07:54:19.618 6825 6825 W ExoMediaPlayer: at com.google.android.exoplayer2.upstream.Loader$LoadTask.run(Loader.java:308)
04-15 07:54:19.618 6825 6825 W ExoMediaPlayer: at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
04-15 07:54:19.618 6825 6825 W ExoMediaPlayer: at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
04-15 07:54:19.618 6825 6825 W ExoMediaPlayer: at java.lang.Thread.run(Thread.java:841)
备注5:
04-15 08:08:20.048 6825 26840 E LoadTask: Unexpected exception loading stream
04-15 08:08:20.048 6825 26840 E LoadTask: java.lang.NullPointerException
04-15 08:08:20.048 6825 26840 E LoadTask: at com.google.android.exoplayer2.extractor.mp4.FragmentedMp4Extractor.onMoovContainerAtomRead(FragmentedMp4Extractor.java:462)
04-15 08:08:20.048 6825 26840 E LoadTask: at com.google.android.exoplayer2.extractor.mp4.FragmentedMp4Extractor.onContainerAtomRead(FragmentedMp4Extractor.java:444)
04-15 08:08:20.048 6825 26840 E LoadTask: at com.google.android.exoplayer2.extractor.mp4.FragmentedMp4Extractor.processAtomEnded(FragmentedMp4Extractor.java:424)
04-15 08:08:20.048 6825 26840 E LoadTask: at com.google.android.exoplayer2.extractor.mp4.FragmentedMp4Extractor.readAtomPayload(FragmentedMp4Extractor.java:419)
04-15 08:08:20.048 6825 26840 E LoadTask: at com.google.android.exoplayer2.extractor.mp4.FragmentedMp4Extractor.read(FragmentedMp4Extractor.java:305)
04-15 08:08:20.048 6825 26840 E LoadTask: at com.google.android.exoplayer2.source.hls.HlsMediaChunk.loadMedia(HlsMediaChunk.java:285)
04-15 08:08:20.048 6825 26840 E LoadTask: at com.google.android.exoplayer2.source.hls.HlsMediaChunk.load(HlsMediaChunk.java:219)
04-15 08:08:20.048 6825 26840 E LoadTask: at com.google.android.exoplayer2.upstream.Loader$LoadTask.run(Loader.java:308)
04-15 08:08:20.048 6825 26840 E LoadTask: at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
04-15 08:08:20.048 6825 26840 E LoadTask: at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
04-15 08:08:20.048 6825 26840 E LoadTask: at java.lang.Thread.run(Thread.java:841)
备注6:
因为没有 mvex atom
// Read declaration of track fragments in the Moov box.
ContainerAtom mvex = moov.getContainerAtomOfType(Atom.TYPE_mvex);
SparseArray<DefaultSampleValues> defaultSampleValuesArray = new SparseArray<>();
long duration = C.TIME_UNSET;
int mvexChildrenSize = mvex.leafChildren.size();
for (int i = 0; i < mvexChildrenSize; i++) {
Atom.LeafAtom atom = mvex.leafChildren.get(i);
if (atom.type == Atom.TYPE_trex) {
Pair<Integer, DefaultSampleValues> trexData = parseTrex(atom.data);
defaultSampleValuesArray.put(trexData.first, trexData.second);
} else if (atom.type == Atom.TYPE_mehd) {
duration = parseMehd(atom.data);
}
}
备注7:
广告连接,节目时间不累加
04-15 09:59:24.088 11861 11930 D ExoMediaPlayer: onPlayerStateChanged true, 3
04-15 09:59:24.088 11861 11861 D ExoMediaPlayer: onLoadingChanged true
04-15 09:59:24.098 11861 11861 D ExoMediaPlayer: onTimelineChanged com.google.android.exoplayer2.source.ConcatenatingMediaSource$ConcatenatedTimeline@4294be88
04-15 09:59:24.098 11861 11930 D MediaExtendPlayer: onInfo: what=702, extra=0
04-15 09:59:24.108 11861 11930 V TaskPlayer: [000003|/data/media/ads] onStateChangeTo: state=STARTED
04-15 09:59:24.108 11861 11930 D TaskPlayer: [000003|/data/media/ads] notifyListener: onStatusChange: PLAYING/0/STARTED:17[0][0%][Ready]
04-15 09:59:24.108 11861 11861 D ExoMediaPlayer: onLoadingChanged false
04-15 09:59:24.388 11861 11861 D TvService: onLayoutChange
04-15 09:59:39.138 11861 11861 D ExoMediaPlayer: onPositionDiscontinuity 0 -------- 节目切换
04-15 09:59:39.138 11861 11861 D ExoMediaPlayer: onTracksChanged com.google.android.exoplayer2.source.TrackGroupArray@12db0a8c
04-15 09:59:54.158 11861 11861 D ExoMediaPlayer: onPlayerStateChanged true, 4
04-15 09:59:54.168 11861 11861 D MediaExtendPlayer: onCompletion
04-15 09:59:54.168 11861 11930 V TaskPlayer: [000003|/data/media/ads] onStateChangeTo: state=COMPLETED
04-15 09:59:54.168 11861 11930 D TaskPlayer: [000003|/data/media/ads] notifyListener: onStatusChange: PLAYING/0/COMPLETED:17[15145][0%][Ready] ----- 第二个节目结束时间 15145
04-15 09:59:54.178 11861 11930 V MediaProgramPlayer: CompletedState enter
04-15 09:59:54.178 11861 11930 V TaskPlayer: [000003|/data/media/ads] onStateChangeTo: state=COMPLETED