古い mjpeg avi を h264 にトランスコードする

古い mjpeg avi を h264 にトランスコードする

私は、Olympus u5000 カメラで録画したプライベート jpeg と avi (mjpeg 形式) のコレクションを持っています。mjpeg は xbmc での再生に適した形式ではないため、これを h264 形式にトランスコードしたいと思います。私が得た最も遠いものは、次の行です。

avconv -i P3040001.AVI -strict experimental -c:v libx264 -b:v 8000k -c:a ac3 -b:a 192k output.mp4

この行は以下を変換します:

avconv version 9.11-6:9.11-2ubuntu2, Copyright (c) 2000-2013 the Libav developers
  built on Mar 24 2014 06:12:33 with gcc 4.8 (Ubuntu 4.8.2-17ubuntu1)
Guessed Channel Layout for  Input Stream #0.1 : mono
Input #0, avi, from 'P3040001.AVI':
  Metadata:
    creation_time   : 2013-03-04 12:21:39
    encoder         : OLYMPUS u5000
  Duration: 00:00:01.99, start: 0.000000, bitrate: 12920 kb/s
    Stream #0.0: Video: mjpeg, yuvj422p, 640x480, 30 fps, 30 tbr, 30 tbn
    Stream #0.1: Audio: pcm_u8, 8000 Hz, mono, u8, 64 kb/s

avconv version 9.11-6:9.11-2ubuntu2, Copyright (c) 2000-2013 the Libav developers
  built on Mar 24 2014 06:12:33 with gcc 4.8 (Ubuntu 4.8.2-17ubuntu1)
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'output.mp4':
  Metadata:
    major_brand     : isom
    minor_version   : 512
    compatible_brands: isomiso2avc1mp41
    creation_time   : 2013-03-04 12:21:39
    encoder         : Lavf54.20.3
  Duration: 00:00:02.09, start: 0.000000, bitrate: 35 kb/s
    Stream #0.0(und): Video: h264 (High), yuv420p, 640x480, 17 kb/s, 30 fps, 30 tbr, 30 tbn, 60 tbc
    Metadata:
      creation_time   : 2013-03-04 12:21:39
    Stream #0.1(und): Audio: aac, 8000 Hz, mono, fltp, 9 kb/s
    Metadata:
      creation_time   : 2013-03-04 12:21:39

ご覧のとおり、オーディオに問題があります。output.mp4 にはオーディオがまったくありません。xubuntu 14.04 サーバーにたくさんのファイルがあるので、avconv を使用したいと思います。

何が間違っているのでしょうか?

よろしくお願いいたします。

答え1

コマンドでは、オーディオ トラックに対して何を行うべきかを指定していませんでした。

これを試して:

avconv -i P3040001.AVI -strict experimental -c:v libx264 -b:v 8000k -c:a ac3 -b:a 192k output.mp4.

avinfoビットレートは自由に調整してください。元のビットレートを把握し、同様のビットレートにトランスコードするために使用できます。

Avidemux のような GUI プログラムを使用することもできます。

答え2

これを試して:

 avconv -i input.avi -c:v libx264 -b 800k output.mp4

これにより、libx264 コーデックを使用してビデオが 800k のレートで再エンコードされ、エンコーダーがオーディオの処理方法を決めて、mp4 コンテナーとの互換性を確保します。ビット レートは、品質の好みに合わせて調整してください。すべてを考慮すると、大きなムービーには高いビット レートを許可する必要があります (たとえば、1280x960 のムービーでは、同様の品質を維持するために、640x480 のムービーの約 4 倍のビット レートが必要になります)。

答え3

おそらく最良の選択肢は、プリセットx264 エンコードの場合は、固定ビットレートではなく、Constant Rate Factor (CRF) を指定します。ソースからのサウンドは最初から最適ではありませんが、比較的低いビットレートの VBR mp3 に変換すると、サウンドが良好になる可能性があります。次の操作を試してください。

avconv -i P3040001.AVI \
   -c:v libx264 -preset slow -crf 22 -tune film \
   -c:a libmp3lame -qscale:a 7 -ar 44100 \
   output.mp4

これにより、適切なビデオ品質とおそらくより良いサウンドが得られる可能性があります。-qスケール:a 7より良い音質を得るための設定で、数値が低いほどビットレートターゲットが高くなります。

avconvがx264またはlibmp3lameで動作しない場合は、適切なものを追加する必要があります。libavcodec-extra* Ubuntu のバージョンに適したパッケージ。

関連情報