スポンサーサイト

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

FLVをMP4に変換したあと、確認してみたら音ズレしていた。動画変換ソフトだとエンコードに時間がかかるし、画質も悪くなる。画質を維持したまま無劣化で、音ズレもなく、変換時間のかからない方法ってないかなー?

そんなあなたに読んで欲しい――。

つまり、FLV(VFR)をMP4に音ズレ対策込みで短時間で無劣化変換する。ということ。まとまってない・・・。

で、なぜこの作業が必要になったのかですが、ただ単に使おうと思って買った動画編集ソフトがFLVに対応していなかったからです。別に固定フレームレート(CFR)のFLVであればHugFlashとかでちょちょいだったのですが、可変フレームレート(VFR)を変換しようと思ったら盛大に音ズレしていて、調べていく内にこんな作業を行わなければならないことに気付いた訳です。それでやっとこさ解決したのでまとめを書いている次第です。

ひとつ注意しておきたいのは先ほど「時間のかからない」「短時間」とか書きましたが、動画変換ソフトでエンコードするよりも短い時間でできる(かもしれない)だけで、作業工程はこちらの方が断然多いです。慣れれば苦にならない・・・かな?みたいな感じで受け取っていただければ。

1. 準備

作業を細かく説明する前にまずは必要なソフトを準備しておきます。

2. FLVから映像と音声、タイムコードを抽出する(FLVExtract)

  1. まず、変換したいFLV(VFR)ファイルを用意します。不安であればバックアップを取っておきましょう。
  2. 「FLVExtract.exe」を起動します。
  3. 全てにチェックを入れた状態で、ウィンドウに変換したいFLVファイルをドラッグ&ドロップします。

    g150210_01.jpg

  4. FLVファイルと同じディレクトリに映像(.264)、音声(.aacや.mp3)、タイムコード(.txt)が抽出されます。

    g150210_02.jpg

  5. 「OK」をクリック。ウィンドウを閉じます。

3. 抽出した映像だけをMP4に変換する(My MP4Box GUI)

  1. 「My MP4Box GUI.exe」を起動します。
  2. 「Mux」タブになっていなかったらします。
  3. 先ほど抽出した映像(.264)ファイル"だけ"をリストにドラッグ&ドロップします。

    g150210_03.jpg

  4. 「Mux」をクリック。
  5. ファイル名に「~muxed」と付いた映像のみのMP4が出力されます。

    g150210_04.jpg

4. 出力された映像のみのMP4にタイムコードを埋め込む(DtsEdit)

  1. DtsEditでタイムコードを埋め込むためのバッチファイルを作成します。テキストエディタを開き以下をコピー&ペーストします。
    @echo off
    title タイムコード埋め込みバッチファイル
    echo 可変フレームレート(VFR)のMP4にタイムコードを埋め込みます。
    echo;
    echo MP4ファイルをドラッグ&ドロップし、Enterを押してください。
    set /p MP4="ファイルパス="
    echo;
    echo タイムコード(TXTファイル)をドラッグ&ドロップして、Enterを押してください。
    set /p TIMECODE="ファイルパス="
    echo;
    echo 以上で実行します。
    pause
    "DtsEdit.exe" -tc %TIMECODE% %MP4% -o %MP4%_conv.mp4
    echo 処理が完了しました。
    pause
    
    「○○○.bat」と適当に名前を付けて「DtsEdit.exe」と同じディレクトリに保存します。

    g150210_05.jpg

  2. My MP4Box GUIで出力した映像のみのMP4とFLVExtractで抽出したタイムコード(.txt)を用意します。
  3. 保存したbatファイルを起動し、指示に従って操作して下さい。
    ※「サンプル書き込みエラー」が出る場合、タイムコードの重複が原因なので重複箇所を削除する必要があります。以下の方法などで重複の削除が可能です。
  4. 処理が完了すると更に「~_conv」と付加されたMP4が出力されます。これがタイムコードが埋め込まれた映像のみのMP4ファイルになります。

    g150210_06.jpg

