私はしばしば、reddit、instagram、gfycatなどにアップロードするためにビデオ形式に変換する必要がある.png形式(最小圧縮)のすべてのフレームを準備してデジタルアニメーションを作成します。
私はさまざまな圧縮標準についてはよくわかりません。しかし、一般的に私に適した方法を見つけて、これらのサイトで許可するファイルを作成しました。
# step 1
mencoder mf://frame*.png -mf w=$WIDTH:h=$HEIGHT:fps=$FPS:type=png \
-ovc lavc -lavcopts vcodec=msmpeg4v2:vbitrate=16000:keyint=15:mbd=2:trell \
-oac copy -o step1.avi
# step 2
mencoder step1.avi -o step2.mp4 -of lavf -lavfopts format=mp4 -ovc x264 -sws 9 \
-x264encopts nocabac:level_idc=30:bframes=0:bitrate=2048:threads=auto:turbo=1:global_header:threads=auto:subq=5:frameref=6:partitions=all:trellis=1:chroma_me:me=umh
しかし、それが何をしているのかわからないので、*次のことはできません。
指示として
圧縮率を調整します。
実際、私は通常、あまり圧縮されていない結果を好みます。
PNGフレームからどのルートに移動できますか?Webフレンドリーなビデオファイル(私の考えではH.264/MPEG-4 MP4)これで圧縮を調整できますか?
*例:サンプルフレームワークです。
(注:正直に言うと、VLCツールを使用してスナップショットを撮るよりもVLCで見るとはるかに悪くなります。これは問題を理解しやすく、結果を比較するのが困難です)。
でもステップ1$WIDTH
元の画像と一致するように指定しましたが、$HEIGHT
どちらも明らかに変更され、アスペクト比は維持されませんでした。最終画像もよりぼやけており、これはサイズ変更の結果である可能性があります。
編集する:以下のmplayerウィンドウの実際のシステムスクリーンショットを参照してください(VLCと同じ)。タイルグラウトは、PNGソースやVLC「内部」スクリーンショット機能と比較して非常にぼやけています。
詳細:
答え1
ffmpeg
コメントで指摘したように、単純な「質量」パラメータまたは「スケジュール比率」(読み取り)をffmpeg
使用して、優れた1段階ソリューションが提供されます。crf
この投稿crf)を説明してください。
バラよりこの投稿ffmpegを使用してPNGからH.264に変換する簡単な手順です。
簡単に言うと:
# Assuming the frames are called frame0000.png, frame0001.png ...
#
# set $FPS, $WIDTH, $HEIGHT, $FIRSTFRAME,
# $CRF (see above) to the desired value, then run:
ffmpeg -r $FPS -f image2 -s ${WIDTH}x$HEIGHT -start_number $FIRSTFRAME \
-i frame%04d.png -vcodec libx264 -crf $CRF -pix_fmt yuv420p output.mp4
$CRF
デフォルト値は 23 です。 23より小さい値はより良い品質とより大きなファイルを提供し、23より大きい値は圧縮を増加させます。