嗨,我目前正在开发使用exoplayer 2.9.1的LiveStream m3u播放器。当应用启动时,您需要单击“打开”按钮,该按钮提供了MaterialFilePicker(Openfiledialog)。
现在,您需要选择一个m3u文件。所有这些工作。因为exoplayer无法播放m3u文件,所以我使用BufferedReader读取所有行。要实际播放频道,我必须将以“ h”(url)开头的每一行放入列表中。
在这种情况下为Arraylist。我使用for循环为每个URL制作了一个Mediasource,并将它们放入concatenatingMediaSource中。现在网址正在播放。如果单击下一个按钮,则播放相同的频道。然后,我再次单击了下一个按钮。现在,它播放频道2。然后是频道1,然后是频道2,然后是频道3。依此类推:频道1,频道2,频道3,频道4并返回频道1 ...上一个按钮必须单击两次以回去。这是代码:
List<ExtractorMediaSource> mediaSources = new ArrayList<>();
ArrayList<String> lineStore = new ArrayList<String>();
try {
BufferedReader br = new BufferedReader(new FileReader(filePath));
String line;
while ((line = br.readLine()) != null) {
if (line.startsWith("h")){
lineStore.add(line);
DefaultHttpDataSourceFactory dataSourceFactory = new DefaultHttpDataSourceFactory("exoplayer_video");
for (String url : lineStore) {
mediaSources.add(new ExtractorMediaSource.Factory(dataSourceFactory).createMediaSource(Uri.parse(url)));
}
ConcatenatingMediaSource concatenatingMediaSource = new ConcatenatingMediaSource(mediaSources.toArray(new MediaSource[mediaSources.size()]));
exoPlayer.prepare(concatenatingMediaSource);
exoPlayer.setPlayWhenReady(true);
希望您能理解问题。
有人可以帮我吗?