简体   繁体   中英

ExoPlayer playback error

07-03 18:51:01.600  16188-16266/? E/ExoPlayerImplInternal﹕ Internal runtime error.
    java.lang.IllegalArgumentException
            at com.google.android.exoplayer.util.Assertions.checkArgument(Assertions.java:39)
            at com.google.android.exoplayer.upstream.DataSpec.<init>(DataSpec.java:101)
            at com.google.android.exoplayer.upstream.DataSpec.<init>(DataSpec.java:71)
            at com.google.android.exoplayer.dash.DashMp4ChunkSource.newInitializationChunk(DashMp4ChunkSource.java:197)
            at com.google.android.exoplayer.dash.DashMp4ChunkSource.getChunkOperation(DashMp4ChunkSource.java:164)
            at com.google.android.exoplayer.chunk.ChunkSampleSource.updateLoadControl(ChunkSampleSource.java:500)
            at com.google.android.exoplayer.chunk.ChunkSampleSource.restartFrom(ChunkSampleSource.java:454)
            at com.google.android.exoplayer.chunk.ChunkSampleSource.enable(ChunkSampleSource.java:226)
            at com.google.android.exoplayer.MediaCodecTrackRenderer.onEnabled(MediaCodecTrackRenderer.java:198)
            at com.google.android.exoplayer.MediaCodecVideoTrackRenderer.onEnabled(MediaCodecVideoTrackRenderer.java:222)
            at com.google.android.exoplayer.TrackRenderer.enable(TrackRenderer.java:148)
            at com.google.android.exoplayer.ExoPlayerImplInternal.incrementalPrepareInternal(ExoPlayerImplInternal.java:286)
            at com.google.android.exoplayer.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:195)
            at android.os.Handler.dispatchMessage(Handler.java:98)
            at android.os.Looper.loop(Looper.java:157)
            at android.os.HandlerThread.run(HandlerThread.java:61)
            at com.google.android.exoplayer.ExoPlayerImplInternal$1.run(ExoPlayerImplInternal.java:109)
07-03 18:51:01.610   1049-18543/? D/KeyguardViewMediator﹕ setHidden false
07-03 18:51:01.610   1049-18543/? D/KeyguardUpdateMonitor﹕ sendKeyguardVisibilityChanged(true)
07-03 18:51:01.610    1049-1049/? D/KeyguardUpdateMonitor﹕ handleKeyguardVisibilityChanged(1)
07-03 18:51:01.610   1049-19547/? D/KeyguardViewMediator﹕ setHidden false
07-03 18:51:01.610   1049-19547/? D/KeyguardUpdateMonitor﹕ sendKeyguardVisibilityChanged(true)
07-03 18:51:01.610    1049-1049/? D/KeyguardUpdateMonitor﹕ handleKeyguardVisibilityChanged(1)
07-03 18:51:01.610    831-16270/? W/ContextImpl﹕ Calling a method in the system process without a qualified user: android.app.ContextImpl.sendBroadcast:1454 com.android.server.InputMethodManagerService$4.run:2723 java.lang.Thread.run:841 <bottom of call stack> <bottom of call stack>
07-03 18:51:01.630  16188-16188/? E/PlayerActivity﹕ Playback failed
    com.google.android.exoplayer.ExoPlaybackException: java.lang.IllegalArgumentException
            at com.google.android.exoplayer.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:236)
            at android.os.Handler.dispatchMessage(Handler.java:98)
            at android.os.Looper.loop(Looper.java:157)
            at android.os.HandlerThread.run(HandlerThread.java:61)
            at com.google.android.exoplayer.ExoPlayerImplInternal$1.run(ExoPlayerImplInternal.java:109)
     Caused by: java.lang.IllegalArgumentException
            at com.google.android.exoplayer.util.Assertions.checkArgument(Assertions.java:39)
            at com.google.android.exoplayer.upstream.DataSpec.<init>(DataSpec.java:101)
            at com.google.android.exoplayer.upstream.DataSpec.<init>(DataSpec.java:71)
            at com.google.android.exoplayer.dash.DashMp4ChunkSource.newInitializationChunk(DashMp4ChunkSource.java:197)
            at com.google.android.exoplayer.dash.DashMp4ChunkSource.getChunkOperation(DashMp4ChunkSource.java:164)
            at com.google.android.exoplayer.chunk.ChunkSampleSource.updateLoadControl(ChunkSampleSource.java:500)
            at com.google.android.exoplayer.chunk.ChunkSampleSource.restartFrom(ChunkSampleSource.java:454)
            at com.google.android.exoplayer.chunk.ChunkSampleSource.enable(ChunkSampleSource.java:226)
            at com.google.android.exoplayer.MediaCodecTrackRenderer.onEnabled(MediaCodecTrackRenderer.java:198)
            at com.google.android.exoplayer.MediaCodecVideoTrackRenderer.onEnabled(MediaCodecVideoTrackRenderer.java:222)
            at com.google.android.exoplayer.TrackRenderer.enable(TrackRenderer.java:148)
            at com.google.android.exoplayer.ExoPlayerImplInternal.incrementalPrepareInternal(ExoPlayerImplInternal.java:286)
            at com.google.android.exoplayer.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:195)
            at android.os.Handler.dispatchMessage(Handler.java:98)
            at android.os.Looper.loop(Looper.java:157)
            at android.os.HandlerThread.run(HandlerThread.java:61)
            at com.google.android.exoplayer.ExoPlayerImplInternal$1.run(ExoPlayerImplInternal.java:109)

