我有这样的代码(例如):
<script>
$('audio').mediaelementplayer();
</script>
<audio id="mejs" controls="controls">
<source src="/media/file-2.mp3" type="audio/mp3" />
</audio>
<ul class="mejs-list">
<li>/media/file-1.mp3</li>
<li class="current">/media/file-2.mp3</li>
<li>/media/file-3.mp3</li>
</ul>
Run Code Online (Sandbox Code Playgroud)
我需要按队列(一个接一个)播放列表中的音频文件.
我怎样才能改变音频源从列表中的下一个文件播放结束当前的文件后并开始播放下一个?
更新:有关mediaelement.js和播放列表的相关主题,但答案是关于使用许多mediaelementplayer()实例.
可以通过查询找到播放列表名称MediaStore.Audio.Playlists.EXTERNAL_CONTENT_URI
,然后查看该MediaStore.Audio.PlaylistsColumns.NAME列.还有一个数据列,MediaStore.Audio.PlaylistsColumns._DATA,但它返回null.
歌曲列表(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI/id)似乎没有显示任何播放列表关联.
我正在寻找在实践中用于确定不同歌曲之间某种声学相似性的方法.
我到目前为止看到的大多数方法(MFCC等)似乎实际上只是为了找到相同的歌曲(即指纹识别,用于音乐识别而不是推荐).虽然大多数推荐系统似乎都适用于网络数据(共同听歌)和标签.
大多数Mpeg-7音频描述符似乎也沿着这条线.另外,大多数都是在"提取这个和那个"级别上定义的,但似乎没有人真正使用这些功能并使用它们来计算某些歌曲的相似性.即使是对类似物品的有效搜索......
http://gjay.sourceforge.net/和http://imms.luminal.org/等工具似乎使用了一些简单的光谱分析,文件系统位置,标签,以及用户输入,如"颜色"和手动评级由用户分配或者歌曲被聆听和跳过的频率.
那么:对于常见的音乐集合,哪些音频功能可以合理地快速计算,并且可以用于生成有趣的播放列表并找到类似的歌曲?理想情况下,我想提供一个现有的播放列表,然后输出一些与此播放列表相匹配的歌曲.
所以我真的对声学相似性感兴趣,而不是识别/指纹识别.实际上,我只是想从结果中删除相同的歌曲,因为我不想要它们两次.而且我也不是通过哼唱来寻找查询.我甚至没有连接麦克风.
哦,我不是在寻找在线服务.首先,我不想将我的所有数据发送到Apple等,其次我只想从我拥有的歌曲中获得推荐(我现在不想购买额外的音乐,而我还没有探索过我所有的音乐.我甚至都没把我的所有CD转换成mp3 ......)其次我的音乐品味不是主流; 我不希望系统一直推荐Maria Carey.
当然,我真的很感兴趣的是哪种技术运作良好,哪些技术运作良好...感谢您对相关文献和方法的任何建议.
我试图在mediaelement.js中搜索音频播放列表的示例.但我发现没有,是mediaelement.js支持音频播放列表吗?如果是这样,请支持我的示例代码或链接.非常感谢你.
我想将ExoPlayer2与播放列表一起使用,可以动态地改变音轨(在播放列表中添加或删除它们)并更改循环设置.
由于ConcatenatingMediaSource有静态数组(而不是列表),我正在实现一个DynamicMediaSource,比如连接一个但是用列表而不是数组和一个模式方法addSource来向列表添加一个以上的媒体源.
public void addSource(MediaSource mediaSource) {
this.mediaSources.add(mediaSource);
duplicateFlags = buildDuplicateFlags(this.mediaSources);
if(!mediaSources.isEmpty())
prepareSource(mediaSources.size() -1);
else
prepareSource(0);
}
Run Code Online (Sandbox Code Playgroud)
当我调用addSource时
MediaSource ms = buildMediaSource(mynewuri, null);
mediaSource.addSource(ms);
Run Code Online (Sandbox Code Playgroud)
轨道被添加到数组但似乎缺少某些东西,因为我总是在createPeriod方法中获得ArrayOutOfBoundsException.
在createPeriod中的方法
mediaSources.get(sourceIndex)...
Run Code Online (Sandbox Code Playgroud)
正在尝试访问index = mediaSources.size().
你能帮助我吗?
我有一个关于如何为包含歌曲和播放列表的数据库构建表的问题。我最初的想法是创建一个播放列表标题和 id 的表,然后是一个播放列表歌曲表,其中包含歌曲的唯一 id 和它所属的播放列表。
另一个计划是为每个创建的播放列表创建一个新表,并将歌曲信息存储在播放列表的每个表中。问题是,这是否是一个好方法,或者是否有某种原因创建这些新表对性能或任何其他原因不利?谢谢您的帮助!
我正在尝试从 MediaStore 查询设备中的播放列表。我关注了之前提出的一个问题,但没有得到答案。
这就是我查询播放列表的方式
public void addToPlaylist(long playlistId, Context context,
ArrayList<Play> playlistTracks, String playlistName) {
int count = getPlaylistSize(playlistId, context);
Log.d("playlist size=", "" + count);
ContentValues[] values = new ContentValues[playlistTracks.size()];
for (int i = 0; i < playlistTracks.size(); i++) {
values[i] = new ContentValues();
values[i].put(MediaStore.Audio.Playlists.Members.PLAY_ORDER, i
+ count + 1);
values[i].put(MediaStore.Audio.Playlists.Members.AUDIO_ID,
playlistTracks.get(i).getId());
values[i].put(MediaStore.Audio.Playlists.NAME, playlistName);
}
ContentResolver resolver = context.getContentResolver();
Uri uri = MediaStore.Audio.Playlists.Members.getContentUri("external",
playlistId);
int num = resolver.bulkInsert(uri, values);
Log.d("songs added=", "" + num); // added
resolver.notifyChange(Uri.parse("content://media"), null);
}
private …Run Code Online (Sandbox Code Playgroud) playlists ×7
android ×3
playlist ×2
arraylist ×1
audio ×1
database ×1
exoplayer ×1
exoplayer2.x ×1
media ×1
mediastore ×1
mfcc ×1
mysql ×1
similarity ×1
sqlite ×1