2016-08-17 12 views
0

を失うことなく、ffmpegのとビデオを操作し、私は次のコードでのffmpegで動画を回転しています:は品質

ffmpeg -i nd750_a0040.MOV -vf "transpose=dir=clock, transpose=dir=clock" out.mkv 

結果のファイルが入力よりも、ほぼ10倍小さいです。 私は、関連する質問とsuggstsは以下から入手したコーデックやビットレートをffmpegのために渡すアドレスthis question発見した:それぞれ2643h264

bitratev="$(ffmpeg -i "$1" -f null - |& grep video: | awk -F'[:|kB]' '{print $2}')" 
codecv="$(ffprobe -loglevel error -select_streams v:0 -show_entries stream=codec_name -of default=nk=1:nw=1 "$1")" 

しかし、これらのコマンドの両方が私に両方のファイルに同じ出力を与えるを。デフォルトで - は、私はffmpegの出力に同じこれらの値を保持していると仮定して修正するのですか?ビットレートがある

  • :だから私はいくつかの質問を持っている

    Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'nd750_a0040.MOV': 
        Metadata: 
        major_brand  : qt 
        minor_version : 537331968 
        compatible_brands: qt niko 
        creation_time : 2016-06-18 04:28:03 
        Duration: 00:15:40.74, start: 0.000000, bitrate: 11569 kb/s 
        Stream #0:0(eng): Video: h264 (High) (avc1/0x31637661), yuvj420p(pc, smpte170m/bt709/bt470m), 1920x1080, 10029 kb/s, 29.97 fps, 29.97 tbr, 30k tbn, 59.94 tbc (default) 
        Metadata: 
         creation_time : 2016-06-18 04:28:03 
        Stream #0:1(eng): Audio: pcm_s16le (sowt/0x74776F73), 48000 Hz, 2 channels, s16, 1536 kb/s (default) 
        Metadata: 
         creation_time : 2016-06-18 04:28:03 
    

    Input #0, matroska,webm, from 'out.mkv': 
        Metadata: 
        COMPATIBLE_BRANDS: qt niko 
        MAJOR_BRAND  : qt 
        MINOR_VERSION : 537331968 
        ENCODER   : Lavf56.40.101 
        Duration: 00:15:40.74, start: 0.000000, bitrate: 1445 kb/s 
        Stream #0:0(eng): Video: h264 (High), yuvj420p(pc), 1920x1080, SAR 1:1 DAR 16:9, 29.97 fps, 29.97 tbr, 1k tbn, 59.94 tbc (default) 
        Metadata: 
         CREATION_TIME : 2016-06-18 04:28:03 
         LANGUAGE  : eng 
         ENCODER   : Lavc56.60.100 libx264 
         DURATION  : 00:15:40.742000000 
        Stream #0:1(eng): Audio: vorbis, 48000 Hz, stereo, fltp (default) 
        Metadata: 
         CREATION_TIME : 2016-06-18 04:28:03 
         LANGUAGE  : eng 
         ENCODER   : Lavc56.60.100 libvorbis 
         DURATION  : 00:15:40.743000000 
    

    :私はffmpeg -iでファイルを検査した場合

    はしかし、私は、異なるビットレートの値を取得します各ビデオの正しいものは?

  • これらの2つのファイル間の情報損失はすべてビットレートでカバーされていますか(デフォルトではffmpegはファイルサイズを小さくする他の変更も行います)。
  • は、どのように私は確信して何も他の変化が、コンテナフォーマットと回転を作るのですか?

答えて

1

あなたは、このような転置フィルタとして、フィルタを使用してビデオを操作する場合は、ビデオ再エンコードされます。利用可能な場合

以下のコマンドでは、あなたのビデオストリームのビットレートを取得します。

ffprobe video.mov -select_streams v -show_entries stream=bit_rate -of compact=p=0:nk=1 

私の答えhereが値を生成しない場合は、参照してください。


現在のコマンドでもオーディオが再エンコードされます。あなたはそれをスキップして、ビットレートを指定することができます。

ffmpeg -i nd750_a0040.MOV -vf "transpose=clock,transpose=clock" -b:v 10M -c:a copy out.mkv 

x264のエンコードがスマートなので、必要に応じて、それが唯一のビットレート件までできるだけ多く使用されます。代わりに、ビットレートにこだわるの

は、あなたはを通して一定の品質を維持することを目的とCRFの方法を、使用することができます。 18はいい数です。下は優れているが、視覚的に、通常は目立ちません。もちろん

ffmpeg -i nd750_a0040.MOV -vf "transpose=clock,transpose=clock" -crf 18 -c:a copy out.mkv 

プレーヤーがサポートしている場合は、あなただけでは、すべての再エンコード回転タグを追加してすることはできません。

ffmpeg -i nd750_a0040.MOV -c copy -metadata:s:v:0 rotate=180 out.mkv