2014-07-06 215 views
7

我試圖掌握今年推出的ExoPlayer library,這樣我就可以將它整合到我的應用程序中。Android ExoPlayer通過HTTP流式傳輸

我試圖通過HTTP流式傳輸mp3,但到目前爲止一直不成功。我不確定是否有可能,但我試圖在不擴展任何基本Source/Sample類的情況下完成此操作。我的代碼如下:

在我的活動

SampleSource s = new FrameworkSampleSource(this, Uri.parse("http://traffic.libsyn.com/joeroganexp/p518.mp3"), null, 1); 

// Since I only have 1 audio renderer 
ExoPlayer player = ExoPlayer.Factory.newInstance(1); 

MediaCodecAudioTrackRenderer audioRenderer = new MediaCodecAudioTrackRenderer(s); 
player.prepare(audioRenderer); 
player.setPlayWhenReady(true); 

logcat的

3363-3376/com.kevintcoughlin.smodr V/FFmpegExtractor﹕ SniffFFMPEG 
07-06 15:52:34.080 3363-3376/com.kevintcoughlin.smodr I/FFmpegExtractor﹕ android-source:0xb7c53e00 
07-06 15:52:34.084 3363-3376/com.kevintcoughlin.smodr D/FFMPEG﹕ android source begin open 
07-06 15:52:34.084 3363-3376/com.kevintcoughlin.smodr D/FFMPEG﹕ android open, url: android-source:0xb7c53e00 
07-06 15:52:34.084 3363-3376/com.kevintcoughlin.smodr D/FFMPEG﹕ ffmpeg open android data source success, source ptr: 0xb7c53e00 
07-06 15:52:34.088 3363-3376/com.kevintcoughlin.smodr D/FFMPEG﹕ android source open success 
07-06 15:52:34.108 3363-3363/com.kevintcoughlin.smodr W/EGL_genymotion﹕ eglSurfaceAttrib not implemented 
07-06 15:52:34.116 3363-3363/com.kevintcoughlin.smodr E/OpenGLRenderer﹕ Getting MAX_TEXTURE_SIZE from GradienCache 
07-06 15:52:34.120 3363-3363/com.kevintcoughlin.smodr E/OpenGLRenderer﹕ MAX_TEXTURE_SIZE: 16384 
07-06 15:52:34.128 3363-3363/com.kevintcoughlin.smodr E/OpenGLRenderer﹕ Getting MAX_TEXTURE_SIZE from Caches::initConstraints() 
07-06 15:52:34.128 3363-3363/com.kevintcoughlin.smodr E/OpenGLRenderer﹕ MAX_TEXTURE_SIZE: 16384 
07-06 15:52:34.128 3363-3363/com.kevintcoughlin.smodr D/OpenGLRenderer﹕ Enabling debug mode 0 
07-06 15:52:34.640 3363-3376/com.kevintcoughlin.smodr I/FFMPEG﹕ [mp3 @ 0xb7c57040] Estimating duration from bitrate, this may be inaccurate 
07-06 15:52:34.640 3363-3376/com.kevintcoughlin.smodr I/FFMPEG﹕ Input #0, mp3, from 'android-source:0xb7c53e00': 
07-06 15:52:34.640 3363-3376/com.kevintcoughlin.smodr I/FFMPEG﹕ Metadata: 
07-06 15:52:34.640 3363-3376/com.kevintcoughlin.smodr I/FFMPEG﹕ TSS    : Logic Pro 9.1.8 
07-06 15:52:34.644 3363-3376/com.kevintcoughlin.smodr I/FFMPEG﹕ title   : #518 - Matt Fulchiron 
07-06 15:52:34.644 3363-3376/com.kevintcoughlin.smodr I/FFMPEG﹕ artist   : Joe Rogan Experience 
07-06 15:52:34.644 3363-3376/com.kevintcoughlin.smodr I/FFMPEG﹕ album_artist : Joe Rogan Experience 
07-06 15:52:34.644 3363-3376/com.kevintcoughlin.smodr I/FFMPEG﹕ Duration: 02:57:10.21, start: 0.000000, bitrate: 127 kb/s 
07-06 15:52:34.644 3363-3376/com.kevintcoughlin.smodr I/FFMPEG﹕ Stream #0:0: Audio: mp3, 44100 Hz, stereo, s16p, 128 kb/s 
07-06 15:52:34.644 3363-3376/com.kevintcoughlin.smodr I/FFmpegExtractor﹕ FFmpegExtrator, url: android-source:0xb7c53e00, format_name: mp3, format_long_name: MP2/3 (MPEG audio layer 2/3) 
07-06 15:52:34.644 3363-3376/com.kevintcoughlin.smodr I/FFmpegExtractor﹕ list the formats suppoted by ffmpeg: 
07-06 15:52:34.644 3363-3376/com.kevintcoughlin.smodr I/FFmpegExtractor﹕ ======================================== 
07-06 15:52:34.644 3363-3376/com.kevintcoughlin.smodr V/FFmpegExtractor﹕ format_names[00]: mpeg 
07-06 15:52:34.644 3363-3376/com.kevintcoughlin.smodr V/FFmpegExtractor﹕ format_names[01]: mpegts 
07-06 15:52:34.644 3363-3376/com.kevintcoughlin.smodr V/FFmpegExtractor﹕ format_names[02]: mov,mp4,m4a,3gp,3g2,mj2 
07-06 15:52:34.644 3363-3376/com.kevintcoughlin.smodr V/FFmpegExtractor﹕ format_names[03]: matroska,webm 
07-06 15:52:34.644 3363-3376/com.kevintcoughlin.smodr V/FFmpegExtractor﹕ format_names[04]: asf 
07-06 15:52:34.644 3363-3376/com.kevintcoughlin.smodr V/FFmpegExtractor﹕ format_names[05]: rm 
07-06 15:52:34.644 3363-3376/com.kevintcoughlin.smodr V/FFmpegExtractor﹕ format_names[06]: flv 
07-06 15:52:34.644 3363-3376/com.kevintcoughlin.smodr V/FFmpegExtractor﹕ format_names[07]: swf 
07-06 15:52:34.644 3363-3376/com.kevintcoughlin.smodr V/FFmpegExtractor﹕ format_names[08]: avi 
07-06 15:52:34.644 3363-3376/com.kevintcoughlin.smodr V/FFmpegExtractor﹕ format_names[09]: ape 
07-06 15:52:34.644 3363-3376/com.kevintcoughlin.smodr V/FFmpegExtractor﹕ format_names[10]: dts 
07-06 15:52:34.644 3363-3376/com.kevintcoughlin.smodr V/FFmpegExtractor﹕ format_names[11]: flac 
07-06 15:52:34.644 3363-3376/com.kevintcoughlin.smodr V/FFmpegExtractor﹕ format_names[12]: ac3 
07-06 15:52:34.644 3363-3376/com.kevintcoughlin.smodr V/FFmpegExtractor﹕ format_names[13]: wav 
07-06 15:52:34.644 3363-3376/com.kevintcoughlin.smodr V/FFmpegExtractor﹕ format_names[14]: ogg 
07-06 15:52:34.644 3363-3376/com.kevintcoughlin.smodr V/FFmpegExtractor﹕ format_names[15]: vc1 
07-06 15:52:34.644 3363-3376/com.kevintcoughlin.smodr V/FFmpegExtractor﹕ format_names[16]: hevc 
07-06 15:52:34.644 3363-3376/com.kevintcoughlin.smodr I/FFmpegExtractor﹕ ======================================== 
07-06 15:52:34.644 3363-3376/com.kevintcoughlin.smodr D/FFMPEG﹕ android source close 
07-06 15:52:34.644 3363-3376/com.kevintcoughlin.smodr W/FFmpegExtractor﹕ sniff through BetterSniffFFMPEG failed, try LegacySniffFFMPEG 
07-06 15:52:34.644 3363-3376/com.kevintcoughlin.smodr I/FFmpegExtractor﹕ source url:http://traffic.libsyn.com/joeroganexp/p518.mp3 
07-06 15:52:34.644 3363-3376/com.kevintcoughlin.smodr D/FFMPEG﹕ android source begin open 
07-06 15:52:34.648 3363-3376/com.kevintcoughlin.smodr D/FFMPEG﹕ android open, url: android-source:0xb7c53e00|file:http://traffic.libsyn.com/joeroganexp/p518.mp3 
07-06 15:52:34.648 3363-3376/com.kevintcoughlin.smodr D/FFMPEG﹕ ffmpeg open android data source success, source ptr: 0xb7c53e00 
07-06 15:52:34.648 3363-3376/com.kevintcoughlin.smodr D/FFMPEG﹕ android source open success 
07-06 15:52:34.708 3363-3394/com.kevintcoughlin.smodr D/dalvikvm﹕ GC_FOR_ALLOC freed 361K, 4% free 10852K/11288K, paused 75ms, total 75ms 
07-06 15:52:34.844 3363-3376/com.kevintcoughlin.smodr I/FFMPEG﹕ [mp3 @ 0xb7ca7700] Estimating duration from bitrate, this may be inaccurate 
07-06 15:52:34.844 3363-3376/com.kevintcoughlin.smodr I/FFMPEG﹕ Input #0, mp3, from 'android-source:0xb7c53e00|file:http://traffic.libsyn.com/joeroganexp/p518.mp3': 
07-06 15:52:34.844 3363-3376/com.kevintcoughlin.smodr I/FFMPEG﹕ Metadata: 
07-06 15:52:34.844 3363-3376/com.kevintcoughlin.smodr I/FFMPEG﹕ TSS    : Logic Pro 9.1.8 
07-06 15:52:34.848 3363-3376/com.kevintcoughlin.smodr I/FFMPEG﹕ title   : #518 - Matt Fulchiron 
07-06 15:52:34.848 3363-3376/com.kevintcoughlin.smodr I/FFMPEG﹕ artist   : Joe Rogan Experience 
07-06 15:52:34.848 3363-3376/com.kevintcoughlin.smodr I/FFMPEG﹕ album_artist : Joe Rogan Experience 
07-06 15:52:34.848 3363-3376/com.kevintcoughlin.smodr I/FFMPEG﹕ Duration: 02:57:10.21, start: 0.000000, bitrate: 127 kb/s 
07-06 15:52:34.848 3363-3376/com.kevintcoughlin.smodr I/FFMPEG﹕ Stream #0:0: Audio: mp3, 44100 Hz, stereo, s16p, 128 kb/s 
07-06 15:52:34.848 3363-3376/com.kevintcoughlin.smodr I/FFmpegExtractor﹕ FFmpegExtrator, url: android-source:0xb7c53e00|file:http://traffic.libsyn.com/joeroganexp/p518.mp3, format_name: mp3, format_long_name: MP2/3 (MPEG audio layer 2/3) 
07-06 15:52:34.852 3363-3376/com.kevintcoughlin.smodr I/FFmpegExtractor﹕ list the formats suppoted by ffmpeg: 
07-06 15:52:34.852 3363-3376/com.kevintcoughlin.smodr I/FFmpegExtractor﹕ ======================================== 
07-06 15:52:34.852 3363-3376/com.kevintcoughlin.smodr V/FFmpegExtractor﹕ format_names[00]: mpeg 
07-06 15:52:34.852 3363-3376/com.kevintcoughlin.smodr V/FFmpegExtractor﹕ format_names[01]: mpegts 
07-06 15:52:34.852 3363-3376/com.kevintcoughlin.smodr V/FFmpegExtractor﹕ format_names[02]: mov,mp4,m4a,3gp,3g2,mj2 
07-06 15:52:34.852 3363-3376/com.kevintcoughlin.smodr V/FFmpegExtractor﹕ format_names[03]: matroska,webm 
07-06 15:52:34.852 3363-3376/com.kevintcoughlin.smodr V/FFmpegExtractor﹕ format_names[04]: asf 
07-06 15:52:34.852 3363-3376/com.kevintcoughlin.smodr V/FFmpegExtractor﹕ format_names[05]: rm 
07-06 15:52:34.852 3363-3376/com.kevintcoughlin.smodr V/FFmpegExtractor﹕ format_names[06]: flv 
07-06 15:52:34.852 3363-3376/com.kevintcoughlin.smodr V/FFmpegExtractor﹕ format_names[07]: swf 
07-06 15:52:34.852 3363-3376/com.kevintcoughlin.smodr V/FFmpegExtractor﹕ format_names[08]: avi 
07-06 15:52:34.852 3363-3376/com.kevintcoughlin.smodr V/FFmpegExtractor﹕ format_names[09]: ape 
07-06 15:52:34.852 3363-3376/com.kevintcoughlin.smodr V/FFmpegExtractor﹕ format_names[10]: dts 
07-06 15:52:34.856 3363-3376/com.kevintcoughlin.smodr V/FFmpegExtractor﹕ format_names[11]: flac 
07-06 15:52:34.856 3363-3376/com.kevintcoughlin.smodr V/FFmpegExtractor﹕ format_names[12]: ac3 
07-06 15:52:34.856 3363-3376/com.kevintcoughlin.smodr V/FFmpegExtractor﹕ format_names[13]: wav 
07-06 15:52:34.856 3363-3376/com.kevintcoughlin.smodr V/FFmpegExtractor﹕ format_names[14]: ogg 
07-06 15:52:34.856 3363-3376/com.kevintcoughlin.smodr V/FFmpegExtractor﹕ format_names[15]: vc1 
07-06 15:52:34.856 3363-3376/com.kevintcoughlin.smodr V/FFmpegExtractor﹕ format_names[16]: hevc 
07-06 15:52:34.856 3363-3376/com.kevintcoughlin.smodr I/FFmpegExtractor﹕ ======================================== 
07-06 15:52:34.856 3363-3376/com.kevintcoughlin.smodr D/FFMPEG﹕ android source close 
07-06 15:52:34.856 3363-3376/com.kevintcoughlin.smodr D/FFmpegExtractor﹕ SniffFFMPEG failed to sniff this source 
07-06 15:52:34.856 3363-3397/com.kevintcoughlin.smodr D/dalvikvm﹕ GC_FOR_ALLOC freed 120K, 3% free 12342K/12696K, paused 29ms, total 60ms 
07-06 15:52:34.860 3363-3397/com.kevintcoughlin.smodr I/dalvikvm-heap﹕ Grow heap (frag case) to 13.981MB for 1960012-byte allocation 
07-06 15:52:34.872 3363-3387/com.kevintcoughlin.smodr D/dalvikvm﹕ GC_FOR_ALLOC freed <1K, 3% free 14256K/14612K, paused 10ms, total 10ms 
07-06 15:52:34.880 3363-3376/com.kevintcoughlin.smodr I/OMXClient﹕ Using client-side OMX mux. 
07-06 15:52:34.976 3363-3400/com.kevintcoughlin.smodr I/OMXClient﹕ Using client-side OMX mux. 
07-06 15:52:35.144 3363-3393/com.kevintcoughlin.smodr D/dalvikvm﹕ GC_FOR_ALLOC freed 1512K, 12% free 13705K/15532K, paused 12ms, total 36ms 
07-06 15:52:35.152 3363-3393/com.kevintcoughlin.smodr I/dalvikvm-heap﹕ Grow heap (frag case) to 15.315MB for 1962812-byte allocation 
07-06 15:52:35.200 3363-3388/com.kevintcoughlin.smodr D/dalvikvm﹕ GC_FOR_ALLOC freed <1K, 11% free 15621K/17452K, paused 39ms, total 39ms 
07-06 15:52:35.356 3363-3400/com.kevintcoughlin.smodr E/ACodec﹕ OMX/mediaserver died, signalling error! 
07-06 15:52:35.356 3363-3400/com.kevintcoughlin.smodr E/MediaCodec﹕ Codec reported an error. (omx error 0x8000100d, internalError -32) 
07-06 15:52:35.376 3363-3400/com.kevintcoughlin.smodr A/ACodec﹕ frameworks/av/media/libstagefright/ACodec.cpp:499 CHECK(mem.get() != NULL) failed. 
07-06 15:52:35.376 3363-3400/com.kevintcoughlin.smodr A/libc﹕ Fatal signal 4 (SIGILL) at 0xb76d563d (code=2), thread 3400 (MediaCodec_loop) 

