【音ズレ対策総合スレッド】at AVI
【音ズレ対策総合スレッド】 - 暇つぶし2ch706:長文書くぞ
15/03/04 18:48:39.54 XpgAtruG.net
TSファイルの中でのGOPの各映像フレームの出現順序は、時刻の若い順に収納されてはいません。
GOP中最初に出現するIフレームを0番とし、次の時刻のフレームを1番、2番、、、と表現することに
すると、TSファイル先頭部分での映像フレームの出現順序は
0番(I)、-1番(B)、-2番(B)、1番(I)、、、の順になっています。
10:00:00から始まるGOPがMurdocCutterで表示されるとき、Murdocが画面表示するのはIフレームですので
この画像のPTSの表示は10:00:66になっています。 仮に、10:00:66の画像が表示されるGOPから、
20:00:66の画像が表示されるGOP(クリップされるのはこの直前)までをクリップ指定した時、
作成されるTSファイルの映像範囲は10:00:66-20:00:66ではなくて、10:00:00-20:00:00になります。
従って、クリップファイルに含む音声パケットの範囲も、10:00:00-20:00:00にするのが正しい姿
(「ノーマルTS」と命名)と考えられます。
しかしながら、先頭部分の-1番(B)と-2番(B)フレームは先行するGOPが存在しないため意味を持たず、
再生ソフトやエンコーダーではこの部分(67msec)の映像は無視することになります。
この為、これに合わせてTSの音声範囲を10:00:66-20:00:66とした(「BタイプTS」と命名)ほうが都合がよい
再生ソフトやエンコーダーソフトも多く存在します(末尾を20:00:66とするのは、分割したものを
再結合した際に原状復帰できるようにするため)。 正確には時刻範囲を設定値に一致させることは
できませんが、作成するTS目標を「ノーマルTS」にするのか、「BタイプTS」にするのかは、適切に
選択すべきです。

707:長文書くぞ
15/03/04 18:49:50.26 XpgAtruG.net
TSファイルでは定義がはっきりしない「audio-delay」というパラメーターは、先頭音声パケットのPTS
と先頭映像パケットのPTSの差ですが、この際の先頭映像パケットを無効である-2番(B)を取るか、有効な
0番(I)をとるかで67msecの違いが出てきます。 例での映像/音声ともに10:00:00-20:00:00の
TSパケットのaudio-delay値はTsMuxeR(Bフレーム基準)では0msecですが、MediaInfo(Iフレーム基準)では
-67msecになります。 解析ソフトで表示されるTSのaudio-delay値はどちらの基準で算出されているものかを
確認しておくべきでしょう。 少なくとも、解析ソフトのaudio-delayの算出基準とエンコーダーのaudio-delay
補正値の算出基準が同じなのか違うのかを知っていないと、誤りを犯すことになります。
TSの先頭部分の音声がBフレーム相当時刻(上例では10:00:00)から始まろうが、Iフレーム相当時刻
(上例では10:00:66)から始まろうが、 映像/音声のPTSの同期をとりながらハンドリングする良質の
再生ソフトやエンコーダーソフトでは、10:00:00-10:00:66の音声があっても、これを無視しますので、
「ノーマルTS」/「BタイプTS」のどちらを使っても同じ結果になりますが、映像と音声を分離して
各々、独立の処理を行った後にMUXする作りのソフト(処理高速化のために大半がこのタイプ)では
audio-delay値に応じた補正が必要であり、無補正でも音ズレがnegligible-smallになるようにするには
「BタイプTS」が便利です。 エンコーダーソフトでは、ノーマルTSの場合には67msec分の補正パラメーターを
与えなければならない物が多いように感じます。

708:長文書くぞ
15/03/04 18:51:09.98 XpgAtruG.net
「ノーマルTS」、あるいは(audio-delay < 0)のTSを入力した場合、エンコーダーの同期動作としては
(1)音声はそのまま最初からの音声を使い、映像は最初の2フレームのBフレームの代わりにブラック画面を挿入する
(2)映像は先頭の2つのBフレームを無視し、音声は最初の67msec分を捨てる
(3)映像は先頭の2つのBフレームを無視し、音声はそのまま最初から全てを使う
の3つの扱いが考えられます。
また、audio-delayが数100msecと大きなプラス値のTS(最初部分が音なし)を入力した場合、
(1)映像はそのまま使って、音声は無音を挿入して補てん
(2)音声が出現するまでの映像フレームを破棄
加えて、末尾部分でも先頭部分と同様の同期操作が必要です。
 先頭、末尾についての同期処理(特に末尾の処理)については、どのような処理を行っているかを説明していない
