web-dev-qa-db-ja.com

VHS mpeg2 / mp2からH264 / MP4VBRへの変換とファイルサイズの縮小のためのffmpeg設定

私の入力は次のとおりです。

Input #0, mpeg, from 'D:\Videos\2015.mpg':
Duration: 01:49:08.74, start: 0.220000, bitrate: 4940 kb/s
Stream #0:0[0x1e0]: Video: mpeg2video (Main), yuv420p(tv, bt470bg), 720x576 [SAR 16:15 DAR 4:3], max. 7500 kb/s, 25 fps, 25 tbr, 90k tbn, 50 tbc
Stream #0:1[0x1c0]: Audio: mp2, 48000 Hz, stereo, s16p, 224 kb/s

ファイルは2時間未満でほぼ4GBです。これは、数分間空白の画面が点在する典型的な(または典型的なものよりもわずかに悪い)VHS品質です(したがって、VBRが必要です)。

CPUは4コアのInteal3770Kです:MMX2 SSE2Fast SSSE3 SSE4.2 AVX

質問:この入力をMP4(H264/AAC)に適度に速く(実際の速度より数倍速く、つまりこのファイルの場合は30分以内で)変換し、ファイルサイズを少なくとも半分に減らすには、どのffmpegパラメーターを使用する必要がありますか?とにかくVHSのリッピングであり、静的なアーティファクトがたくさんあるので、品質はそれほど問題ではないと思います。どのコマンドラインスイッチ(Windows用)を使用する必要がありますか?

編集/更新/バックストーリー:

提案の後、少し詳しく説明します... ffmpegを直接使用してVHSビデオをMP4にキャプチャしたかったのですが、問題は、キャプチャデバイスドライバが次のように構成/インストールされていることです。

C:\Tools\video.tools\ffmpeg-20151123-git-12a419d-win64-static\bin>ffmpeg -loglevel verbose -list_options true -f dshow -i video="ezcap Video Grabber" -loglevel verbose
ffmpeg version N-76822-g12a419d Copyright (c) 2000-2015 the FFmpeg developers
  built with gcc 5.2.0 (GCC)
  configuration: --enable-gpl --enable-version3 --disable-w32threads --enable-avisynth --enable-bzlib --enable-fontconfig --enable-frei0r --enable-gnutls --enable-iconv --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libdcadec --enable-libfreetype --enable-libgme --enable-libgsm --enable-libilbc --enable-libmodplug --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-librtmp --enable-libschroedinger --enable-libsoxr --enable-libspeex --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvo-aacenc --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxavs --enable-libxvid --enable-libzimg --enable-lzma --enable-decklink --enable-zlib
  libavutil      55.  9.100 / 55.  9.100
  libavcodec     57. 16.100 / 57. 16.100
  libavformat    57. 19.100 / 57. 19.100
  libavdevice    57.  0.100 / 57.  0.100
  libavfilter     6. 15.100 /  6. 15.100
  libswscale      4.  0.100 /  4.  0.100
  libswresample   2.  0.101 /  2.  0.101
  libpostproc    54.  0.100 / 54.  0.100
[dshow @ 0000018baeadb920] DirectShow video device options (from video devices)
[dshow @ 0000018baeadb920]  Pin "Video YUV Out" (alternative pin name "2")
[dshow @ 0000018baeadb920]   pixel_format=uyvy422  min s=160x120 fps=25 max s=720x576 fps=25
[dshow @ 0000018baeadb920]   pixel_format=uyvy422  min s=160x120 fps=29.97 max s=720x486 fps=29.97
[dshow @ 0000018baeadb920]   pixel_format=uyvy422  min s=160x120 fps=29.97 max s=720x480 fps=29.97
[dshow @ 0000018baeadb920]  Pin "Audio PCM Out" (alternative pin name "3")
[dshow @ 0000018baeadb920] Crossbar Switching Information for ezcap Video Grabber:
[dshow @ 0000018baeadb920]   Crossbar Output pin 0: "Video Decoder" related output pin: 1 current input pin: 1 compatible input pins: 1 2
[dshow @ 0000018baeadb920]   Crossbar Output pin 1: "Audio Decoder" related output pin: 0 current input pin: 5 compatible input pins: 5
[dshow @ 0000018baeadb920]   Crossbar Input pin 0 - "Video Tuner" related input pin: 4
[dshow @ 0000018baeadb920]   Crossbar Input pin 1 - "Video Composite" related input pin: 5
[dshow @ 0000018baeadb920]   Crossbar Input pin 2 - "S-Video" related input pin: 5
[dshow @ 0000018baeadb920]   Crossbar Input pin 3 - "Video YRYBY" related input pin: 5
[dshow @ 0000018baeadb920]   Crossbar Input pin 4 - "Audio Tuner" related input pin: 0
[dshow @ 0000018baeadb920]   Crossbar Input pin 5 - "Audio Line" related input pin: 1

