2005年09月11日

mencoderのA/V syncの信頼性向上のために

概要:mencoderのA/V syncの信頼性向上のために
原文:8.1.11.1. Improving muxing and A/V sync reliability
タグ:[mencoder][音ズレ][harddup]
2005/10/29日現在、以下の原文はリンク先から削除されています。

そもそもmencoderは、固定fpsオンリーのAVI専用エンコーダとしてスタートしたものであるからして、可変fpsに対応した、より新しいコンテナでは音ズレのリスクを負う。それが宿命(何。
mp4とかだけでなくて.asfすら危ういもんがあるらしい。

とゆうことで、時間軸ベースで映像だろうが音声だろうが変幻自在のQuick” Time ”.movや、それベースの.mp4でヤバい事が起きているようだ。
どないすんねん、、、と思ってたら、8.1. Making a high quality MPEG-4 ("DivX") rip of a DVD movieに改訂を発見。なんとたいむりーな♪

8.1.11.1. Improving muxing and A/V sync reliability

 You may experience some serious A/V sync problems while trying to mux your video and some audio tracks, where no matter how you adjust the audio delay, you will never get proper sync. That may happen when you use some video filters that will drop or duplicate some frames, like the inverse telecine filters. It is strongly encouraged to append the harddup video filter at the end of the filter chain to avoid this kind of problem.

Without harddup, if MEncoder wants to duplicate a frame, it relies on the muxer to put a mark on the container so that the last frame will be displayed again to maintain sync while writing no actual frame. With harddup, MEncoder will instead just push the last frame displayed again into the filter chain. This means that the encoder receives the exact same frame twice, and compresses it. This will result in a slightly bigger file, but will not cause problems when demuxing or remuxing into other container formats.

You may also have no choice but to use harddup with container formats that are not too tightly linked with MEncoder such as the ones supported through libavformat, which may not support frame duplication at the container level. 

8.1.11.1. muxとA/V syncの信頼性向上。

映像と音声をmuxする場合に、オーディオディレイを調節してあっても、深刻な音ズレが発生する可能性があります。
これは、フレームをdropしたりdupulicate(*複製*)したりするビデオフィルタを使った場合に起こり得ます。例えば、逆テレシネフィルタ。
この種の問題を回避するには、フィルタチェインの末尾に"harddup"を置く事を強く推奨します。

"harddup"抜きの場合:フレームをdupulicateする際には、A/V sync維持のため、直前フレームの再表示フラグが必要ですが、MEncoderはコンテナへのマーキングをmuxerに任せます。
"harddup"ありの場合:MEncoderは単純に直前のフレームをフィルタチェインの中に押し込みます。この結果、エンコーダは同一フレームを2回 受け取り、圧縮することになります。ファイルサイズは多少増えますが、これによりdemuxや他形式のコンテナへのremuxで問題が起きる事がなくなり ます。

同様に、あまりMEncoderと親和性の低いコンテナ、例えば、libavformat経由でサポートされている、コンテナレベルでのフレーム duplicationをサポートしていないような形式へ書き出す場合も、"harddup"以外の選択肢が無いかも知れません。


*"strongly encouraged"は「強く推奨」としたが、mplayerhq内では珍しく強い表現との印象を受けた。

filmdint常用してっと
Skipping frame!
とか
1 duplicate frame(s)!
なんてのは、佃煮にする程出る。いいよいいよ〜。-of lavf mp4が見えて来たよ〜。あとはlameとfaacの雑音化がクリアされれば!
posted by ばる at 00:25| Comment(2) | TrackBack(0) | mencoder[コマンド] | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
この情報のおかげでリアルタイム録画(長時間)における映像&音声同期ズレの問題が解決しました。非常に助かりました。
harddup はクリティカルヒットでした(^-^)

同期の問題だけがどうしても解決できなくて、1ヶ月ぐらい悩んでいたので、Linux によるTV録画システム構築計画を放棄して、Windows に戻ろうかと真剣に考えていた矢先でした。。。

本当にありがとうございました。 m(_ _)m
Posted by ユーバー at 2006年06月16日 06:47
ユーバー様

いえいえいえいえいえ。お役に立ちますればなによりでございます。

>Linux によるTV録画システム構築計画を
それ、どっかで書いてもらえるとすごいイキオイで読みます。
ドライバがあればMacでもFoltiaが動くらしいのですが、、、
Posted by ばる at 2006年06月16日 22:53
コメントを書く
お名前: [必須入力]

メールアドレス: [必須入力]

ホームページアドレス: [必須入力]

コメント: [必須入力]

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。
この記事へのトラックバックURL
http://blog.seesaa.jp/tb/6785708
※言及リンクのないトラックバックは受信されません。

この記事へのトラックバック
×

この広告は1年以上新しい記事の投稿がないブログに表示されております。