我正在尝试在android中实现Exoplayer
来流式传输歌曲。这是我到目前为止所遵循的link
我的布局文件中有2个按钮,1个用于启动播放器,其他用于停止。
这是类文件
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
Button btPlay = (Button) findViewById(R.id.bt_play);
Button btStop = (Button) findViewById(R.id.bt_stop);
Context mContext = getBaseContext();
String URL = "http://sound15.mp3slash.net/indian/tummile/tummile01(www.songs.pk).mp3";
btPlay.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Uri uri = Uri.parse(URL);
final int numRenderers = 2;
SampleSource sampleSource = new FrameworkSampleSource(mContext, uri, null, numRenderers);
//above line gives me error
TrackRenderer audioTrack = new MediaCodecAudioTrackRenderer(sampleSource);
ExoPlayer exoPlayer = ExoPlayer.Factory.newInstance(numRenderers);
exoPlayer.prepare(audioTrack);
exoPlayer.setPlayWhenReady(true);
}
});
}
抛出的错误出现在SampleSource行上,上面写着
无法解析构造函数FrameworkSampleSource
如何处理此错误并继续播放歌曲。任何帮助将不胜感激!
答案 0 :(得分:1)
以适当的方式使用库: youtube video
使用ExtractorSampleSource
折旧FrameworkSampleSource见下面的代码:
String url = parentArray.getJSONObject(songIndex).getString("file");
Uri uri = Uri.parse(url);
player = ExoPlayer.Factory.newInstance(1);
playerControl = new PlayerControl(player);
DataSource dataSource = new DefaultUriDataSource(this, TAG);
ExtractorSampleSource extractorSampleSource = new ExtractorSampleSource(uri, dataSource, new DefaultAllocator(64 * 1024), 64 * 1024 * 256);
audioRenderer = new MediaCodecAudioTrackRenderer(extractorSampleSource, MediaCodecSelector.DEFAULT);
player.prepare(audioRenderer);
player.setPlayWhenReady(true);