25

後で見つけた別のコミュニティVideo Productionに同じ質問を投稿しましたが、この質問にはこちらの方が適しているようです。

参照: https://video.stackexchange.com/questions/12156/how-can-i-convert-mts-file-avchd-to-mp4-by-ffmpeg-without-re-encoding-h264-v/


1. 試したこと

AVCHD カメラで記録した .MTS (AVCHD 形式) ファイルがいくつかあります。その仕様は次のとおりです。

$ ffprobe 140612_Canon-00000.MTS 
ffprobe version 2.2.1 Copyright (c) 2007-2014 the FFmpeg developers
(snip)
Input #0, mpegts, from '140612_Canon-00000.MTS':
  Duration: 00:48:58.40, start: 0.800300, bitrate: 5563 kb/s
  Program 1 
    Stream #0:0[0x1011]: Video: h264 (High) (HDMV / 0x564D4448), 
      yuv420p, 1440x1080 [SAR 4:3 DAR 16:9], 
      29.97 fps, 29.97 tbr, 90k tbn, 59.94 tbc
    Stream #0:1[0x1100]: Audio: ac3 (AC-3 / 0x332D4341), 48000 Hz, 
      stereo, fltp, 256 kb/s

フレームレート/タイムベースの部分に注意してください: 29.97 fps、29.97 tbr、90k tbn、59.94 tbc

ここで、このファイルを .mp4 ファイルに変換したいと思いますが、 H264 ビデオ ストリーム を再エンコードせずにオーディオ ストリームを AAC にトランスコードします。そこで、次のコマンドを試しました。

ffmpeg -i 140612_Canon-00000.MTS -t 60 -y -vcodec copy -acodec libfaac -ab 128k 140612_Canon-00001.MTS.mp4

2. 結果

出力ファイルの仕様は次のとおりです。

$ ffprobe 140612_Canon-00000.MTS.mp4
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '140612_Canon-00000.MTS.mp4':
  Metadata:
    major_brand     : isom
    minor_version   : 512
    compatible_brands: isomiso2avc1mp41
    encoder         : Lavf55.33.100

  Duration: 00:01:00.04, start: 0.021333, bitrate: 4590 kb/s

    Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 
        1440x1080 [SAR 4:3 DAR 16:9], 4448 kb/s, 
        59.94 fps, 59.94 tbr, 90k tbn, 59.94 tbc (default)
    Metadata:
      handler_name    : VideoHandler

    Stream #0:1(und): Audio: aac (mp4a / 0x6134706D), 
        48000 Hz, stereo, fltp, 128 kb/s (default)
    Metadata:
      handler_name    : SoundHandler

フレームレート/タイムベースの部分を見てください: 59.94 fps, 59.94 tbr, 90k tbn, 59.94 tbc . ffmpeg はビデオ ストリームをコピーしただけですが、フレームレートとタイムベースは値の 2 倍に変更されています

そのため、QuickTime Player または VLC Player で出力ファイルを開いて再生すると、オーディオは問題ありませんが、ビデオ ストリームは正しく再生されません。フレームを前後に揺らしながら再生を繰り返します。

3. 質問

  1. H264 ビデオ ストリームを正しく再エンコードせずに、ffmpeg で .MTS ファイル (AVCHD) を .mp4に変換するにはどうすればよいですか?
  2. とそのスイッチを使用してコンテナーを変換するときに、元のフレームレート/タイムベース値 (fps/tbr/tbn/tbc)を保持するにはどうすればよいですか?ffmpeg-vcodec copy
  3. ビデオ ストリームを再エンコードせずに、ffmpeg のコマンド ライン オプションでフレームレート/タイムベース値 (fps/tbr/tbn/tbc)を設定するにはどうすればよいですか。

何か案は?

4

2 に答える 2

33

ここにあります:

ffmpeg -i input.m2ts -c:v copy -c:a aac -strict experimental -b:a 128k output.mp4

これは、再エンコードせずにビデオ ストリームのみをコピーし、オーディオ トラックを AAC VBR ステレオにエンコードします。最新の FFmpeg バージョンが必要です。

于 2014-08-10T12:43:07.143 に答える