设置使用AJAX HTML5媒体源 [英] Setting html5 media source using ajax

查看:122
本文介绍了设置使用AJAX HTML5媒体源的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我需要帮助验证头对我的音频文件,我是从一个外部服务器抓取。所以,现在我试着去用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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