問題は、個別のDirectShowオーディオデバイスがなく、ビデオデバイス(ビデオピンとオーディオピンの両方がある)のみであるということです。 ffmpegは、このような設定でビデオとオーディオの両方をキャプチャしようとすると問題が発生するようです。

ffmpeg -loglevel verbose -f dshow -i video="ezcap Video Grabber":audio="ezcap Video Grabber" test5.mp4
ffmpeg version N-76822-g12a419d Copyright (c) 2000-2015 the FFmpeg developers
  built with gcc 5.2.0 (GCC)
  configuration: --enable-gpl --enable-version3 --disable-w32threads --enable-avisynth --enable-bzlib --enable-fontconfig --enable-frei0r --enable-gnutls --enable-iconv --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libdcadec --enable-libfreetype --enable-libgme --enable-libgsm --enable-libilbc --enable-libmodplug --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-librtmp --enable-libschroedinger --enable-libsoxr --enable-libspeex --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvo-aacenc --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxavs --enable-libxvid --enable-libzimg --enable-lzma --enable-decklink --enable-zlib
  libavutil      55.  9.100 / 55.  9.100
  libavcodec     57. 16.100 / 57. 16.100
  libavformat    57. 19.100 / 57. 19.100
  libavdevice    57.  0.100 / 57.  0.100
  libavfilter     6. 15.100 /  6. 15.100
  libswscale      4.  0.100 /  4.  0.100
  libswresample   2.  0.101 /  2.  0.101
  libpostproc    54.  0.100 / 54.  0.100
[dshow @ 0000017449b7c0e0] Could not find audio only device with name [ezcap Video Grabber] among source devices of type audio.
[dshow @ 0000017449b7c0e0] Searching for audio device within video devices for ezcap Video Grabber
[dshow @ 0000017449b7c0e0] Could not run graph (sometimes caused by a device already in use by other application)
video=ezcap Video Grabber:audio=ezcap Video Grabber: Input/output error

そのため、キャプチャデバイスに付属のソフトウェアであるArcSoft ShowBizを使用せざるを得ませんでした。これは機能しますが、セットアップとUIが複雑で、よりコンパクトなMP4ではなくMPEG2を生成するため、最適ではありません。

3
Fit Nerd

VHSソースからのエンコード

ffmpeg -i input -vf "yadif=1:1,hqdn3d=3,drawbox=y=ih-h:w=0:h=6:t=max,format=yuv420p" \
-crf 23 -preset medium -c:a aac -movflags +faststart \
-metadata title="Title" output.mp4

フィルタ

VHS入力からのエンコードは、いくつかのフィルターを使用して改善できます。

  • yadifはインターレース解除機能です。 documentation を参照し、さまざまなモードを試して、自分に最適なものを確認してください。または、 w3fdifインターレース解除フィルター を試すこともできますが、まだテストしていません。

  • hqdn3d はビデオデノイザーです。 VHSはノイズが多い可能性があるため、さまざまな値を試して、VHSなしでも試してください。ノイズ除去は圧縮率を向上させることができますが、ノイズ除去が多すぎると目立ったぼやけが追加されます。

  • drawbox この例では、一番下に6ピクセルのブラックボックスを作成して、 ヘッドスイッチングノイズ をマスクしています。高さを調整するか、単に削除する必要がある場合があります。これは、単にカバーするだけでアスペクト比が変更されないため、トリミングよりも優れています。それが問題にならない場合は、代わりに crop を使用してください。

  • format は、広く互換性のあるピクセル形式を使用するために追加されました。すでにyuv420pであるため、入力には関係ありません。

    別のオプション

  • -crfおよび-presetを使用すると、出力品質とエンコード速度を調整できます。 FFmpeg Wiki:H.264ビデオエンコーディングガイド を参照してください。

  • -movflags +faststartは、視聴者がプログレッシブダウンロードで視聴する場合に役立ちます。エンコード後、ファイルの先頭に情報を移動して、再生をすばやく開始できるようにします。

  • 古いffmpegを使用している場合は、-strict experimentalを追加する必要があります。ネイティブのFFmpegAACエンコーダーは実験的なものと見なされていましたが、現在はそうではありません。

3
llogan