にわとり遊び
PC関連とエンコードの覚書き
スポンサーサイト
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

tsから音声を分離した時点で音ズレする場合の対処法
普段はBonTsDemuxでm2v+wavを分離させているのですが、
BS日テレの歴史シリーズにはその方法が通用しないようです。

出力したwavの再生時間が、tsでの再生時間よりも3秒ほど短くなってしまいました。
どうやら徐々にズレが大きくなって、最終的に3秒のズレとなってしまうようです。
aac出力にしても、DGIndexでやっても結果は同じでした。

ts2aacを使うと、全体の再生時間はピッタリ合うものができました。
が、分離させたaacをMPCなどで再生してみると、CMしか再生されない。
どうやら本編とCMで音声の方式が異なっているため、CMの音声が含まれていると本編の音声が再生されなくなってしまうような…よくわからないけどそんな感じのようです。

2010/03/08
とりあえず、解決方法を見出したので書いておきます。
1.何かしらのts編集ソフトで本編をCM挿入時ごとに分割。(CM+本編1+CM+本編2+CM を 本編1,本編2 にCMカットし分割)
2.BonTsDemuxでm2v+wav分割。
3.VirtualDubで、本編前後にちょっとだけ残ったCMをフレーム単位でカットしvcf出力。念のため音声波形を見ながら編集したほうがいいかも。
4.avisynthで以下のように記述して結合。
video1 = MPEG2video("datafile1\datafile.m2v")
audio1 = WAVSource("datafile1\datafile.wav")
video2 = MPEG2video("datafile2\datafile.m2v")
audio2 = WAVSource("datafile2\datafile.wav")
AudioDub(video1, audio1).AddRange("1.vcf")++AudioDub(video2, audio2).AddRange("2.vcf")

あまりスマートな解決方法ではないですが、普通に見る限りでは音ズレは確認できないと思います。
ちなみにts編集にはMpg2Cut2を使ってます。きびきび動くので使いやすい。
スポンサーサイト
DVDのエンコード 5.1ch音声の場合
今日まで知らなかったことをいくつか

・5.1chのAC3は、5.1chのWAVにデコードすればneroAACでそのままエンコードできる
・AC3は、avisynthのプラグインNicAudioで NicAC3Source("ac3audio.ac3") と記述すればWAVと同様に扱える
・WAVファイルは4GB以上になるとぶっ壊れる仕様なので、途中で切るなど対処が必要

WAVファイルの上限サイズについては普段使っている形式なだけに、意外というか、いままで知らなかったのが不思議なくらい。
5.1chの場合だと約2時間で上限サイズに到達してしまうので、映画のエンコードでぶつかる問題なのだろうなあ。
今回まさにその問題に直面してしまったので、とりあえずの対処方法として、
1.VirtualDubで音の切れ目をみつけて、前半と後半のvcfファイルを作成
2.それぞれavsに読み込ませて、いつもどおりWAVデコード・AACエンコードする
3.mp4boxで音1・音2を結合し、あらかじめ作っておいた映像と合わせる
といった感じでやってみました。
今回は映像のエンコードが終わっていたので音だけ別にエンコードしたけど、映像のほうも同時にエンコードして結合したほうが楽かもしれない。


2G以上のサイズを読めるよう対処してあるavs2wavを使って読み出し、neroAacEncで「-ignorelength」オプションを付ければ、ファイルサイズは関係なくエンコード可能になる。
インタレ維持したリサイズの件
以下のように処理しているのですが、どうも綺麗じゃない。

Bob()
#リサイズ
#ノイズ除去
SeparateFields()
SelectEvery(4, 1, 2)
Weave()

AssumeTFF().SeparateFields().SelectEvery(4, 0, 3).Weave()

要するにBobでインタレ素材をプログレッシブ化(1フィールドを1フレームに水増し)してリサイズしているわけです。

ただ、avisynth内蔵のbobだと単純に水増ししてるだけなので、ギザギザしちゃう。
かといって補完が綺麗なプラグインを使うと、重いし元の絵から離れるのであまり使いたくない。

せっかくbobで水増ししたのに、インタレ化する際に1フィールド分捨てる羽目になるのも気に食わない。
じゃあbobいらなくね?と思うのですが、リサイズするとなると、そういう訳にも行かないんだよなあ…。

悩ましい。

2010/03/08
指摘をいただいたので編集。
最初にAssumeTFF()と入れてもbobで強制的に変更されるので
bobの後にもう一度AssumeTFF()としないと、フィールドオーダーがどっちだかわかんなくなっちゃうのだとか。
教えていただき、ありがとうございます。


上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。