FLVPlayback ビデオをさまざまな速度で再生する必要があります。FLVPlayBack のフレームレートを変更することでこれを行うことができますか? as3 を使用してこれを達成するにはどうすればよいですか?
または、同じことを行う他の方法はありますか?私に提案してください。
メガナ
FLVPlayback ビデオをさまざまな速度で再生する必要があります。FLVPlayBack のフレームレートを変更することでこれを行うことができますか? as3 を使用してこれを達成するにはどうすればよいですか?
または、同じことを行う他の方法はありますか?私に提案してください。
メガナ
AS3 でビデオのフレームレートを変更する方法はありません。常にビデオのネイティブ フレームレートでレンダリングされます。
私が考えることができる唯一の方法は、再生ヘッドの移動方法を計算する何らかの関数を記述することですが、このアプローチの結果を保証することはできません.....
編集:あなたのコメントで尋ねるように、はい、NetStreamを制御することでそれを行うことができます。ここに解決策があります: http://younsi.blogspot.it/2009/03/how-to-play-video-in-flash-in-slow.html
少し遅くなりましたが、実際には、シークや再生/一時停止を繰り返し行わずに、FLV をスローモーションで再生する方法があります。それは非常に関与しています。
URLStream を使用して .flv ファイルを開くと、ビットにアクセスできます。タイムスタンプをスキャンして再書き込みし、新しい ByteArray をデータ生成モードで NetStream に渡します。これを使用すると、任意のフレーム レートでビデオを再生できます。ただし、オーディオをスロー/ファスト モーションで再生できるかどうかは、使用しているコーデックによって異なります。FLV パケットのレイアウトは次のようになります。
オーディオのサンプル レートを変更するには、データをいじる必要があります。タイムスタンプを変更するよりもはるかに複雑です。たとえば、AAC データには、配列へのインデックスとしてサンプル レートを指定するヘッダーがあることを知っています。
[ 96000, 88200, 64000, 48000, 44100, 32000, 24000, 22050, 16000, 12000, 11025, 8000, 7350 ]
したがって、44.1 kHz オーディオ (サンプル レート インデックス = 4) の場合、サンプル レートを 22.05 kHz (サンプル レート インデックス = 7) と宣言することで半分の速度で再生できます。
//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;
}