我正在使用簡單的as3 + php,沒有FMS或之間的這種。我正在製作一個視頻錄製應用程序,我可以捕獲幀並將它們轉換爲flv編碼的bytearray。但是當我嘗試將它保存在服務器上時,問題就會發生。如果我通過base64編碼將字節數組轉換爲字符串,然後將該字符串發送到服務器,所有工作都可以,但問題是由於它是一個視頻文件,它可能非常大,例如20mb左右,因此需要很長一段時間才能對其進行編碼並上傳,而且在編碼過程中通常會發生腳本超時。爲了加快速度,我試圖直接發送字節數組,但是我的螢火蟲網絡面板顯示發送的數據大約在20-46字節。請告訴我我做錯了什麼。如何通過php在服務器上保存bytearray?
//var encoded_str = Base64.encodeByteArray(_baFlvEncoder.byteArray);
//Handle Upload
/*var url_data:URLVariables = new URLVariables();
url_data.data = _baFlvEncoder.byteArray;*/
var url_ref:URLRequest = new URLRequest("save_vid.php");
url_ref.contentType = 'application/octet-stream';
url_ref.data = _baFlvEncoder.byteArray;//url_data;
url_ref.method = URLRequestMethod.POST;
var urlLoader:URLLoader = new URLLoader();
// just making sure the server knows we are sending data in proper format
//urlLoader.dataFormat = URLLoaderDataFormat.TEXT;
urlLoader.dataFormat = URLLoaderDataFormat.BINARY;
try {
urlLoader.load(url_ref);
} catch (e:Error) {
trace(e);
}
我的PHP代碼:
<?php
echo 'Data:<pre>';
print_r($_POST);
echo '</pre>';
//$decodedData= base64_decode($GLOBALS[ 'HTTP_RAW_POST_DATA' ]);
//file_put_contents("test.flv",$decodedData);
file_put_contents("test.flv",$GLOBALS[ 'HTTP_RAW_POST_DATA' ]);
?>
ooh謝謝,我不知道這一點。這一次,雖然看起來數據正在發送,視頻文件沒有被生成....我得到0kb flv文件。 – Bluemagica 2012-08-14 02:47:51
不知道你的PHP代碼是否仍然如上所示 - 你顯然不希望base64_decode這個輸入。 @亞當在這裏的建議看起來很合理,但我不是一個PHP人。 – 2012-08-14 02:52:21
我更新了代碼以反映更改。請看看... – Bluemagica 2012-08-14 02:54:35