mpd:

<?xml version="1.0" encoding="UTF-8"?>
<MPD xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xmlns="urn:mpeg:dash:schema:mpd:2011"
  xsi:schemaLocation="urn:mpeg:dash:schema:mpd:2011 DASH-MPD.xsd"
  type="static"
  mediaPresentationDuration="PT654S"
  minBufferTime="PT2S"
  profiles="urn:mpeg:dash:profile:isoff-on-demand:2011">

  <BaseURL>http://dash.edgesuite.net/dash264/TestCases/1a/netflix/</BaseURL>
  <Period>
    <!-- English Audio -->
    <AdaptationSet mimeType="audio/mp4" codecs="mp4a.40.5" lang="en" subsegmentAlignment="true" subsegmentStartsWithSAP="1">
      <Representation id="1" bandwidth="64000">
        <BaseURL>ElephantsDream_AAC48K_064.mp4.dash</BaseURL>
      </Representation>
    </AdaptationSet>
    <!-- Video -->
    <AdaptationSet mimeType="video/mp4" codecs="avc1.42401E" subsegmentAlignment="true" subsegmentStartsWithSAP="1">
      <Representation id="2" bandwidth="100000" width="480" height="360">
        <BaseURL>ElephantsDream_H264BPL30_0100.264.dash</BaseURL>
      </Representation>
      <Representation id="3" bandwidth="175000" width="480" height="360">
        <BaseURL>ElephantsDream_H264BPL30_0175.264.dash</BaseURL>
      </Representation>
      <Representation id="4" bandwidth="250000" width="480" height="360">
        <BaseURL>ElephantsDream_H264BPL30_0250.264.dash</BaseURL>
      </Representation>
      <Representation id="5" bandwidth="500000" width="480" height="360">
        <BaseURL>ElephantsDream_H264BPL30_0500.264.dash</BaseURL>
      </Representation>
    </AdaptationSet>
  </Period>
</MPD>

modified samples.java from :

new Sample("test 2", "",
             "http://dash.edgesuite.net/dash264/TestCases/1a/netflix/exMPD_BIP_TC1.mpd",
             DemoUtil.TYPE_DASH_VOD, false, false),

ExoPlayer doesn't like the MPD. It effectively falls under:

https://github.com/google/ExoPlayer/issues/2

Although really I don't think we really want to handle this kind of MPD. The MPD doesn't provide any indication about where the initialisation and index data is for each stream. Unless I'm missing something, this means that the player would have to make an unbounded range request into each URL and read until it finds them. This really isn't ideal, and IMO the MPD should just be fixed to include this information in one way or another.

(rewritten)

I've been able to play at least one MPD format file using the current 'dev' branch. This is one from the dash.js , sources.json file.

The parameter added to the Samples.java file is:

new Sample("DASH-Sintel 480p", "uid:misc:sintel480",
         "http://dash.edgesuite.net/digitalprimates/fraunhofer/480p_video/heaac_5_1_with_video/Sintel/sintel_480p_heaac5_1.mpd", 
         DemoUtil.TYPE_DASH_VOD, false, true),

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM