如何使用 exoplayer 流式传输 mp3 url?

How to stream mp3 url using exoplayer?

Exoplayer 库对我来说似乎太复杂了。谁能帮我如何使用 exoplayer 库流式传输广播电台 url?我试过 MediaPlayer ,它工作正常,但准备时间很长。这是我尝试过的。

    exoPlayer = ExoPlayer.Factory.newInstance(RENDERER_COUNT);

    Allocator allocator = new DefaultAllocator(BUFFER_SEGMENT_SIZE);
    DataSource dataSource = new DefaultUriDataSource(getApplicationContext(), null, userAgent);
    Mp3Extractor extractor = new Mp3Extractor();
    ExtractorSampleSource sampleSource = new ExtractorSampleSource(
            uri, dataSource, extractor, allocator, BUFFER_SEGMENT_COUNT * BUFFER_SEGMENT_SIZE);
     MediaCodecAudioTrackRenderer audioRenderer = new MediaCodecAudioTrackRenderer(sampleSource);
    exoPlayer.prepare(audioRenderer);

    exoPlayer.setPlayWhenReady(true);

我不明白如何获取userAgent,它是什么意思?

下面是对用户代理的一个很好的描述: user agent 此处还定义了用户代理的外观: structure of user agent header 在这里您可以看到浏览器的用户代理的样子: http://whatsmyuseragent.com/

简而言之,您可以像这样创建您的用户代理:

"YourAppName/VersionCode"

最后介绍一下如何使用ExoPlayer播放mp3: Stream mp3 with ExoPlayer 在此示例中,它虽然是本地 mp3,但唯一的区别应该是 mp3 的 url 和缺少的用户代理。 希望这对您有所帮助!

这是使用 ExoPlayer Lib 流式传输 m3u8 文件的最简单方法。 检查此代码,不要忘记将 URL 更改为您的,并将内容类型更改为自爆代码 希望有所帮助 https://github.com/karim23/SimpleStreamPlayer/tree/master

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    context = getApplicationContext();
    setContentView(R.layout.activity_main);
    //change the live streaming URL with yours. 
    contentUri = /*"Your mp3 URL.."*/;
    // contentType = DemoUtil.TYPE_MP3;
    final Intent intent = new Intent(context, VideoPlayerActivity.class).setData(Uri.parse(contentUri))
            .putExtra(VideoPlayerActivity.CONTENT_ID_EXTRA, -1)
            //Change the type according to the live streaming extension.
            .putExtra(VideoPlayerActivity.CONTENT_TYPE_EXTRA, DemoUtil.TYPE_MP3);
    liveStreamingTv =(TextView)findViewById(R.id.mainActivity_liveStreamingTv);
    liveStreamingTv.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            startActivity(intent);
        }
    });
}

编解码器有问题,exoPlayer 不支持 aac+