アプリが殆どなのでアプリの選択には注意が必要です。
 常時使うアプリがどのタイプなのかは把握しておいたほうがよいと思います。

709:名無しさん@編集中
15/03/04 20:41:33.99 XpgAtruG.net
「映像/音声のPTSの同期をとりながらハンドリングする良質のエンコーダーソフト」
のつくりとしては、PTS同期チェックをしながらパケット選別して、映像/音声の
両パケットを仕分けして、パイプで映像エンコーダー」と音声エンコーダーに
渡していきつつ、逐次処理する作りのものがベストと思います。
最初に、映像/音声を完全分離して別々のファイルを作成したのち、個々に
エンコードするやり方では、音ズレが発生した時点以後の部分で修正回復することができません。 

710:名無しさん@編集中
15/03/04 21:02:23.17 UGfMoqHP.net
つーかもろもろの問題を回避するためにMurdocCutterはわざと音声の頭を削ってるんじゃないの
どのみちts切り出す時は1GOP以上ののりしろをつけるから1GOP未満頭欠けは問題にならないし

711:名無しさん@編集中
15/03/04 21:27:49.56 XpgAtruG.net
>>
MurdocCutterは音声の頭を削ったりしていないよ。
パケットの並び順として音声パケットは対応する映像パケットから
ずっと遅れた順番の場所にあるので、映像GOPの切れ目(Iフレーム)の
開始点から切り出すと、最初に現れる音声パケットは先頭Iフレームより
200〜400msec(5~15フレーム)前の音のパケットだよ。
Murdocがこの遅れた頭を落とさないから、aftermurdocを用意したんだ。
ただ、aftermurdocは末尾で落ちこぼれになっている音声を拾い上げるのが
その第1の目的で、先頭の余分な遅れ頭を除くのはそれに伴ってできる
付録です。

712:名無しさん@編集中
15/03/06 16:48:05.56 hgzELXg1.net
一人でやっとけ
少なくともここから出てくんな