5. AACをM4Aに変換(MP4Box)

FLVExtractで抽出された音声ファイルがMP3なら 6. へ飛んで下さい。AACファイルの場合は以下の手順が必要です。

  1. こちらもバッチファイルを作成します。テキストエディタを開き以下をコピー&ペーストします。
    @echo off
    title AAC to M4A
    echo AACをM4Aに変換します。
    echo;
    echo AACファイルをドラッグ&ドロップして、Enterを押して下さい。
    set /p AAC="ファイルパス="
    echo;
    echo 以上で実行します。
    pause
    "mp4box.exe" -add %AAC% %AAC%.m4a
    echo 処理が完了しました。
    pause
    
    「○○○.bat」と適当に名前を付けて「mp4box.exe」と同じディレクトリ(GPACのインストール先 : C:\Program Files (x86)\GPACまたはC:\Program Files\GPAC)に保存します。それか、mp4box.exeだけを別のフォルダにコピーし、そこにbatファイルを置いても良いです。

    g150210_07.jpg

  2. batファイルを起動し、指示に従って進めます。
  3. M4Aファイルが出力されます。

    g150210_08.jpg

6. 映像と音声の合成&音ズレ対策

二通りあります。(1)「My MP4Box GUI」で音ズレ対策を施し、映像と音声を合成。――変換を完全に完了したい人向け。(2)「動画編集ソフト」のタイムラインに映像と音声を置き、音ズレを修正。――簡単に音ズレを修正し、編集作業へすぐに移行したい人向け。ただし、動画編集ソフトを持っており、尚且つ、MP4、M4AまたはMP3の入力に対応しているかが必要条件です。

6.1 変換を完全に完了したい

  1. DtsEditで出力した「~_conv」と付いた映像ファイル(.mp4)。出力した音声ファイル(.m4aまたは.mp3)を用意します。
  2. 「My MP4Box GUI.exe」を起動し、リストに映像ファイル、次に音声ファイルを順にドラッグ&ドロップします。

    g150210_09.jpg

  3. ここで今回のミソ!My MP4Box GUIウィンドウの下にある「Delay Selected Track」で映像と音声のズレをms(ミリ秒)単位で調節します。どんな数値を入れればいいかですが、基本的に映像と音声の再生時間の差です。例えば映像の方が2秒長ければ、音声ファイルを選択し2000ms(ミリ秒)遅延させます。

    g150210_10.jpg

    ※もし音ズレを正確に直したい場合はメディアの再生時間をミリ秒単位で知る必要があります。その場合は「MediaInfo」を使うと便利です。「表示」 > 「カスタム」から確認可能。
  4. 「Mux」をクリック。
  5. MP4ファイルが出力されればすべて完了です。

    g150210_11.jpg

6.2 簡単に音ズレを修正し、編集作業へすぐに移行したい

  1. DtsEditで出力した「~_conv」と付いた映像ファイル(.mp4)。出力した音声ファイル(.m4aまたは.mp3)を用意します。
  2. 動画編集ソフトを起動し、タイムラインに映像ファイル、音声ファイルをそれぞれ配置します。
  3. 映像の方が長い場合、映像の尻に音声の尻をスナップさせます。

    g150210_12.gif

  4. 編集作業へ。

まとめ

もう、長ぇよ!面倒くせぇよ!と思った方は素直にエンコーダー使って下さい。利点は画質劣化なし・VFRによる音ズレ防止・短時間でできる(かもしれない)。欠点はやることが多い。初期準備と手順を覚えさえすれば作業自体は早く終わります。

手順は簡単だが時間のかかるエンコーダーを選ぶか、手順は難しいが慣れれば短時間で終わるこの方法を選ぶか。あなた次第です。

関連商品

コメントを投稿する

1 コメント

  • 承認待ちコメント

    このコメントは管理者の承認待ちです

      

      2015-08-18 10:36

      編集

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