この質問は非常に基本的なものかもしれません
非可逆圧縮(WMV、MPEG)形式のフレームサイズ/レートを縮小して、同じ形式でより小さなサイズのより小さなビデオを取得する方法はありますか?
このためのオープンソースまたはプロプライエタリAPIはありますか?
この質問は非常に基本的なものかもしれません
非可逆圧縮(WMV、MPEG)形式のフレームサイズ/レートを縮小して、同じ形式でより小さなサイズのより小さなビデオを取得する方法はありますか?
このためのオープンソースまたはプロプライエタリAPIはありますか?
ffmpegはこの機能を提供します。あなたがする必要があるのは、次のような何かを実行することです
ffmpeg -i <inputfilename> -s 640x480 -b 512k -vcodec mpeg1video -acodec copy <outputfilename>
-b
ffmpegの新しいバージョンでは、次のように変更する必要があります-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などの最先端のコーデックを使用して、品質の低下を最小限に抑えながら、より優れた圧縮率を実現できます。
同じ画面サイズを維持したい場合は、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
H.264コーデックでは、固定ビットレートを選択する代わりに、 https://trac.ffmpeg.org/wiki/x264EncodingGuideで説明されているように別のプリセットを選択することもできます。KeyJのブログ(アーカイブ版)でビデオエンコーダーの比較も興味深い読み物でした。H.264とTheoraなどを比較しています。
以下は、私が試したさまざまなオプションの比較です。録画されたビデオは元々673Mのサイズで、RecordMyScreenを使用してiPadで撮影されました。所要時間は約20分で、解像度は1024x768です(ビデオの半分が空白になっているため、768x768にトリミングしました)。サイズを小さくするために、解像度を480x480に下げました。音声はありません。
結果は、ベースと同じ1024x768を使用します(そして、トリミング、スケーリング、およびフィルターを適用します)。
-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なので、一粒の塩で結果を取得し、独自のテストを実行します。
MacとWindowsの両方にHandbrakeを呼び出すアプリケーションがあります。これはコマンドラインのものではありませんが、ファイルをすばやく開くために、ビデオに関する優れた機能のほとんどを維持しながら、出力ファイルの形式と大まかな出力サイズを選択してください。 、それは最高の状態でffmpegの単なるグラフィカルビューです...それはそれらのダイハードテキストのコマンドライン入力をサポートします..https ://handbrake.fr/downloads.php
最近、これをやりたいと思ったので、元のメタデータ(ファイル変更のタイムスタンプを含む)をできるだけ多く保持しながら、FFmpegを使用してビデオをトランスコードするShrinkwrapというツールを作成しました。
Dockerコンテナとして実行できます。
docker run -v /path/to/your/videos:/vids bennetimo/shrinkwrap \
--input-extension mp4 --ffmpeg-opts crf=22,preset=fast /vids
どこ:
次に、拡張子に一致するすべてのビデオファイルを再帰的に検索し、それらすべてを-tc
サフィックス付きの同じ名前のファイルにトランスコードします。
その他の構成オプション、GoProのプリセットなどについては、readmeを参照してください。
これが誰かに役立つことを願っています!
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
可能なすべてのコーデックを一覧表示するために使用)