我正在尝试使用SoundCloud api流式播放歌曲,但显然它不会在Chrome中播放。但它适用于其他浏览器。
SC.initialize({
client_id: '65243ec784b284f1d8a8f950312240fa',
redirect_uri: 'http://example.com/callback'
});
SC.stream('/tracks/293').then(function(player) {
player.play();
});
是否有任何想法让它在Chrome中运行?
答案 0 :(得分:1)
在open Github issue上查看我的解决方案(为方便起见,下面粘贴了代码)。
如果使用SoundManager2,则在dom准备就绪时调用setup。
不是使用SoundCloud api的流函数,而是调用SC.get,然后使用SC.get('/users/711016/tracks').then(function(tracks) {
var sound = soundManager.createSound({
id: 'mySound',
url: tracks[0].stream_url + "?client_id=YOUR_CLIENT_ID",
stream: true
});
sound.play();
});
在SoundManager中创建一个声音对象,从刚刚抓取的轨道传入stream_url。
public class TransferPickingActivityProduct extends Fragment implements DialogFragmentProducts.DFragmentListener, DialogInterface.OnDismissListener {
private static final List<PackOperation> packsprod = new ArrayList<>();
private LinearLayout listprod;
@Override
public void onDismiss(DialogInterface dialogInterface) {
packsprod.size();
}
public void add(Picking pick, FragmentManager fragment, Long idProd) {
DialogFragmentProducts dFragment = DialogFragmentProducts.newInstance("PRODUCTO", pick.getId(), idProd);
dFragment.setTargetFragment(TransferPickingActivityProduct.this, 1);
dFragment.show(fragment, "PRODUCTO");
}
@Override
public void onFinishEditDialog(PackOperation packOperation) {
//Fragment f = fragment;
packOperation.save();
packsprod.add(packOperation);
//View v = f.getView();
}
}
我想到你试图播放的曲目的api路线可能与我的不同。
答案 1 :(得分:0)
由于Chrome的Chrome版本,这是known compatibility issue。除了禁用Flash或使用不同版本的SDK以查看哪种版本适用于您的特定Chrome版本之外,您几乎无能为力。
答案 2 :(得分:0)
正如JAL所说,不幸的是,这已经知道并且似乎并没有解决问题。
相反,我建议使用他们的小部件API来创建自定义iFrame(如果需要,可以使其隐藏),然后使用.load()
方法加载您想要的任何轨道或轨道。您可以阅读here。
小部件API非常好用,因为它附带了许多非常有用的事件监听器,具体取决于您正在做什么。