713:名無しさん@編集中
15/03/07 15:01:52.61 Pj3UwFIk.net
(´・ω・`)?

714:名無しさん@編集中
15/03/08 02:29:48.12 +tCMqGxB.net
aftermurdoc-zero.exe で末尾処理にバグが発見されましたので修正しました。
「Rev.8 MurdocCutterで作ったクリップリスト利用の無劣化TSカッター(Murdoc利用)」
として、aftermurdoc.zip(aftermurdoc.exe、aftermurdoc-zero.exe、readme.txt)
をを URLリンク(up.mapopi.com) にUPしました。

715:名無しさん@編集中
15/03/10 21:33:05.25 F3RYJOwY.net
「?」の人のために、まとめてみます。
(1)TSファイルの中で、映像パケットに後続する音声パケットのPTSは先行映像パケットのそれより200~500msec小さい。
即ち、映像パケットの後に位置する音声パケットは、その映像より(5~15)フレーム前の映像に対応するものであり、
映像パケットに対応する音声パケットは、映像よりずっと後方に出現するように並んでいる。
(2)映像GOPはTSファイル内で映像フレームが時刻順に0,1,2,3...と並ぶのではなく、0(I),-1(B),-2(B),1(I),...の順に
並んでいる。 30fpsだと1フレームあたり33msecのPTS増加となる。 MurdocCutterで画面表示されている画像は
GOP先頭のIフレームであり、表示されるPTSは0(I)の時刻。 表示されているPTSより67msec(66.666..msec)前の
-2(B)フレームのPTSがが本当の映像GOPの開始時刻。
(3)「audio-delay」値は、TSファイル中の先頭GOP以降で最初に出現する音声パケットのPTS(PTS(A))と映像パケットの
  PTS(PTS(V))の


716:差: = PTS(A) - PTS(V) だが、PTS(V)を0(I)フレームとするか-2(B)フレームとするか、2つの   流儀がある(Mediainfoは0(I)、TSMuxeRは-2(B)のPTSを使う)  エンコーダーに与える補正値はaudio-delayを   調べた時のアプリ、エンコーダーが各々0(I)、-2(B)どちらに基づいているかに注意して設定することが必要。



717:名無しさん@編集中
15/03/10 21:33:59.60 F3RYJOwY.net
例として、MurdocCutterで画面表示 00:10:00.667のGOPから00:20:000.667のGOP直前までを切り出す場合を挙げると、
作成されるTSの 映像PTS範囲は 00:10:00.000-00:20:00.000 音声のそれは 00:09:59.600-00:19:59.600 となって
先頭部に切り落とした映像に対応する音声400msecが残り、末尾では 00:19:59.600-00:20:000.000 の400msecの
音声が失われてしまいます(末尾の音欠け)。 A/V同期を考慮せずまた、単純にA/V分離して、各々エンコード処理を
行なった後にmuxすると、400msec音ズレしてしまいます。
(A)aftermurdoc.exeは   映像00:10:00.000-00:20:00:000、音声00:10:00.000-00:20:00:000(出来るだけこれに近く)
(B)aftermurdoc-zero.exeは 映像00:10:00.000-00:20:00:000、音声00:10:00.667-00:20:00:667(出来るだけこれに近く)
のTSを各々作成します。 作成されたTSでは先頭のGOPの-1(B)、-2(B)フレームは先行映像がないためにエンコーダーでは
無視されますので、A/V同期を考えると、00:10:00.000-00:10:00.667の音声は不要となりますが、(A)タイプのTSを入力
した場合に、67msecの補正値を与えないと正確なA/V同期が実現できないエンコーダーが多いため、いちいちこれを入力する
のが面倒な場合には、(B)タイプのTSを作って入力すれば補正値なし(=0)でエンコードすれば、末尾は67msec余分な
音声が付く可能性がありますが、便利です。 作成TSをどう使うのかによって、「aftermurdoc」「aftermurdoc-zero」を
使い分けてください。

718:名無しさん@編集中
15/03/10 22:01:16.54 F3RYJOwY.net
>>676 >>677
67msecを書くのに「.667」と書いてしまいました。 正しくは「.067」です。
全て、読み替えてください。

719:名無しさん@編集中
15/03/11 05:28:16.38 OYaF/wKK.net
>>677 を書き直しておきます。
例として、MurdocCutterで画面表示 00:10:00.067のGOPから00:20:000.067のGOP直前までを切り出す場合を挙げると、
作成されるTSの 映像PTS範囲は 00:10:00.000-00:20:00.000 音声のそれは 00:09:59.600-00:19:59.600 となって
先頭部に切り落とした映像に対応する音声400msecが残り、末尾では 00:19:59.600-00:20:000.000 の400msecの
音声が失われてしまいます(末尾の音欠け)。 A/V同期を考慮せずまた、単純にA/V分離して、各々エンコード処理を
行なった後にmuxすると、400msec音ズレしてしまいます。
(A)aftermurdoc.exeは   映像00:10:00.000-00:20:00:000、音声00:10:00.000-00:20:00:000(出来るだけこれに近く)
(B)aftermurdoc-zero.exeは 映像00:10:00.000-00:20:00:000、音声00:10:00.067-00:20:00:067(出来るだけこれに近く)
のTSを各々作成します。 作成されたTSでは先頭のGOPの-1(B)、-2(B)フレームは先行映像がないためにエンコーダーでは
無視されますので、A/V同期を考えると、00:10:00.000-00:10:00.067の音声は不要となりますが、(A)タイプのTSを入力
した場合に、67msecの補正値を与えないと正確なA/V同期が実現できないエンコーダーが多いため、いちいちこれを入力する
のが面倒な場合には、(B)タイプのTSを作って入力すれば補正値なし(=0)でエンコードすれば、末尾は67msec余分な
音声が付く可能性がありますが、便利です。 作成TSをどう使うのかによって、「aftermurdoc」「aftermurdoc-zero」を
使い分けてください。
Aftermurdocを使わず、MurdocCutterで切り出したTSをdemuxして.mpvと.aacを作り、これらをmuxする手順で、先頭部分の
A/Vが同期したTSを得る事ができることが知られていますが、この場合は 映像00:10:00.000-00:20:00:000、
音声00:10:00.000-00:19:59:600となって、末尾の400msecが音欠けします。 aftermurdocで切り出したせば末尾の音欠けは
ないので、aftermurdocのほうがいいと思いますが、完璧を期すにはaftermurdocで切り出したものをTSmuxeRでdemux-mux
すれば良いと思います。

720:名無しさん@編集中
15/08/11 08:57:06.22 qIrtmFJj.net


721:名無しさん@編集中
15/11/24 22:20:20.26 4aF/eLNN.net
空白期間何があったんだ

722:名無しさん@編集中
15/11/24 23:34:58.85 dWzSx5Yi.net
何もなかったのさ

723:名無しさん@編集中
15/12/01 19:43:12.71 w76y53+Q.net
そしてこれからもね

724:名無しさん@編集中
16/01/01 03:41:35.12 bIh4WsQb.net
年が明けてもなお

725:名無しさん@編集中
16/03/02 11:14:11.51 kIM9NQdh.net
春の音ズレ

726:過去ログ ★
[過去ログ]
■ このスレッドは過去ログ倉庫に格納されています


最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch