75

この質問は非常に基本的なものかもしれません

非可逆圧縮(WMV、MPEG)形式のフレームサイズ/レートを縮小して、同じ形式でより小さなサイズのより小さなビデオを取得する方法はありますか?

このためのオープンソースまたはプロプライエタリAPIはありますか?

4

6 に答える 6

93

ffmpegはこの機能を提供します。あなたがする必要があるのは、次のような何かを実行することです

ffmpeg -i <inputfilename> -s 640x480 -b 512k -vcodec mpeg1video -acodec copy <outputfilename>

-bffmpegの新しいバージョンでは、次のように変更する必要があります-b:v

ffmpeg -i <inputfilename> -s 640x480 -b:v 512k -vcodec mpeg1video -acodec copy <outputfilename>

入力ビデオファイルを、MPEG 1ビデオコーデックを使用し、元のオーディオストリームをコピーするだけで、サイズが640 x 480、ビットレートが512キロビット/秒のビデオに変換します。もちろん、必要な値をプラグインし、サイズとビットレートを試して、探している品質とサイズのトレードオフを実現できます。ドキュメントに記載されている他のオプションもたくさんあります

ffmpeg -formatsまたはを実行ffmpeg -codecsして、使用可能なすべてのフォーマットとコーデックのリストを表示します。最終出力に特定のコーデックをターゲットにする必要がない場合は、H.264などの最先端のコーデックを使用して、品質の低下を最小限に抑えながら、より優れた圧縮率を実現できます。

于 2010-12-20T16:02:30.400 に答える
40

同じ画面サイズを維持したい場合は、crfファクターの使用を検討できます:https ://trac.ffmpeg.org/wiki/Encode/H.264

これが私のために働くコマンドです:(Mac-strict -2ではaacオーディオコーデックを使用できるようにするために追加する必要があります。

ffmpeg -i input.mp4 -c:v libx264 -crf 24 -b:v 1M -c:a aac output.mp4
于 2014-08-27T12:39:20.883 に答える
30

H.264コーデックでは、固定ビットレートを選択する代わりに、 https://trac.ffmpeg.org/wiki/x264EncodingGuideで説明されているように別のプリセットを選択することもできます。KeyJのブログアーカイブ版)でビデオエンコーダーの比較も興味深い読み物でした。H.264とTheoraなどを比較しています。

以下は、私が試したさまざまなオプションの比較です。録画されたビデオは元々673Mのサイズで、RecordMyScreenを使用してiPadで撮影されまし。所要時間は約20分で、解像度は1024x768です(ビデオの半分が空白になっているため、768x768にトリミングしました)。サイズを小さくするために、解像度を480x480に下げました。音声はありません。

結果は、ベースと同じ1024x768を使用します(そして、トリミング、スケーリング、およびフィルターを適用します)。

  • 特別なオプションなし:95M(エンコード時間:1分19秒)。
  • 追加するだけ-b 512kで、サイズは77Mに減少しました(エンコード時間:1m17s)。
  • のみ-preset veryslow(およびなし-b)で、70Mになりました(エンコード時間:6分14秒)
  • との両方を使用する-b 512k-preset veryslow、サイズは77Mになります(ちょうどよりも100K小さくなります-b 512k)。
  • を使用-preset veryslow -crf 28すると、5分47秒かかった39Mのファイルが得られます(視覚的な品質の違いはありません)。

N = 1なので、一粒の塩で結果を取得し、独自のテストを実行します。

于 2013-12-01T23:02:52.570 に答える
4

MacとWindowsの両方にHandbrakeを呼び出すアプリケーションがあります。これはコマンドラインのものではありませんが、ファイルをすばやく開くために、ビデオに関する優れた機能のほとんどを維持しながら、出力ファイルの形式と大まかな出力サイズを選択してください。 、それは最高の状態でffmpegの単なるグラフィカルビューです...それはそれらのダイハードテキストのコマンドライン入力をサポートします..https ://handbrake.fr/downloads.php

于 2018-06-29T14:25:44.917 に答える
4

最近、これをやりたいと思ったので、元のメタデータ(ファイル変更のタイムスタンプを含む)をできるだけ多く保持しながら、FFmpegを使用してビデオをトランスコードするShrinkwrapというツールを作成しました。

Dockerコンテナとして実行できます。

docker run -v /path/to/your/videos:/vids bennetimo/shrinkwrap \
--input-extension mp4 --ffmpeg-opts crf=22,preset=fast /vids

どこ:

  • / path / to / your / videos /は、変換したいビデオがある場所です
  • --input-extensionは、処理する動画の種類です。ここでは.mp4です。
  • --ffmpeg-optsは、トランスコードをカスタマイズするために使用する任意のFFmpegオプションです。

次に、拡張子に一致するすべてのビデオファイルを再帰的に検索し、それらすべてを-tcサフィックス付きの同じ名前のファイルにトランスコードします。

その他の構成オプション、GoProのプリセットなどについては、readmeを参照してください。

これが誰かに役立つことを願っています!

于 2018-11-08T22:23:06.060 に答える
3
ffmpeg -i <input.mp4> -b:v 2048k -s 1000x600 -fs 2048k -vcodec mpeg4 -acodec copy <output.mp4>
  • -i入力ファイル

  • -b:vキロバイト単位の出力ビデオのビデオビットレート(試してみる必要があります)

  • -出力ビデオの寸法

  • -fs FILESIZE(キロバイト単位)の出力ビデオ

  • -vcodec videocodec(使用ffmpeg -codecs可能なすべてのコーデックを一覧表示するために使用)

  • -出力ビデオ用のacodecオーディオコーデック(オーディオストリームのみをコピーし、調整しないでください)
于 2018-05-27T07:37:58.007 に答える