我描述了我的程序,结果发现大部分的CPU都花在了上面SoundPool.play().
游戏有大约10个声音文件,每个文件不到1秒.目前它们是64kbs可变MP3.它们SoundPool在开始时加载到a 并在整个游戏中频繁播放.
我的问题:什么音频格式(例如mp3,ogg等)对移动设备上的CPU和电池消耗最友好?我只将它们用于音效,而且不需要同时播放.
非常感谢.
performance android mobile-phones power-management audio-player
我需要在我的应用程序中播放远程服务器的音频文件.当我使用localhost服务器(使用WAMP)测试时,我可以玩.当从服务器提供相同的文件时它不工作..文件没有扩展名,内容是MP3
String fileUrl = "http://192.168.1.131/myproject/songs/xyz";
String url = "http://myserver/songs/xyz"; //(myserver -> A remote server)
mVideoView.setVideoURI(Uri.parse(fileUrl));
mVideoView.requestFocus();
Run Code Online (Sandbox Code Playgroud)
此外,我需要更好地控制玩家.
请帮忙...
我使用以下代码成功地让iOS使用soundfont示例播放.mid(midi)文件:
-(void) playMusic:(NSString*) name
{
NSString *presetURLPath = [[NSBundle mainBundle] pathForResource:@"GortsMiniPianoJ1" ofType:@"SF2"];
NSURL * presetURL = [NSURL fileURLWithPath:presetURLPath];
[self loadFromDLSOrSoundFont: (NSURL *)presetURL withPatch: (int)3];
NSString *midiFilePath = [[NSBundle mainBundle] pathForResource:name ofType:@"mid"];
NSURL * midiFileURL = [NSURL fileURLWithPath:midiFilePath];
NewMusicPlayer(&musicPlayer);
if (NewMusicSequence(&musicSequence) != noErr)
{
[NSException raise:@"play" format:@"Can't create MusicSequence"];
}
if(MusicSequenceFileLoad(musicSequence, (CFURLRef)midiFileURL, 0, 0 != noErr))
{
[NSException raise:@"play" format:@"Can't load MusicSequence"];
}
MusicPlayerSetSequence(musicPlayer, musicSequence);
MusicSequenceSetAUGraph(musicSequence, _processingGraph);
MusicPlayerPreroll(musicPlayer);
MusicPlayerStart(musicPlayer);
}
Run Code Online (Sandbox Code Playgroud)
但是,当我在第一个文件仍在播放时尝试播放第二个文件时出现问题.
我尝试了很多变化.首先,上面的代码将同时播放两个轨道.或者,我尝试过:
DisposeMusicPlayer(musicPlayer);
DisposeMusicSequence(musicSequence);
Run Code Online (Sandbox Code Playgroud)
之前NewMusicPlayer(&musicPlayer),但这会产生一个奇怪版本的曲调,只播放零星的音符.
我很乐意简单地调用这种方法,然后播放下一首曲目.
我正在创建一个chrome应用程序,用于解密从我的PBX服务器发送到我的Gmail帐户的mp3并播放它们.我已经完成了除gmail中的音频播放器之外的所有内容.我有两个选择:
我想尽可能多地重用代码,并且无法找到带有搜索条的预制Web Audio API播放器.所以,我尝试尝试选项2,以下是我去的地方
window.AudioContext = window.AudioContext || window.webkitAudioContext;
var context = new AudioContext();
context.decodeAudioData(arr.buffer, function (soundBuffer) {
windowURL = window.URL || window.webkitURL;
var audio = document.createElement("audio");
audio.src = windowURL.createObjectURL([soundBuffer]);
var someDiv = document.getElementById("testDiv");
someDiv.appendChild(audio);
audio.onload = function (e) {
windowURL.revokeObjectURL(this.src);
}
}, function (err) {
console.log("couldnt decode buffer");
});
Run Code Online (Sandbox Code Playgroud)
它失败并且"无法在'URL'上执行'createObjectURL':未找到与提供的签名匹配的功能." 我该如何正确编码这个函数来创建一个可以被chrome的mp3播放器或soundmanager2使用的url?
我知道这是可能的,但我还没有找到,所以我问它.
当第三方音乐播放时,在我的应用程序中开始播放mp3声音时,例如Spotify.Spotify暂停,你必须恢复Spotify,让它再次播放.
当我的audioplayer声音开始时,如何让Spotify继续播放?
我想创建一个我有图像的网站,如果有人点击此图片,则应播放播放列表中的随机歌曲或类似内容.我有一个正在运行的代码来激活一首歌,但如果我想要多首歌,它就不再有用了.
<html>
<head>
<title>title</title>
<link type="text/css" rel="stylesheet" href="style.css"/>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<script src="script.js"></script>
</head>
<body>
<div id="headline">
<h1 id="hl">Headline</h1>
<img class="play" id="pic" src="pic.png"/>
<img class="pause" id="pic2" src="pic.png"/>
</div>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
$(document).ready(function() {
$(".pause").css ('display', 'none');
$(".play").click (function(){
$(".play").css ('display', 'none');
$(".pause").css ('display', 'inline-block');
});
$(".pause").click (function(){
$(".play").css ('display', 'inline-block');
$(".pause").css ('display', 'none');
});
var audioElement = document.createElement('audio');
audioElement.setAttribute('src', 'song1.mp3');
/*var audioElement2 = document.createElement('audio');
audioElement2.setAttribute('src', 'song2.mp3');*/
$.get();
audioElement.addEventListener("load", function() {
audioElement.play();
}, true);
/*audioElement2.addEventListener("load", function() {
audioElement2.play();
}, true);*/
var x = …Run Code Online (Sandbox Code Playgroud) 我有一个关于在C ++中播放.wav文件的问题。我正在寻找一种可以在Linux和Windows上播放的方法,并且想在功能结束后将其分解,您是否知道此示例?
感谢您的任何回答:)!
我来自德国,请不要为我的语法或拼写而生气:D。
我正在为Android开发一个mp3播放器应用程序,我收到与用户权限相关的错误(READ_EXTERNAL_STORAGE)
这是我要求权限的代码:
int permissionCheck = ContextCompat.checkSelfPermission(PlayListActivity.this,
Manifest.permission.READ_EXTERNAL_STORAGE);
if (ContextCompat.checkSelfPermission(PlayListActivity.this,
Manifest.permission.READ_EXTERNAL_STORAGE)
!= PackageManager.PERMISSION_GRANTED) {
// OPCIONAL(explicaciones de poque pedimos los permisos)
if (ActivityCompat.shouldShowRequestPermissionRationale(PlayListActivity.this,
Manifest.permission.READ_EXTERNAL_STORAGE)) {
} else {
//pedir permisos
ActivityCompat.requestPermissions(PlayListActivity.this,
new String[]{Manifest.permission.READ_EXTERNAL_STORAGE},
permissionCheck);
Run Code Online (Sandbox Code Playgroud)
这是代码的其余部分:
ArrayList<HashMap<String, String>> songsListData = new ArrayList<HashMap<String, String>>();
SongsManager plm = new SongsManager(PlayListActivity.this);
// get all songs from sdcard
this.songsList = plm.getPlayList();
// looping through playlist
for (int i = 0; i < songsList.size(); i++) {
// creating new HashMap
HashMap<String, String> song = songsList.get(i);
// adding …Run Code Online (Sandbox Code Playgroud) mp3 android file-permissions audio-player android-music-player android-studio
我正在开发一个健全的JavaScript库.我可以用下面的代码播放声音.
var soundPlayer = null;
function playSound(){
soundPlayer = new Audio(soundName).play();
}
Run Code Online (Sandbox Code Playgroud)
如何停止和暂停此音频?当我尝试这样的时候:
soundPlayer.pause();
Run Code Online (Sandbox Code Playgroud)
要么
soundPlayer.stop();
Run Code Online (Sandbox Code Playgroud)
但我得到这个错误:
Uncaught TypeError: soundPlayer.stop is not a function
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点?
我来使用mingus试图在python中重现一些音符.根据这里的回答,我尝试过:
from mingus.midi import fluidsynth
fluidsynth.init('/home/btc/Escritorio/SinestesiaRCB/gfx/ViolinsLong.sf2',"alsa")
fluidsynth.play_Note(64,0,100)
#Also tried with Note("C-5") and so forth
Run Code Online (Sandbox Code Playgroud)
使用其中一个sf2文件.但后来我得到了错误:
fluidsynth:warning:无法将线程设置为高优先级
fluidsynth:警告:在通道9上找不到预设[bank = 128 prog = 0]
研究了一下,这个答案说:
对于通用MIDI兼容性,默认声音字体乐器分配为0至0道和10-15的0区,0级("Acoustic Grand Piano")和9频道的0级("默认鼓组")显然,你的声音字体没有后者.如果您的MIDI文件不采用通用MIDI兼容乐器并且不尝试在通道9上播放鼓声,则无关紧要.
但除此之外,这可能会让事情变得更加清晰,我仍然不知道如何解决它.
另外,如果我使用与第一个链接的答案相同的文件,那么我得到的错误是这个(并且不知道如何解决它):
fluidsynth:warning:无法将线程设置为高优先级
fluidsynth:警告:无法将样本数据固定到RAM; 交换是可能的.
更新
使用sudo权限运行程序会删除此错误,但它不会发出声音.这样,我得到的错误是:
QStandardPaths:未设置XDG_RUNTIME_DIR,默认为'/ tmp/runtime-root'
我认为在fluidsynth驱动程序中选择的驱动程序模式可能存在问题,但我已尝试使用相同的结果(alsa,oss等).为了完整起见,我在VM中运行它,其中的其他声音在我的主机扬声器中正确再现.
但是根据这个答案,我想它应该通过传递给它正确的声音环境变量来解决.我不知道.我尝试过:
pkexec env DISPLAY=$DISPLAY XAUTHORITY=$XAUTHORITY python3 /home/btc/Escritorio/SinestesiaRCB/SinestesiaRCB.py
Run Code Online (Sandbox Code Playgroud)
在需要文件的完整路径的地方,因为这需要sudo权限并更改其工作目录,最后出现同样的错误:XDG_RUNTIME_DIR.
更新2
如果我使用sudo -E选项运行它,则错误将替换为新错误:
QStandardPaths:运行时目录/ run/user/1000上的错误所有权,1000而不是0
我正在读一些网页,1000用户应该是默认用户而不是root用户. …
audio-player ×10
android ×3
javascript ×3
audio ×2
c++ ×1
coremidi ×1
html ×1
html5 ×1
ios ×1
jquery ×1
linux ×1
midi ×1
mp3 ×1
objective-c ×1
performance ×1
playback ×1
python ×1
random ×1
spotify ×1
windows ×1