画像+オーディオ= mp4:ビデオを小さくするには?


12

私はffmpegを使用してJPGをMP4に追加し、MP4を作成しています。

ビデオを作成するための画像が1つしかないので、ビデオのサイズを小さくする方法はあるのでしょうか。

コマンド:

$ ffmpeg -loop 1 -i image.jpg -i audio.mp3 -shortest -c:a copy output.mp4

結果:

  • image.jpg = 26.7K(画像がはっきりしない)
  • audio.mp3 = 64.6M(54分)
  • output.mp4 = 80.6M(ビデオの結果はそれほど明確ではない、音楽はまだ良い)

これはMP4に適したサイズですか?


使用するffmpegコマンドを投稿していただけませんか?
くだらない

(一部の)テキストの画像を作成せず、コピーして貼り付けてください。画像は大きく、検索もコピーもできません。
llogan 2017年

おっと、はい。コマンドウィンドウを閉じたので、テキストを貼り付けることができません:|
SIDU 2017年

mp3のみを再生し、画面を1つのjpgに固定してサイズを保存するようにmp4をメタ化することは可能ですか?:
SIDU

出力のターゲットプレーヤー、デバイス、またはサイトは何ですか?
llogan 2017年

回答:


18

YouTubeへのアップロード用

H.264:最小ファイル

この方法では、libx264を使用してH.264ビデオをエンコードします。以下のストリームコピー方式よりも低速ですが、出力されるファイルサイズが小さくなる可能性があります。

ffmpeg -loop 1 -framerate 1 -i image.jpg -i music.mp3 \
-c:v libx264 -preset veryslow -crf 0 -c:a copy -shortest output.mkv

ストリームのコピー:最速のプロセス

このメソッドは、画像をMKVコンテナーにストリームコピー(エンコードなし)するだけです。これは非常に高速ですが、サイズが重要な場合、上記の方法よりも小さいファイルが生成される可能性があります。

ffmpeg -loop 1 -framerate 1 -i image.jpg -i music.mp3 -c copy -shortest output.mkv
  • YouTubeはほぼすべてを受け入れるため、これらのコマンドはいくつかのトリックを使用してエンコードを高速化したり、ファイルサイズを小さくしたり、高品質を維持したりします。あなたのプレーヤーはおそらくそれを気に入らないでしょうが、YouTubeはそうするでしょう。

  • これらの例では、デフォルトの25 fpsよりも高速に処理される非常に低いフレームレートが使用されています。


あらゆるプレーヤーに対応する最も幅広い互換性

ffmpeg -loop 1 -i image.png -i music.mp3 -vf "scale='min(1280,iw)':-2,format=yuv420p" \
-c:v libx264 -preset medium -profile:v main -c:a aac -shortest -movflags +faststart output.mp4
  • これは、非常に古いデバイスを除いてほとんど何でも再生するはずです(その場合はに変更-profile:v mainしてください-profile:v baseline)。

  • オーディオ入力がすでにAACの場合は、に変更-c:a aac-c:a copyて、不要な再エンコードを回避します。

  • 上記のYouTubeコマンドよりもエンコード時間が長くなり、ファイルサイズが大きくなります。

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


YouTubeで許可されている最低フレーム数/秒で1280 * 720のa.jpg + a.mp3 = a.mp4を作成するコード行を提供できますか?また、ジョブが1つしかないので、「-loop 1」を削除する必要がありますか?前もって感謝します。
SIDU、2017年

@SIDU既存のコマンドは(MP4の代わりにMKVを出力する以外に)要求したことを実行しますが、YouTubeでサポートされている最低のフレームレートがわかりません。実験する必要があるだけです。YouTubeにアップロードするだけのときにMP4が必要なのはなぜですか?
llogan 2017年

私はそれを試してみましたが、それは言う:Unrecognized option 'preset'. Error splitting the argument list: Option not found
NineCattoRules

@NineCattoRules詳細情報なしで言うのは難しい。pastebinサイトを使用して、完全なffmpegコマンドとコマンドからの完全なコンソール出力を表示し、コメントでリンクを提供します。
llogan

