首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ExoPlayer播放错误

ExoPlayer播放错误
EN

Stack Overflow用户
提问于 2014-07-03 21:02:33
回答 2查看 6.4K关注 0票数 2
代码语言:javascript
复制
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:

代码语言:javascript
复制
<?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>

修改的samples.java来自:

代码语言:javascript
复制
new Sample("test 2", "",
             "http://dash.edgesuite.net/dash264/TestCases/1a/netflix/exMPD_BIP_TC1.mpd",
             DemoUtil.TYPE_DASH_VOD, false, false),
EN

回答 2

Stack Overflow用户

发布于 2014-07-10 03:00:44

ExoPlayer不喜欢MPD。它实际上属于以下几个类别:

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

尽管我真的不认为我们真的想处理这种MPD。MPD不提供任何关于每个流的初始化和索引数据在哪里的指示。除非我遗漏了什么,否则这意味着播放器将不得不向每个URL发出一个无界范围请求,并进行读取,直到找到它们。这真的不是很理想,我认为MPD应该以这样或那样的方式包含这些信息。

票数 0
EN

Stack Overflow用户

发布于 2014-07-16 22:21:33

(重写)

我已经能够使用当前的'dev‘分支播放至少一个MPD格式的文件。这是dash.js sources.json文件中的一个。

添加到Samples.java文件的参数为:

新示例(“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),

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24554435

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档