设置使用AJAX HTML5媒体源 [英] Setting html5 media source using ajax
问题描述
我需要帮助验证头对我的音频文件,我是从一个外部服务器抓取。所以,现在我试着去用ajax,我可以抓住的文件,但是我不能将它们作为介质来源为我的球员。如何你接近设定的ajax加载文件作为音源?
修改
结束了修复它,以防有人来背这个样子。
如果(this.mAudioPlayer.canPlayType(音频/ MPEG)){
this.mExtension =.MP3;
}否则,如果(this.mAudioPlayer.canPlayType(音频/ OGG)){
this.mExtension ='.OGG';
}否则,如果(this.mAudioPlayer.canPlayType(音频/ MP4)){
this.mExtension ='。M4A;
}
this.CreateAudioData =功能(){
//下载音频数据的使用:URI
$阿贾克斯({
网址:aAudioSource + this.mExtension +.TXT,
键入:GET,
背景:这一点,
异步:假的,
beforeSend:功能(XHR){xhr.setRequestHeader('授权',window.userId);},
成功:this.En codeAudioData,
错误:函数(XHR,aStatus,AERROR){的HandleError(音频错误:'+ aStatus); }
});
};
this.En codeAudioData =功能(ADATA){
//this.mAudioData = base64_en code(ADATA);
this.mAudioData = ADATA;
如果(this.mExtension =='.M4A'){
调试(打M4A);
this.mAudioSrc =数据:音频/ MP4; BASE64,+ this.mAudioData;
}否则,如果(this.mExtension =='.OGG'){
调试(播放OGG);
this.mAudioSrc =数据:音频/ OGG; BASE64,+ this.mAudioData;
}否则,如果(this.mExtension ==.MP3){
调试(播放MP3);
this.mAudioSrc =数据:音频/ MP3; BASE64,+ this.mAudioData;
}
};
this.play =功能(){
如果(this.mAudioPlayer.src!= this.mAudioSrc){
this.mAudioPlayer.src = this.mAudioSrc;
}
this.mAudioPlayer.load();
this.mAudioPlayer.play();
};
只好做异步:假的,否则我会得到一小块的声音,而不是这一切的。虽然去除取得调试,最终更容易的异步。
如果(this.mAudioPlayer.canPlayType(音频/ MPEG)){
this.mExtension =.MP3;
}否则,如果(this.mAudioPlayer.canPlayType(音频/ OGG)){
this.mExtension ='.OGG';
}否则,如果(this.mAudioPlayer.canPlayType(音频/ MP4)){
this.mExtension ='。M4A;
}
this.CreateAudioData =功能(){
//下载音频数据的使用:URI
$阿贾克斯({
网址:aAudioSource + this.mExtension +.TXT,
键入:GET,
背景:这一点,
异步:假的,
beforeSend:功能(XHR){xhr.setRequestHeader('授权',window.userId);},
成功:this.En codeAudioData,
错误:函数(XHR,aStatus,AERROR){的HandleError(音频错误:'+ aStatus); }
});
};
this.En codeAudioData =功能(ADATA){
//this.mAudioData = base64_en code(ADATA);
this.mAudioData = ADATA;
如果(this.mExtension =='.M4A'){
调试(打M4A);
this.mAudioSrc =数据:音频/ MP4; BASE64,+ this.mAudioData;
}否则,如果(this.mExtension =='.OGG'){
调试(播放OGG);
this.mAudioSrc =数据:音频/ OGG; BASE64,+ this.mAudioData;
}否则,如果(this.mExtension ==.MP3){
调试(播放MP3);
this.mAudioSrc =数据:音频/ MP3; BASE64,+ this.mAudioData;
}
};
this.play =功能(){
如果(this.mAudioPlayer.src!= this.mAudioSrc){
this.mAudioPlayer.src = this.mAudioSrc;
}
this.mAudioPlayer.load();
this.mAudioPlayer.play();
};
只好做异步:假的,否则我会得到一小块的声音,而不是这一切的。虽然去除取得了最终调试更加容易的异步。
I needed to aid authentication headers for my audio files i was grabbing from a external server. So now im trying to use ajax, i can grab the files fine, but i cant set them as the media source for my player. How do you approach setting a ajax loaded file as a audio source?
EDIT
Ended up fixing it in case someone comes back this way.
if (this.mAudioPlayer.canPlayType("audio/mpeg")) {
this.mExtension = '.mp3';
}else if (this.mAudioPlayer.canPlayType("audio/ogg")) {
this.mExtension = '.ogg';
} else if (this.mAudioPlayer.canPlayType("audio/mp4")) {
this.mExtension = '.m4a';
}
this.CreateAudioData = function() {
//downloading audio for use in data:uri
$.ajax({
url: aAudioSource + this.mExtension + '.txt',
type: 'GET',
context: this,
async: false,
beforeSend: function(xhr) {xhr.setRequestHeader('Authorization', window.userId);},
success: this.EncodeAudioData,
error: function(xhr, aStatus, aError) { HandleError('Audio Error: ' + aStatus); }
});
};
this.EncodeAudioData = function(aData) {
//this.mAudioData = base64_encode(aData);
this.mAudioData = aData;
if (this.mExtension == '.m4a') {
Debug("playing m4a");
this.mAudioSrc = "data:audio/mp4;base64," + this.mAudioData;
} else if (this.mExtension == '.ogg') {
Debug("playing ogg");
this.mAudioSrc = "data:audio/ogg;base64," + this.mAudioData;
} else if (this.mExtension == '.mp3') {
Debug("playing mp3");
this.mAudioSrc = "data:audio/mp3;base64," + this.mAudioData;
}
};
this.play = function() {
if (this.mAudioPlayer.src != this.mAudioSrc) {
this.mAudioPlayer.src = this.mAudioSrc;
}
this.mAudioPlayer.load();
this.mAudioPlayer.play();
};
Had to do asynch:false, otherwise i would get a small chunk of the audio instead of all of it. Though removing the asynch made debugging easier in the end.
if (this.mAudioPlayer.canPlayType("audio/mpeg")) {
this.mExtension = '.mp3';
}else if (this.mAudioPlayer.canPlayType("audio/ogg")) {
this.mExtension = '.ogg';
} else if (this.mAudioPlayer.canPlayType("audio/mp4")) {
this.mExtension = '.m4a';
}
this.CreateAudioData = function() {
//downloading audio for use in data:uri
$.ajax({
url: aAudioSource + this.mExtension + '.txt',
type: 'GET',
context: this,
async: false,
beforeSend: function(xhr) {xhr.setRequestHeader('Authorization', window.userId);},
success: this.EncodeAudioData,
error: function(xhr, aStatus, aError) { HandleError('Audio Error: ' + aStatus); }
});
};
this.EncodeAudioData = function(aData) {
//this.mAudioData = base64_encode(aData);
this.mAudioData = aData;
if (this.mExtension == '.m4a') {
Debug("playing m4a");
this.mAudioSrc = "data:audio/mp4;base64," + this.mAudioData;
} else if (this.mExtension == '.ogg') {
Debug("playing ogg");
this.mAudioSrc = "data:audio/ogg;base64," + this.mAudioData;
} else if (this.mExtension == '.mp3') {
Debug("playing mp3");
this.mAudioSrc = "data:audio/mp3;base64," + this.mAudioData;
}
};
this.play = function() {
if (this.mAudioPlayer.src != this.mAudioSrc) {
this.mAudioPlayer.src = this.mAudioSrc;
}
this.mAudioPlayer.load();
this.mAudioPlayer.play();
};
Had to do asynch:false, otherwise i would get a small chunk of the audio instead of all of it. Though removing the asynch made debugging easier in the end.
这篇关于设置使用AJAX HTML5媒体源的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!