http://www29.atwiki.jp/red5server/pages/29.html
ここにソースコードがあります(このソースコードもどこかのサイトから拾ってmina2.0に合わせただけのものです)。
そしてこのプログラムは間違っています。
どこが間違っているかというと、videoTS audioTSという変数を準備して、getTimestampで取得した時刻情報からパケットをおさめる時間を計算していますが、getTimestampがそもそもplay開始からの経過時間をもとにしているので、この計算が必要ないという・・・
if (rtmpEvent instanceof VideoData) {
videoTs += rtmpEvent.getTimestamp();
tag.setTimestamp(videoTs);
} else if (rtmpEvent instanceof AudioData) {
audioTs += rtmpEvent.getTimestamp();
tag.setTimestamp(audioTs);
}
本当は
tag.setTimestamp(rtmpEvent.getTimestamp());
だけでOK。いやむしろこうやらないとflvファイルがおかしくなります。
2012/06/19追記
flvデータのタイムスタンプをいじって再生速度を変更させる件ですが、コーデックもろもろの条件により、ほぼ動作しません。
申し訳ありませんでした。
0 件のコメント:
コメントを投稿