mp4動画の音声をavi 動画の音声(mp3)で入れ替えて24ミリ秒遅らすいい方法は無いのか? | KNのブログ

KNのブログ

テニス、生活の知恵、B級グルメ、時事問題、精神世界、その他いろいろ書いています。
      ※使用PCは、ブログ開設時から 「Windows XP」 です。(マシンは2台目→3台目)

mp4動画の音声をavi 動画の音声(mp3)で入れ替えて24ミリ秒遅らすいい方法は無いのか?



今回のとりあえずの制約条件。
   ・音声を入れ替えたあとの形式は、とりあえずmp4形式とする(h264+mp3)
   ・音声は、できるだけ無劣化にしたい。
   ・音声の波形を比較したら、遅れは24ミリ秒のように思われた。
   ・avi 動画の音声は、映像に対して26ミリ秒遅れの設定? になってた。



1.まずやってみたのは、Yambで音声のディレイができないか?
     →ダメだった。
       「k基本的に・・・」さんによると Windows 7 でもダメだったようだ。


2.My MP4Box GUI.exe 0.5.5.4 を使ったら出来ないか?
     →これもダメだった。 メインパネルの左下の部分に入力したのだが。
       指定の仕方がよく分からなかったので、間違っていたかも。
       .NET Framework 2.0 の入っている環境でテストした。


3.Wave Editor で24ミリ秒の無音部分を追加しようとしたが、さらに28ミリ秒
  くらい遅れてしまった!

KNのブログ
      ・上段) メモリ上で、貼り付け(ペースト)直後の状態。 末尾が
            14:000 となっていて、24ミリ秒増えてる。
       下段) mp3形式で書き出し後のデータを、別のウィンドウのWave Editor
            で読み込んで表示させたもの。 なぜか先頭に28ミリ秒くらい
            無音らしきものが挿入されているし、末尾が14:028となっている。


  最新版の3.3.1.0を使っても同じ現象でダメ。 Wave Editor では、mp3で
  ミリ秒単位レベルのこまかい編集はダメのようだ。

  注意点: 元データの8倍くらいのワークエリアをCドライブに使うので、
        編集したら編集後も合わせて16倍くらいのエリアを食うよ。


4.最新に近い Audacity 2.0.0 で24ミリ秒の無音部分を追加しようとしたら、
  うまく行った! 但し、読み込みと書き出しにメチャメチャ時間がかかる!



ここで、 Audacityは無劣化ではなく、展開したデータを再エンコードしている
ことを知り、無劣化のものがないか探してみた。



5.無劣化編集が出来る、最新のmpTrim 2.13 で出来ないか?
     →フリー版の制約の、「7分が限度」に引っかかり、ダメだった。
       こいつは、先頭と最後に無音部分を追加できるみたいなんだけどね。


6.同じく無劣化編集ができるらしい、mp3DirectCut 2.19 でできないか?
     →操作方法が非常に分かりにくい。 使いにくい。
       フレーム単位(26~27ミリ秒?)にしか編集できないみたいだ。
       無音の機能は無いが、無音部分のコピー&ペーストで対応した。
       26ミリ秒の挿入が出来た! (24ミリ秒は不可のようだ)


参考までに、Audacity 2.0.0 とmp3DirectCut 2.19 の24ミリ秒/26ミリ秒追加
の処理結果を、オリジナルと比較する形で見てもらおう。
Audacity 2.0.0 もかなり肉薄していて、 mp3DirectCut 2.19は全く無劣化では
ないような感じだった。

KNのブログ


並び順は、次の通り:
               mp3DirectCut 2.19
   Audacity 2.0.0   オリジナルの音声



----
7/27 追記。
最新のWave Editor 3.3.1.0 でも、今回のavi 動画の音声(mp3)を読み込んでから
「何もしないで」そのままmp3形式に書き出したら、
26ミリ秒先頭に無音部分らしきものが挿入され、全体が26ミリ秒長くなった!
これがWave Editor の仕様なんだろうね。 
音声の波形は、Audacityに少し負けてるような感じがした。

このmp3データの場合に、1フレームが26ミリ秒(or27ミリ秒)となる根拠:
  レイヤーII・レイヤーIII(バージョン1)の場合、
     1フレームあたり1152サンプル数が仕様。
     もし、サンプリング周波数が44.1 KHzならば、
     1152/44100=0.0261224489  これから、26ミリ秒(or+1)と分かる。
     もし、サンプリング周波数が48.0 KHzならば、
     1152/48000=0.024  これから、24ミリ秒と分かる。

  レイヤーIII(バージョン2、2.5)の場合、
     1フレームあたり576サンプル数が仕様。

ちょっとは謎が解けて、嬉しい。 (笑)