AS3 - как изменить скорость FLVPlayBack - PullRequest
0 голосов
/ 21 марта 2012

Мне нужно воспроизводить FLVPlayback Video на разных скоростях. Могу ли я сделать это, изменив частоту кадров FLVPlayBack и как я могу добиться этого, используя as3?

Или есть другой способ сделать то же самое? Пожалуйста, Предложите мне.

Meghana

Ответы [ 3 ]

1 голос
/ 23 августа 2014

Звонит немного поздно, но на самом деле есть способ играть FLV в замедленном режиме без постоянного поиска или повторного воспроизведения / паузы.Это просто чрезвычайно сложно.

Если вы откроете файл .flv с помощью URLStream, тогда вы сможете получить доступ к битам.Сканируйте метку времени, переписывайте ее, затем передайте новый ByteArray в NetStream в режиме генерации данных.Используя это, вы можете воспроизводить видео с любой частотой кадров - хотя способность воспроизводить звук в замедленном / ускоренном режиме зависит от используемого кодека.Структура пакета FLV выглядит примерно так:

  1. "FLV"
  2. длина пакета
  3. тип пакета (аудио / видео / метаданные)
  4. timestamp
  5. дополнительные заголовки
  6. data

Чтобы изменить частоту аудиосэмплирования, вам понадобится смешать данные - гораздо более замысловато, чем просто изменение временных отметок.Я знаю, например, что данные AAC имеют заголовок, который задает частоту дискретизации в качестве индекса в массиве:

[ 96000, 88200, 64000, 48000, 44100, 32000, 24000, 22050, 16000, 12000, 11025, 8000, 7350 ]

Так что, если у вас был звук на 44,1 кГц (индекс частоты дискретизации= 4) вы можете играть на половинной скорости, указав частоту дискретизации 22,05 кГц (индекс частоты дискретизации = 7)

1 голос
/ 21 марта 2012

Невозможно изменить частоту кадров видео в AS3, оно всегда будет отображаться с исходной частотой видео.

Единственный способ, которым я могу думать, это написать какую-то функцию, котораявычисляет, как перемещать точку воспроизведения, но я не могу гарантировать результат этого подхода .....

РЕДАКТИРОВАТЬ: Как вы спросите в своем комментарии, ДА, вы можете сделать это, управляя NetStream.Вот вам решение: http://younsi.blogspot.it/2009/03/how-to-play-video-in-flash-in-slow.html

0 голосов
/ 21 марта 2012
//set your framerate here whatever you want
stage.frameRate = 30;
var FRAMERATE : Number = stage.frameRate;

btnActual.addEventListener(MouseEvent.CLICK, videoSpeed);
btn15.addEventListener(MouseEvent.CLICK, videoSpeed);
btn5.addEventListener(MouseEvent.CLICK, videoSpeed);

function videoSpeed (myEvent:Event):void{

    var newFrameRate = Number(myEvent.target.value);    

    stage.frameRate = newFrameRate;

}
...