爲了我的未經訓練的眼睛好像我可以正確得到TrackInfo,但我有一個通過HTTP讀取數據時出現問題。這似乎也似乎框架嗅探mimetype即使我接收類型'音頻/ mpeg'失敗。

再次,我欣賞我收到的任何方向。我意識到這些API是非常新的。

謝謝!

回答

6

以下代碼適用於我。雖然我很難將exoPlayer連接到用戶界面。

String key = DeveloperKey.CLIENT_ID; 
    // Construct the URL for the query 
    final String BASE_URL = "https://api.soundcloud.com/tracks/101150664/stream?"; 
    final String CLIENTID_PARAM = "client_id"; 

    Uri builtUri = Uri.parse(BASE_URL).buildUpon() 
      .appendQueryParameter(CLIENTID_PARAM, key) 
      .build(); 

    Log.v(LOG_TAG, "BUILT URI FOR STREAMING: " + builtUri); 

    // Build the sample source 
    FrameworkSampleSource sampleSource = new FrameworkSampleSource(getActivity(), builtUri, null, 1); 

    // Build the track renderers 
    TrackRenderer audioRenderer = new MediaCodecAudioTrackRenderer(sampleSource, null, true); 

    // Build the ExoPlayer and start playback 
    ExoPlayer exoPlayer = ExoPlayer.Factory.newInstance(1); 
    exoPlayer.prepare(audioRenderer); 
    exoPlayer.setPlayWhenReady(true); 
+0

您是否嘗試添加偵聽器以便讀取ExoPlayer的各種狀態。我成功地用ExoPlayer取代了MediaPlayer。 – user2538359

+0

嗨用戶user2538359任何方式,你可以告訴我你是如何從mediaplayer升級到exoplayer? – alexistkd

+1

從現在開始使用 - 新MediaCodecAudioTrackRenderer(sampleSource,MediaCodecSelector.DEFAULT) –