2017-06-13 13 views
0

FileReader APIを使用してmp4データを取得しましたが、エンコードに問題があります。この機能を 、正しいエンコードでFileReader APIを使用してJavaScriptを使用してバイナリデータを取得する方法

var reader = new FileReader(); 
    var blob = new Blob([this.response], {type : "video/mp4"}); 
    reader.onload= function (evt) { 
     mp4text = evt.target.result; 
     mp4text = mp4text.toString() 
     //mp4text = mp4text.slice(22); 
     //mp4text = CryptoJS.AES.encrypt(mp4text, "test"); 
     //mp4text = window.atob(mp4text); 
     var myBlob = new Blob([evt.target.result], {type : "video/mp4"});//NOT SAME contrast to blob! 
     var downloadUrl = URL.createObjectURL(myBlob); 
     document.getElementById('myVideo').src = downloadUrl; 
    } 
    reader.readAsBinaryString(blob); 

私はmyBlobはブロブと同じFILEDATAを持っていると思ったが、一部のデータが変更さ!より詳細に、キャラクターの多くは同じですが、いくつかの16進コードは異なります。どうすればこの問題を解決できますか?

答えて

0

JavaScriptの文字列は任意のバイナリデータを表すことができないので、readAs バイナリの文字列はあなたの考えではありません。
readAsBinaryStringは、各ソースバイトごとに、それはあなたに目的地の文字を与えます(私はそれが私の頭の上から使用する文字エンコーディングではありません)。
utf-8文字が✔の場合、readAsBinaryStringはâを返します。その文字はツリーの長さが長いため%E2%9C%94です。
バイナリ/ブロブ列âにこの背を向けるしようとすると3つのバイトではありませんこれは、UTF-8として処理されますが、7(%C3%A2%C5%93%E2%80%9Dと)

マイreadAsArrayBufferを使うことをお勧めします。私はCryptoJSがarraybuffersをサポートしていると確信しています。

関連する問題