2015-06-05 78 views
1

我正在编写一个Android应用程序,通过网络播放大型MP3文件。这些文件通常大约一个小时左右,并且在某些情况下,我一直在流中断流的情况下出现一些非常不一致的行为。ExoPlayer和HLS流

为了解决这个问题,我决定转移到ExoPlayer并使用HLS实现。虽然我能够毫无问题地播放Apple测试文件(嘟嘟声),但似乎无法让我自己的任何流都能正常工作。

每当我尝试访问我自己的流,播放器的错误了,我得到了下面的堆栈跟踪:

06-05 18:15:22.898 29566-29566/com.application E/EventLogger﹕ internalError [0.66, loadError] 
    java.io.EOFException 
      at com.google.android.exoplayer.extractor.DefaultExtractorInput.readFully(DefaultExtractorInput.java:73) 
      at com.google.android.exoplayer.extractor.ts.TsExtractor.read(TsExtractor.java:102) 
      at com.google.android.exoplayer.hls.HlsExtractorWrapper.read(HlsExtractorWrapper.java:214) 
      at com.google.android.exoplayer.hls.TsChunk.load(TsChunk.java:110) 
      at com.google.android.exoplayer.upstream.Loader$LoadTask.run(Loader.java:242) 

什么是从针对Android的MP3创建一个HLS流的正确方法是什么?为了测试,我尝试了一些ffmpeg导出,并使用S3来提供这些文件,但是我一直没有成功。

一个样品可以在这里找到:https://s3.amazonaws.com/gte619n/test_stream/output_test.m3u8

感谢您对您的帮助和建议。

回答

1

您的链接在GitHub当前可用的ExoPlayer中正常工作。

如何做到这一点:

1)混帐克隆https://github.com/google/ExoPlayer.git

2)Android Studio中打开ExoPlayer /演示程序

3)编辑ExoPlayer /演示/ src目录/主/ JAVA/COM /谷歌/安卓/ exoplayer /演示/ Samples.java并添加

public static final Sample[] HLS = new Sample[] { 
    new Sample("Stackoverflow", 
      "https://s3.amazonaws.com/gte619n/test_stream/output_test.m3u8", 
      PlayerActivity.TYPE_HLS), 

和它的工作。

+0

嘿雅各,事实证明,这个问题与HLS文件的特定格式有关,即文件中的空格。我相信这是在最近的版本中修复的。谢谢你的帮助! –