長時間配信の再生時間表示がおかしくなる件について
長時間配信の再生時間表示がおかしくなる件についてスレで有用な情報を頂いた
934さんどうもありがとうございました!
934 名前:名無しさん@お腹いっぱい。[sage] 投稿日:2011/04/25(月) 20:52:38.03 ID:6KHGsd410 recoで長時間録画したファイルが再生ソフトなどで少ない再生時間表示になり ちゃんと再生できないファイルを修復するソフトを作りました 長時間とは16777秒(約4時間40分)超えのことです http://osflash.org/flv ここのFLVの仕様を見るとTimestampの3byte分(0xFFFFFF=16777215㍉秒)を超えると また0からはじまり、TimestampExtendedが1増えるのですが recoだとこれが0に固定されていて再生時間がおかしくなります この修復ソフトはTimestampExtendedだけを変更します 使用方法は壊れたファイルをドラッグアンドドロップするだけです http://www1.axfc.net/uploader/Sc/so/227881.zip&key=nico
これで今まで6時間配信できちんとテストなんてしてないことがばればれになってしまったな
それとドキュメントはちゃんと読まないとダメだ
追記
952さんからパッチを頂いた
どうもありがとうございました!
952 名前:名無しさん@お腹いっぱい。[sage] 投稿日:2011/04/25(月) 23:17:42.05 ID:NIjszGIz0 [2/2] recoだとRtmp内のタイムスタンプは単調増加だから書き出すところで調整すれば終わりかな? timestampextended の次の StreamId 3バイトは >>934 だと always 0 ってなってるけどrecoだと最後 1 になってるね何ぞ diff --git a/scripts/flv.rb b/scripts/flv.rb index 085e869..1e27913 100755 --- a/scripts/flv.rb +++ b/scripts/flv.rb @@ -16,8 +16,8 @@ class Flv def output(type, length, length_str, timestamp, body) @fd.print [type].pack("C*") @fd.print length_str - @fd.print decomp(timestamp, 3) - @fd.print [0x00, 0x00, 0x00, 0x01].pack("C*") + @fd.print decomp(timestamp & 0xffffff, 3) + @fd.print [(timestamp >> 24) & 0xff , 0x00, 0x00, 0x00].pack("C*") @fd.print body @fd.print decomp(length + 11, 4) end