おかげで、mc3manリポジトリを使用してFFMPEGを再インストールしました。
NineCattoRules 2017

3

あなたが提供した情報だけで、これは私が考えることができるものです。

少しずつ行きましょう:

ビデオに追加される画像は1つだけなので。ビデオサイズを小さくする方法があるかどうか疑問に思います(例:28ではなくビットレート/秒= 1)。

静止画なので変更の必要はありません。ただじっとしていて。

何を言っているのかというと、ビットレートではなくフレーム/秒(fps)です。そして、あなたはその概念に正解です。1つの静止画像を1 fpsだけに配置しても問題ありません。

それはmp4に適したサイズですか?画像サイズは重要ですか?

この場合、1枚の静止画像しか扱っていないため、画像サイズはそれほど重要ではありません。高品質のビデオであれば、別の問題です。

jpgのサイズを1080 * 720に変更し、ffmpegで追加設定を行って720pとして出力する必要があります(ffmpeg設定とは:)

あなたが言っている解像度は1280x720です。

-loop 1ここのオプションには要点がありません。プロセスが遅くなるだけです。-shortestファイルに複数の入力ストリームがあるので使用しましたか?いいえの場合、それを使用する理由はありません。あなたが使用-acodec copyしていたので、それを再エンコードしたくないと私は仮定する必要があります。

再エンコードせず、ビットレートに触れない720p 1fpsの出力の場合:

ffmpeg -framerate 1 -i input.mp3 -i cover.jpg -c:a copy -s 1280x720 output.mp4

複数の入力ストリームがあり、ffmpegに最短のストリームでエンコードを終了させたい場合に注意してください。

ffmpeg -framerate 1 -i input.mp3 -i cover.jpg -c:a copy -s 1280x720 -shortest output.mp4

ここで、ビットレートを変更する必要がある場合(例として1024kとしましょう)。

ffmpeg -framerate 1 -i input.mp3 -i cover.jpg -c:a copy -b:v 1024k -bufsize 1024k -s 1280x720 output.mp4

参照:出力ビットレートを制限する

-c:a copy =入力オーディオストリームをコピーして、再エンコードしないようにします。

-b:v =(正確ではない)一定であるように指定されたビットレート。

-bufsize =平均ビットレートを計算する間隔です。-b:vでの指定に従って、最も品質の低い最低の画像だがより正確なビットレートを意味します。

-s =ビデオ出力の実際のサイズ。

-framerate =出力で使用する入力フレームレート。

ある時点でまだ小さいサイズのビデオが必要な場合は、それを実現するために品質を犠牲にする必要があることに注意してください。そしてそれを行う他の方法には、不可逆圧縮による再エンコードが含まれます。

あなたの言うこと、あなたが提供する情報、そしてあなたがしようとしていることから、あなたの目標はアルバムアートをmp3に埋め込むことだと思います。それがあなたの目標であるならば、これはあなたの要件によりよく適合するでしょう:

ffmpeg -i input.mp3 -i cover.jpg -map_metadata 0 -map 0 -map 1 output.mp3

-map_metadata = infileからファイルを出力するためのffmpegメタデータ指定子。この場合(ゼロ)はグローバルメタデータです。

-map 0 =入力ストリーム1(オーディオ)。

-map 1 =入力ストリーム2(画像)。

ここにあなたの要求に合うものが何もない場合は、詳細をお知らせください。


-framerate入力オプションとして使用し、出力を削除することを検討してください-r。それ以外の場合は、デフォルトの入力フレームレートである25が使用され、その後ffmpegフレームがドロップされ-r 1ます。入力フレームレートを宣言するだけの場合、出力は同じフレームレートを使用します。
llogan

ありがとう。それを知りませんでした。提案された変更を反映するように編集されました。
Fenrir 2017年

チュートリアルをありがとう。私の元のffmpegコード行は、Google検索からのコピーアンドペーストでした。
SIDU 2017年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.