web-dev-qa-db-ja.com

ビデオのサイズを小さくするには?

前書き

私はこのコマンドを使用して、ビデオをシェイクして安定させます。

ffmpeg2 -i SHAKY_INPUT_VIDEO.mp4 -vf \
  vidstabdetect=stepsize=6:shakiness=8:accuracy=9:result=transform_vectors.trf \
  -f null -

ffmpeg2 -i SHAKY_INPUT_VIDEO.mp4 -vf \
  vidstabtransform=input=transform_vectors.trf:zoom=1:smoothing=30,unsharp=5:5:0.8:3:3:0.4 \
-vcodec libx264 -preset slow -tune film -crf 18 -acodec copy SMOOTH_OUTPUT_VIDEO.mkv

(mp4出力でこのエラーが発生するため、mkvを使用します:ストリーム#1でコーデックpcm_s16leのタグが見つかりませんでした。コーデックは現在コンテナーでサポートされていません)

ソース: https://www.epifocal.net/blog/video-stabilization-with-ffmpeg

私はffmpeg2を使用しています( スクリプトを使用してビデオを揺さぶる を参照)

ビデオのサイズを小さくするには?

2本の線より上では、ビデオサイズが安定します。サイズを小さくするにはどうすればよいですか?

私には2つの側面があります。

  • オーディオ
  • 解決。次の出力を理解すると、解像度は1920x1080になります。 720pで十分だと思います。

私のビデオメタデータ:

===> ffprobe2 20170217_114248.MOV 
ffprobe version git-2017-02-19-3206ea4 Copyright (c) 2007-2017 the FFmpeg developers
  built with gcc 5.4.0 (Ubuntu 5.4.0-6ubuntu1~16.04.4) 20160609
  configuration: --extra-libs=-ldl --prefix=/opt/ffmpeg --enable-avresample --disable-debug --enable-nonfree --enable-gpl --enable-version3 --enable-libopencore-amrnb --enable-libopencore-amrwb --disable-decoder=amrnb --disable-decoder=amrwb --enable-libpulse --enable-libfreetype --enable-gnutls --disable-ffserver --enable-libx264 --enable-libx265 --enable-libfdk-aac --enable-libvorbis --enable-libmp3lame --enable-libopus --enable-libvpx --enable-libspeex --enable-libass --enable-avisynth --enable-libsoxr --enable-libxvid --enable-libvidstab --enable-libtheora --enable-libwavpack --enable-libopenjpeg --enable-libgsm --enable-nvenc
  libavutil      55. 47.100 / 55. 47.100
  libavcodec     57. 80.101 / 57. 80.101
  libavformat    57. 66.102 / 57. 66.102
  libavdevice    57.  2.100 / 57.  2.100
  libavfilter     6. 73.100 /  6. 73.100
  libavresample   3.  2.  0 /  3.  2.  0
  libswscale      4.  3.101 /  4.  3.101
  libswresample   2.  4.100 /  2.  4.100
  libpostproc    54.  2.100 / 54.  2.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '20170217_114248-Felix-Jáchymovská.MOV':
  Metadata:
    major_brand     : qt  
    minor_version   : 0
    compatible_brands: qt  
    creation_time   : 2017-02-17T10:39:32.000000Z
  Duration: 00:03:15.00, start: 0.000000, bitrate: 23478 kb/s
    Stream #0:0(eng): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 1920x1080, 22060 kb/s, 60 fps, 60 tbr, 60k tbn, 120k tbc (default)
    Metadata:
      creation_time   : 2017-02-17T10:39:32.000000Z
      handler_name    : iCatch Alias Data Handler
      encoder         : iCatch AVCC
    Stream #0:1(eng): Audio: pcm_s16le (sowt / 0x74776F73), 44100 Hz, 2 channels, s16, 1411 kb/s (default)
    Metadata:
      creation_time   : 2017-02-17T10:39:32.000000Z
      handler_name    : iCat Alias Data Handler
1
guettli

出力ファイルのサイズを小さくするには、いくつかの方法があります。

オーディオをエンコードする

あなたが述べたように、高額でロスレスの非圧縮PCM形式をストリームコピーする代わりに、オーディオをエンコードできます。

Libfdk_aacの使用

ffmpegは、AACエンコーダーlibfdk_aacをサポートしています。これは、現在ffmpegでサポートされている最高のAACエンコーダーです。これを使用するには、-c:a copy-c:a libfdk_aac -vbr 5に置き換えます。

ネイティブFFmpeg AACエンコーダーの使用

または、ネイティブのFFmpeg AACエンコーダーを使用することもできます。これを使用するには、-c:a copy-c:a aac -b:a 128kに置き換えます。これはlibfdk_aacほど良くありませんが、より多くのビットを与えることで許容できます。

これで、Matroska(MKV)よりもMP4出力コンテナー形式を使用できます。

これらのエンコーダーの両方の詳細については、 FFmpeg Wiki:AAC を参照してください。

より高い-crf値を使用してください

Libx264を使用してH.264ビデオをエンコードする場合、-crfオプションは品質を制御するレート制御の1つの方法です。 〜18程度の値では、多かれ少なかれ視覚的にロスのない出力が得られますが、コンテンツによっては、ファイルが多少大きくなることもあります。 +6の値を大きくすると、通常、出力ファイルのサイズが50%小さくなります。 一般的な推奨事項は、許容できる品質を提供する最高の-crf値を使用することです。

ストレージメディアの制約などにより、特定の出力ファイルサイズを対象とする場合は、 2パスモードを使用してエンコード する必要があります。ただし、特定のターゲットファイルサイズが最も重要でない限り、-crfを使用する方が簡単かつ高速です(私は何年も2パスを使用していません)。

詳細は FFmpeg Wiki:H.264 を参照してください。

別のエンコーダーを使用する

Libx265を使用してH.265/HEVCに適切にエンコードすると、同じ認識品質でファイルサイズが小さくなる可能性があります。トレードオフはエンコーディングの速度低下であり、プレーヤー/デバイスのサポートはH.264ほど普及していません。

私はこのエンコーダをあまり使用していなかったため、どの-crf値を提案すればよいかわかりませんが、試してみる価値はあります。 x264で低速のプリセットのいずれかを既に使用している場合は、-preset veryslowを使用してx264よりも実際のパフォーマンスを向上させる必要がある場合があります。

FFmpeg Wiki:H.265 を参照してください。

スケーリング

2番目のコマンドで最後にスケーリングするのではなく、両方のコマンドで最初にスケーリングする方が高速になる場合があります。私はvidstab *に慣れていないか、それがボトルネックかどうかを実験する必要があります。

-vf scale=-2:720,vidstab*...
1
llogan