あなたは累計
カウンタ
人目の訪問者です。

mkv(Matroska形式) → avi への変換

拡張子が mkv のファイルはMatroska形式 の動画ファイルで、メニュー、多重音声、多重字幕等DVDで行われていることを実現しようとするオープンソースの動画形式です。

海外で動画を拾って来るとたまにこの形式に当たります。字幕を動画とは別に管理してくれているので、動画だけを抜き出して再利用しようとするときには助かります。
しかしながら、先端の動画形式を扱ってる人々は違いますね。格納してある動画も可変フレームレートで格納してあることが多々あります。
mkv を avi へ変換してくれるソフトは有料、無料含めて、いくつかあるようなのですが、どれも対応しているのは固定フレームレートの物だけみたいで、可変フレームレートを変換すると音ずれしてしまいます。
結局、調べてみた物の音ずれなしで変換できるソフトは見つけることができませんでした。

仕方ないので、手動で変換したのですが、たまにしかやらない作業なので、やり方を忘れると思い、覚え書きとしてここに記載しておきます。
ですから、同じことをやりたい方は利用したソフトは自分で探してください。私もどこからダウンロードしてきたか忘れたソフトもありますんで。(笑)
とはいえ、ほとんどのソフトは、ここから入手した物に入っていたような。

1.中に格納してある動画が avi である場合


可変フレームレートとは言え avi なので、これは変換が楽。コマンドプロンプト上で作業は行います。

>mkv2vfr xxxxx.mkv output.avi timecodes.txt

mkv2vfr コマンドに目的の mkv ファイルを指定し、出力する avi ファイルの名前と、タイムコードを格納するテキストファイル名を指定する。

出力された timecodes.txt の1行目に
# timecode format v1

と記入する。(#)も必要。

次に

>tc2cfr 120000/1001 output.avi timecodes.txt complet.avi

tc2cfr コマンドにフレームレートと出力された avi , timecodes.txt を指定し、最後にフレームレートが修正された avi の名前を指定する。

フレームレートが24fpsと30fpsの物が混在していた場合、120fpsに設定すると滑らかに表示されるそうです。
詳しいことは他所で調べてください。「120000/1001」が120fpsのことです。
これで出来上がった avi は音ずれなしで再生できます。と言っても音声は入ってないでしょうが(汗)

音声は、MKVExtract GUI で簡単に分離できますので、分離した後、自由に使ってください。

なお、この処理が面倒なので私は下記のような BAT ファイルを作成しています。

"C:\Program Files\MKVtoolnix\mkv2vfr.exe" %1 %1.avi %1.txt
echo # timecode format v1 > %1_timecodes.txt
type %1.txt >> %1_timecodes.txt
D:\Tools\avi_tc_package\tc2cfr 120000/1001 %1.avi %1_timecodes.txt %1_conv.avi


コマンドには PATH を通すかフルパスでご自分の環境に合わせて記載してください。

2.中に格納してある動画が h.264 である場合


これが面倒です。しかし、よく見かけます。(汗)
まずはじめに、MKVExtract GUI を利用して映像と音声を分離します。
しかしながら、MKVExtract GUI だと、音声が多重で格納してある場合、動画部分が表示されないことがあります。
MKVExtract GUI
このような動画の場合、一度、AVI-Mux GUI を使用して、動画と目的の音声だけの mkv  へ変換してやると、MKVExtract GUI から、動画が見えるようになります。
AVI-Mux GUI
上図のように必要のない音声からチェックを外して start ボタンをクリックします。
再度、MKVExtract GUI で開くと、動画部分が表示されていいるはずですので、チェック後、Extract ボタンをクリックしてください。

Extract ボタンをクリックすると、mkvファイル名_Track1.h264 と言うファイルが作成されていると思います。
このファイルと同時に、TimeCode_Track1.txt と言うファイルも出力されていると思います。この2つのファイルを利用して、1.と同様にフレームレートを固定に変更します。
直接ここから avi へ変換もできそうですが、今のところ私は知りません。
MP4Box.exe は avi も出力できそうなので、avc2avi やら、やはり可能な気がするが、今は必要ではないので、今度変換の必要に迫られたら試してみよう。(笑)

まず、xxxxx_Track1.h264 と言うファイルを mp4形式に変換します。
この xxxxx_Track1.h264 を Yamb で Mux して、mp4形式にします。
xxxx_Track1.mp4 と言うファイルができあがったはずです。

>tc2mp4 -i xxxx_Track1.mp4 -t TimeCode_Track1.txt -o complet.mp4

tc2mp4 コマンドに、先ほどの mp4ファイルと、 TimeCode_Track1.txt を渡してやります。
complet.mp4 がフレームレートが修正された mp4 ファイルです。
これを後は使い慣れた変換ソフトで avi へ変換してやります。
tc2mp4 と MP4Box.exe はパスを通すか同じフォルダで実行してください。

そのまま、mp4 として利用するのならば、分離した音声と、Yamb を使って Mux してやると、mp4ファイルが完成します。

分離された音声も、そのままでは、avi で利用できない形式で格納されている場合が多々ありますので、ご自分の環境で使いやすい形式に変換してください。