基本的に、ここにある全てのプログラムは、上級者向けツールです。動作保証なし、サポートなしでお願いします。使用したことで何らかのトラブルが発生しても、一切責任は負いかねます。
たまたま自分で使うために作ったツールを他にも使いたい人がいるかも、ということで善意で公開しただけで、継続的なメンテナンスをするつもりはない(たまに気が向いていじることはあるかもしれないけど)ので、バグ報告とか要望を出されても、対応できない可能性が高いです。
使い方などの質問も受けつけかねます。わかる人だけ使ってください。
MPEG-2 ビデオ Elementary Streamのファイル、およびMPEG Audio(AAC除く)のファイルの先頭のゴミを除去します。Windows XPで動作確認。Windows 95以降で動作するはず。
mpvclean - MPEG-2 ビデオ Elementary
Streamのファイルから、正常なGOPの先頭以降を切り出す
mpaclean - MPEG-1.0/2.0/2.5 Audio Layer-1/2/3のファイルから、正常なAAU以降を切り出す
想定している使い方としては、D-VHSからキャプチャしたストリームを、TMPGEncとかにかましてカット編集したり、多重化するのに、ちゃんとGOPの先頭とかから始まってないとエラーになってしまうので、ゴミを取り除いて、読み込ませるようにするためのツールです。4GB以上のファイルは想定してませんが、たぶん、動作に問題はないと思われ…(死)
MPEG-2 ビデオの方は、とっても簡単に32bitのIDを拾ってるだけです。データ中に同じパターンが出現したら、誤動作するでしょう…。まあ、確率的には低いと思うので、勘弁してください。
MPEG Audioの方は、syncwordが11bitしかないので、ヘッダを解釈して、3回ヘッダが所定位置に出現するかをチェックします。手元の資料がなんか古かったりであまり正確でないので、一部自前の解析に基づいて 開発しています。ちゅーか、AAC対応すべきだよね(笑)。
使い方:
mpvclean [入力ファイル] [出力ファイル]
mpaclean [入力ファイル] [出力ファイル]
ダウンロード: mpgclean 1.02
IEC60958/IEC61937準拠 圧縮音声ビットストリームを普通のLPCMとして録音したRIFF wavファイルから、圧縮音声のElementary Streamを取り出します。
大半の人は何言ってるのかわけがわからないと思うので言い換えると、DVDプレーヤやBS/110°CSディジタルチューナのディジタル音声出力からDolby Digital (AC-3)/MPEG Audio/AACビットストリーム出力して、PCのディジタル音声入力(S/PDIF)に入れて録音したwavファイルから、Dolby Digital/MPEG Audio/AAC Elementary Streamを取り出します。
Dolby Digital (AC-3)/MPEG-1 Layer-2 (MP2)/MPEG-2 AAC/dtsで 出力動作確認ずみ。PowerDVD XP ProとかWinDVD 4plusとかはdtsデコードできるらしいけど、持ってないので出力したdtsファイルが再生できるかどうかは不明。あと、DTS CDには対応していません。なんか知らないけど、データみたら全然フォーマット違うんだもん…。プリアンブルもdtsのヘッダらしきものもDVDから出力したdtsビットストリームと全然マッチしないし。何分規格書がない(そもそもdtsの仕様はクローズド?っぽいし)ので、お手上げ。これ以上解析して対応しても、苦労の割にあまり嬉しくないしね。
あ、AC'97とか余計なミキサーが噛むサウンドカードはNGです。入力されたデータを1ビットたりとも変化させてはならないからです。あと、たぶんCOPY PROHIBIT FLAGを見るサウンドカードもNGでしょうね。このツールを使う以前の問題として、録音自体できませんから。こんなツール一体誰が使うんでしょう?(笑)
まあ、DVD-Videoとかの音声取り出したいんなら、ripしてMPEG demultiplexerに掛けた方が楽なんじゃないかと思います。BSディジタルとかも、DTCP暗号化掛かってないソースならIEEE1394経由でD-VHSキャプチャした方がうれしい気がします。大体、映像がないと、ねえ。例えば、なぜかD-VHS録画(録音?)禁止になっているBSディジタルラジオを、D/A変換を通さず、さらにはAACデコードもしないで、どーしてもそのままの状態で保存しておきたいッ!という事例なんかだと重宝するかもしれませんね。でも、くれぐれも悪用はしないようにね。
IEC61937のドキュメントは手に入らなかったので、それっぽい情報をかき集めたり、自前のデータ解析の情報に基づいて開発しています。 バージョン1.02から、圧縮パケットの位置とかを出力するバージョン(dがついてる方)も一緒に入れました。本来はデバッグ用なんですけど、AACファイルを直接編集する剛の者には重宝すると思うんで。
使い方:
ext_bs [入力ファイル.wav (非圧縮のwavファイル)] [出力ファイル.ac3/dts/mpa/mp2/mp3/aac]
ダウンロード: ext_bs 1.03
DVDとかから、MPEG demultiplexerでdemuxしたLPCMフォーマットのrawストリーム(ストリームID=0xa0)を、raw PCMに変換するプログラム。
本当はRIFF wavフォーマットに吐き出したほうが使い勝手いいんだけど、途中でめんどくさくなったのでやめました(笑)。サウンドエディタで、16bit Little Endian/ステレオ2chのraw PCMデータとして読み込んでください。読み込んだらサンプリングレートを48kHzと見なすことも忘れずに。
例によって、極めてテケトーな自前解析に基づいています。ほとんどテストしてない(1種類のDVDタイトルでしかテストしてない)ので、うまく動かないものもあるかも。dが後ろについてる方のexeは、ヘッダ情報をだーっと出力するデバッグバージョンです。
使い方:
dvdlpcm [入力ファイル] [出力ファイル]
ダウンロード: dvdlpcm 1.00
MPEG-2 PSシステムファイルのシステムヘッダを表示したり、ヘッダ中のbitrateを書き換えます。4GB超のファイルに対応した関係で、Windows NT 4.0/2000/XPでしか動きません。
使い方:
mpghdr [入力ファイル]
とやると、入力ファイルのヘッダ情報(アドレス、ヘッダの種類、内容など)をひたすら表示します。アドレス表示は下位32bit分しか出ませんので要注意。どっちかというと、下のビットレート書き換えのために書いたプログラムなので、ヘッダ詳細情報はいい加減かも…
C:\>mpghdr test.mpg 00000000: PACK_START_CODE len=14(0x0e)/MUX rate=10850000bps/stuff len=0 0000000e: SYSTEM_START_CODE len=12 bitrate=10850000bps audio 1ch/video 1ch/fixed 0/CSPS 0/AudLock 1/VidLock 1/marker 1 STREAM ID = e0(video), buffer = 258(0x102), scale = 1 STREAM ID = c0(audio), buffer = 32(0x20), scale = 0 00000020: PADDING_STREAM, length = 2016(0x7e0) 00000800: PACK_START_CODE len=14(0x0e)/MUX rate=10850000bps/stuff len=0 0000080e: VIDEO_ELEMENTARY_STREAM(1e0), length = 2034(0x7f2) 00001000: PACK_START_CODE len=14(0x0e)/MUX rate=10850000bps/stuff len=0 0000100e: AUDIO_ELEMENTARY_STREAM_0, length = 2034(0x7f2) 00001800: PACK_START_CODE len=14(0x0e)/MUX rate=10850000bps/stuff len=0 0000180e: VIDEO_ELEMENTARY_STREAM(1e0), length = 2034(0x7f2) 00002000: PACK_START_CODE len=14(0x0e)/MUX rate=10850000bps/stuff len=0 0000200e: VIDEO_ELEMENTARY_STREAM(1e0), length = 2034(0x7f2) 00002800: PACK_START_CODE len=14(0x0e)/MUX rate=10850000bps/stuff len=0 0000280e: VIDEO_ELEMENTARY_STREAM(1e0), length = 2034(0x7f2)
mpghdr [入力ファイル] [ビットレート]
とやると、MPEG SystemのパックヘッダのMUX bitrateと、システムスタートヘッダのbitrateを書き換えます。ビットレートはビット単位です。なお、入力ファイルを上書きして書き換えますので、かならず実行前にバックアップを取ってください。
ダウンロード: mpghdr 1.01
MPEG-2 Video Elementary Streamファイルのヘッダを表示したり、ヘッダ中のnominal bitrateを書き換えます。4GB超のファイルに対応した関係で、Windows NT 4.0/2000/XPでしか動きません。
使い方:
m2vhdr [入力ファイル]
とやると、入力ファイルのヘッダ情報(アドレス、ヘッダの種類、内容 詳細)をひたすら表示します(ピクチャ層まで。量子化テーブル関係は省略)。アドレス表示は下位32bit分しか出ませんので要注意。そんじょそこらのツールよりはかなり詳しい情報が得られると思います。一応ISO/IEC 13818-2と422P/MVPまわりの新しい資料を見て書いてますが、ややいい加減かも。
C:\>m2vhdr test.m2v 00000000: SEQUENCE_HEADER_CODE 0000004c: SEQUENCE_EXTENSION MP@HL 1920x1080 (16:9) 29.97fps/nominal bitrate=24000000bps/VBV buffer=597 frame type=interlaced/chroma=4:2:0/constrained=no/low delay=no 00000056: SEQUENCE_DISPLAY_EXTENSION video format=unspecified/display size=1920x1080/color description=yes color primaries=ITU-R BT.709 transfer characteristics=ITU-R BT.709 matrix coefficients=ITU-R BT.709 00000062: GROUP_START_CODE TC=00:00:00:00 (non drop frame)/closed GOP=no/broken link=yes 0000006a: PICTURE_START_CODE temporal reference=2/picture type=I/VBV delay=VBR 00000073: PICTURE_CODING_EXTENSION DC precision=10/picture structure=frame/top field first=no/DCT type=field MV in intra MB=no/quant scale type=1/intra vlc format=1/scan type=alternate repeat first field=no/chroma420 type=no/progressive frame=no composite display flag=no 0003904e: PICTURE_START_CODE temporal reference=0/picture type=B/VBV delay=VBR
m2vhdr [入力ファイル] [ビットレート]
とやると、シーケンスヘッダと、シーケンスエクステンション中のnominal bitrateを書き換えます。ビットレートはビット単位です。なお、入力ファイルを上書きして書き換えますので、かならず実行前にバックアップを取ってください。
ダウンロード: m2vhdr 1.00
TMPGEnc DVD Authorで生成したVOBをSmartRipperやNeroRecodeやDVD Shrink (3.0以降)など(他にも結構ありそう)に食わせると、暗号化されていると誤認識しますが、これを回避するようVOBを書き換えるプログラムです。なお、悪いのは誤認識する方で、TMPGEnc DVD Authorのせいではありません。また、padding byteをちょっと書き換えるので、厳密にはISO/IEC13818-1の規格からは外れます。まあ、これで問題が起きることはまずないと思いますが…
使い方:
recoverCSSdetection [入力VOBファイル] [出力VOBファイル]
入力VOBファイルを読んで出力VOBファイルに書き出します。出力VOBファイルを省略すると、入力VOBファイルを上書きして書き換えます。
ダウンロード: recoverCSSdetection 1.00