如何使用 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+
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+