Как отправить данные формата FLV в ByteArray с помощью URLLoader в php-скрипт?


Я создаю флеш-игру, в которой есть функция захвата/записи игрового процесса, которую пользователь может просмотреть позже, например, повтор.

На данный момент я уже могу записывать игру и записывать ее в формат flv в переменной ByteArray.

Сейчас я работаю над тем, как отправить этот ByteArray (видеофайл) в php-скрипт и сохранить его на веб-сервере.

Я столкнулся с загрузчиком URL во flash, где он может отправлять данные, и php получит их через метод POST. К сожалению, ByteArray, содержащий данные flv, должен быть сначала правильно закодирован, чтобы php мог его прочитать. Я понял это из примера в сети, где он делает то же самое, только отправляет только файл JPEG ByteArray вместо формата FLV с использованием JPEGENCODER.

Существует ли какой-либо существующий класс, такой как JpegEncoder для формата FLV или любых видеоформатов? Или какая-нибудь обходная работа, например, создание кодировщика "я сам"?

Заранее спасибо, ребята.

Вот мой текущий код для отправки ByteArray

            //send byteArray to a php script
        var request:URLRequest = new URLRequest(url);
        request.method = URLRequestMethod.POST;

        //need to correctly encode first the ByteArray in FLV format
        //....

        request.data = fs; //FLV byteArray  
        var loader:URLLoader = new URLLoader();
        trace(request.data);
Author: hakre, 2010-12-15

1 answers

Только что понял это.

Теперь я могу успешно отправить flv ByteArray в php-скрипте, где затем php получает его и сохраняет в виде файла flv в локальной системе и загружает его на сервер YouTube с помощью zend framework.

Вот мой код во флэш-памяти.

            //send byteArray to a php script
        var header:URLRequestHeader = new URLRequestHeader ("Content-type", "application/octet-stream");
        var request:URLRequest = new URLRequest(url);

        request.requestHeaders.push (header);
        request.method = URLRequestMethod.POST;

        request.data = fs; //FLV byteArray  
        var loader:URLLoader = new URLLoader();
        trace(request.data);
        loader.load(request)

И scipt, который получает и сохраняет его в виде flv-файла:

        $im =  $GLOBALS["HTTP_RAW_POST_DATA"];
    $fp = fopen("testVid.flv", 'w');    
    fwrite($fp, $im);
    fclose($fp);

Оказывается, мне действительно не нужно кодировать ByteArray, как это делает JPEGEncoder. Я все еще очень новичок во flash и хотя php. И я понятия не имею, является ли это лучшей практикой, которую я могу иметь. Совет был бы очень признателен. Спасибо, ребята.

 3
Author: greenGlitz, 2010-12-16 04:35:48