2014-12-01 449 views
0

我正在将一个音频播放器项目从Vitamio移植到ExoPlayer。我已经能够使它工作,除了我有两个音频源不会播放。它们和其他播放完美的样本没有明显的区别。问题不是样本的长度,因为很长时间运行的样本也会运行。下面是链接到样品文件:Exoplayer无法传输某些AAC编码音频.m3u8

http://s3.amazonaws.com/instarad_audio/20/208888/index.m3u8 http://s3.amazonaws.com/instarad_audio/20/208237/index.m3u8

以下是错误 - >

java.lang.IllegalStateException 在android.media.MediaCodec.dequeueOutputBuffer(本机方法) 在com.google.android.exoplayer.MediaCodecTrackRenderer.drainOutputBuffer(MediaCodecTrackRenderer.java:720) 在com.google.android.exoplayer.MediaCodecTrackRenderer.doSomeWork(MediaCodecTrackRenderer.java:420) 在com.google.android.exoplayer.ExoPlayerImplInternal。这样做meWork(ExoPlayerImplInternal.java:398) at com.google.android.exoplayer.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:203) at android.os.Handler.dispatchMessage(Handler.java:98) at android.os。 Looper.loop(Looper.java:157) 在android.os.HandlerThread.run(HandlerThread.java:61) 在com.google.android.exoplayer.util.PriorityHandlerThread.run(PriorityHandlerThread.java:40)

11-27 17:50:05.423 28529-28571/com.google.android.exoplayer.demo E/OMXNodeInstance:OMX_FreeBuffer为缓冲液H

我创建这些样本作为TYPE_HLS_MEDIA,无论是与AUDIO_AAC编码或视频_ H264。

我最好的猜测是这些样本被记录为异常采样率,或者他们以某种方式损坏。

所有样本都将被编码为AAC流式,通过.m3u8格式。我应该看看其他的渲染器/编码器吗?

谢谢 大卫

回答

1

此链接包含AAC音频,但是AAC类是LTP,这不是由谷歌AAC软件解码器的支持。这意味着这个链接不应该在任何传统的Android设备上工作。所以它不是你的应用程序的缺陷。

General 
ID          : 1 (0x1) 
Complete name       : a.ts 
Format         : MPEG-TS 
File size        : 2.00 MiB 
Duration         : 1mn 33s 
Overall bit rate mode     : Variable 
Overall bit rate       : 180 Kbps 

Audio 
ID          : 256 (0x100) 
Menu ID         : 1 (0x1) 
Format         : AAC 
Format/Info        : Advanced Audio Codec 
Format version       : Version 4 
Format profile       : LTP 
Muxing mode        : ADTS 
Codec ID         : 15 
Duration         : 1mn 33s 
Bit rate mode       : Variable 
Channel(s)        : 1 channel 
Channel positions      : Front: C 
Sampling rate       : 44.1 KHz 
Compression mode       : Lossy 

Menu 
ID          : 4096 (0x1000) 
Menu ID         : 1 (0x1) 
Duration         : 1mn 33s 
List          : 256 (0x100) (AAC) 
Service name        : Service01 
Service provider       : Libav 
Service type        : digital television 
+0

我已向ExoPlayer团队证实,问题是使用AAC_LTP对不良样本进行编码。这是一个链接到他们的github页面上的线程。 https://github.com/google/ExoPlayer/issues/178。我正在考虑使用MediaCodec api添加编码功能,或者限制MediaRecorder的编码。可能是Android MediaRecorder正在使用AAC_LTP创建示例;即使它无法播放格式。 – user1743524 2014-12-05 16:07:40

+0

你用什么工具分析音频样本? – user1743524 2014-12-05 16:20:51