とある映画をPSP用に変換しようと考え、5.1chなんだからそのまま入れられればな、ついでにPS3でも再生できるようにと考えました。
ここで問題になってくるのは
・PSPは5.1chAACに対応していない
・AVアンプはビットレートの急変する5.1chAACのデコードが苦手で音切れすることがある。
というわけで、5.1chAACはあきらめてそれならばステレオと互換性のある「Dolby ProLogic II」にしてしまえばいいと思ったわけです。
しかし、解説しているところがない!!
半ばあきらめていたところ昔PSP変換用に使用していた「XviD4PSP 5.0」で作成できるではありませんか!!仕組みを調べてみるとAvisynthのユーザー関数で音を作っていることが判明。早速引用してDolbyのロゴをエンコードしてAVアンプで再生すると・・・お!分離している。
というわけで作り方
ここで問題になってくるのは
・PSPは5.1chAACに対応していない
・AVアンプはビットレートの急変する5.1chAACのデコードが苦手で音切れすることがある。
というわけで、5.1chAACはあきらめてそれならばステレオと互換性のある「Dolby ProLogic II」にしてしまえばいいと思ったわけです。
しかし、解説しているところがない!!
半ばあきらめていたところ昔PSP変換用に使用していた「XviD4PSP 5.0」で作成できるではありませんか!!仕組みを調べてみるとAvisynthのユーザー関数で音を作っていることが判明。早速引用してDolbyのロゴをエンコードしてAVアンプで再生すると・・・お!分離している。
というわけで作り方
1.ユーザー関数を定義する。(ファイルにして参照してもよし、そのままavsに貼り付けてもよし)
function ConvertToDolbyProLogicII(clip a)
{
a = (HasAudio(a)==True) ? ConvertAudioToFloat(a) : a
a = (AudioChannels(a)==1) ? GetChannel(a, 1, 1) : a
a = (AudioChannels(a)==2) ? a : a
FrontLeft = (AudioChannels(a)==3) ? MixAudio(GetChannel(a, 1), GetChannel(a, 3), 0.5, 0.5) : 0
FrontRight = (AudioChannels(a)==3) ? MixAudio(GetChannel(a, 2), GetChannel(a, 3), 0.5, 0.5) : 0
a = (AudioChannels(a)==3) ? MergeChannels(FrontLeft, FrontRight) : a
TotalLeft = (AudioChannels(a)==4) ? MixAudio(GetChannel(a, 1), GetChannel(a, 3), 0.5, 0.5) : 0
TotalRight = (AudioChannels(a)==4) ? MixAudio(GetChannel(a, 2), GetChannel(a, 4), 0.5, 0.5) : 0
a = (AudioChannels(a)==4) ? MergeChannels(TotalLeft, TotalRight) : a
FrontLeft = (AudioChannels(a)==5) ? MixAudio(GetChannel(a, 1), GetChannel(a, 3), 0.3694, 0.2612) : 0
FrontRight = (AudioChannels(a)==5) ? MixAudio(GetChannel(a, 2), GetChannel(a, 3), 0.3694, 0.2612) : 0
TotalLeft = (AudioChannels(a)==5) ? MixAudio(FrontLeft, GetChannel(a, 4), 1, 0.3694) : 0
TotalRight = (AudioChannels(a)==5) ? MixAudio(FrontRight, GetChannel(a, 5), 1, 0.3694) : 0
a = (AudioChannels(a)==5) ? MergeChannels(TotalLeft, TotalRight) : a
ssl = (AudioChannels(a)>=6) ? MixAudio(GetChannel(a, 5), GetChannel(a, 6), 0.2818, 0.1627).Amplify(-1.0) : 0
fl_c = (AudioChannels(a)>=6) ? MixAudio(GetChannel(a, 1), GetChannel(a, 3), 0.3254, 0.2301) : 0
ssr = (AudioChannels(a)>=6) ? MixAudio(GetChannel(a, 5), GetChannel(a, 6), 0.1627, 0.2818) : 0
fr_c = (AudioChannels(a)>=6) ? MixAudio(GetChannel(a, 2), GetChannel(a, 3), 0.3254, 0.2301) : 0
l = (AudioChannels(a)>=6) ? MixAudio(ssl, fl_c, 1.0, 1.0) : 0
r = (AudioChannels(a)>=6) ? MixAudio(ssr, fr_c, 1.0, 1.0) : 0
a = (AudioChannels(a)>=6) ? MergeChannels(l, r) : a
a = (HasAudio(a)==True) ? ConvertAudioTo16bit(a) : a
return(a)
}
NicAudioではダウンミックスしないこと
avsに「ConvertToDolbyProLogicII()」を追記
無論、音声を取り込む行の後に追加
これで元が5.1chならDPL2になります。
この状態でエンコしたファイルをDPL2モードにしたAVアンプ等で再生すると後ろからも音が出ます。
余談:
この方法ではLEFチャンネルはミックスされません。Dolbyの資料によると入れるのはおすすめしないと書いてあるそうです。ミックスすると音が割れたりするようです。LEFチャンネルは再生する際に他のチャンネルから抽出されるそうです。
function ConvertToDolbyProLogicII(clip a)
{
a = (HasAudio(a)==True) ? ConvertAudioToFloat(a) : a
a = (AudioChannels(a)==1) ? GetChannel(a, 1, 1) : a
a = (AudioChannels(a)==2) ? a : a
FrontLeft = (AudioChannels(a)==3) ? MixAudio(GetChannel(a, 1), GetChannel(a, 3), 0.5, 0.5) : 0
FrontRight = (AudioChannels(a)==3) ? MixAudio(GetChannel(a, 2), GetChannel(a, 3), 0.5, 0.5) : 0
a = (AudioChannels(a)==3) ? MergeChannels(FrontLeft, FrontRight) : a
TotalLeft = (AudioChannels(a)==4) ? MixAudio(GetChannel(a, 1), GetChannel(a, 3), 0.5, 0.5) : 0
TotalRight = (AudioChannels(a)==4) ? MixAudio(GetChannel(a, 2), GetChannel(a, 4), 0.5, 0.5) : 0
a = (AudioChannels(a)==4) ? MergeChannels(TotalLeft, TotalRight) : a
FrontLeft = (AudioChannels(a)==5) ? MixAudio(GetChannel(a, 1), GetChannel(a, 3), 0.3694, 0.2612) : 0
FrontRight = (AudioChannels(a)==5) ? MixAudio(GetChannel(a, 2), GetChannel(a, 3), 0.3694, 0.2612) : 0
TotalLeft = (AudioChannels(a)==5) ? MixAudio(FrontLeft, GetChannel(a, 4), 1, 0.3694) : 0
TotalRight = (AudioChannels(a)==5) ? MixAudio(FrontRight, GetChannel(a, 5), 1, 0.3694) : 0
a = (AudioChannels(a)==5) ? MergeChannels(TotalLeft, TotalRight) : a
ssl = (AudioChannels(a)>=6) ? MixAudio(GetChannel(a, 5), GetChannel(a, 6), 0.2818, 0.1627).Amplify(-1.0) : 0
fl_c = (AudioChannels(a)>=6) ? MixAudio(GetChannel(a, 1), GetChannel(a, 3), 0.3254, 0.2301) : 0
ssr = (AudioChannels(a)>=6) ? MixAudio(GetChannel(a, 5), GetChannel(a, 6), 0.1627, 0.2818) : 0
fr_c = (AudioChannels(a)>=6) ? MixAudio(GetChannel(a, 2), GetChannel(a, 3), 0.3254, 0.2301) : 0
l = (AudioChannels(a)>=6) ? MixAudio(ssl, fl_c, 1.0, 1.0) : 0
r = (AudioChannels(a)>=6) ? MixAudio(ssr, fr_c, 1.0, 1.0) : 0
a = (AudioChannels(a)>=6) ? MergeChannels(l, r) : a
a = (HasAudio(a)==True) ? ConvertAudioTo16bit(a) : a
return(a)
}
NicAudioではダウンミックスしないこと
avsに「ConvertToDolbyProLogicII()」を追記
無論、音声を取り込む行の後に追加
これで元が5.1chならDPL2になります。
この状態でエンコしたファイルをDPL2モードにしたAVアンプ等で再生すると後ろからも音が出ます。
余談:
この方法ではLEFチャンネルはミックスされません。Dolbyの資料によると入れるのはおすすめしないと書いてあるそうです。ミックスすると音が割れたりするようです。LEFチャンネルは再生する際に他のチャンネルから抽出されるそうです。
コメント