YouTube用の音声と静止画像を使用したビデオの作成


23

私は次のコマンドを実行しています:

ffmpeg -i audio.mp3 -ar 44100 -f image2 -i logo.jpg -r 15 -b 1800 -s 640x480 foo.mov

録音された音声と画像を含むビデオを正常に出力します。

これをYouTubeにアップロードしようとすると、.mov、.avi、.flv、.mp4の形式に関係なく、処理に失敗します

Youtubeが受け入れる形式を生成する上記の設定に欠けている設定はありますか?ffmpegのドキュメントを調べてみましたが、頭を抱えています。

30秒のmp3で2秒のビデオを入れて、実験を行いました。youtubeにアップロードしたときのビデオの長さはわずか2秒でした。そのため、YouTubeはビデオトラックの長さだけを見る可能性があります。また、写真はフレームの長さなどにすぎないため、おそらくそれが台無しになります。

回答:


13

うまくいったのは次のとおりです。

ffmpeg -i audio.mp3 -f image2 -loop 1 -i logo.jpg 
-r 15 -s 640x480 \
-c:v libx264 -crf 18 -tune stillimage -preset medium \
-shortest foo.mov

具体的にはloop、画像をフレームとして複製するオプション。またshortest、ファイルが拡大および拡大しないようにするオプションも必要になります(このようにして、ファイルを最短ストリームの長さ(ここではオーディオファイル)に切り捨てます)。

このrオプションは、フレームレートを変更しcrf 18、品質を設定します(ビデオの品質を下げるには、ここで高い値を使用します)。詳細については、こちらをご覧ください:FFmpeg:究極のビデオおよびオーディオ操作ツール


2
私にはうまくいきません。1フレームのムービーを取得します。
パベルVlasov

今は仕事をしています。
molnarg 14年

4

別のフォーラムからの私のために働くコードの一部:

ffmpeg -loop 1 -r ntsc -i image.jpg -i song.mp3 -c:a copy -c:v libx264 -preset fast -threads 0 -shortest output.mkv 

2

Pavelのコードを取得しましたが、これも私にとっては有効であり、不要なオプションをトリミングして短縮しました。

ffmpeg -loop 1 -shortest -i <audio file> -i <image file> <output video file>

これは、入力として任意の画像および音声ファイルを処理し、出力としてビデオファイルを生成する一般的な形式です。

ただし、ビデオストリームは無期限に繰り返される単一の画像で構成されるため、で低フレームレート(1秒間に表示される画像の数)を設定でき-rます。すべての出力コンテナが低フレームレートを許可するわけではないことに注意してください。行うのはaviなので、次のようにします。

ffmpeg -loop 1 -shortest -r 0.1 -i <audio file> -i <image file> output.avi

これにより、デフォルトの25ではなく、0.1(つまり、10秒ごとに1つの画像)のフレームレートでビデオファイルが作成されます。これは、ファイルサイズには影響しますが、ビデオ品質には影響しません。最終的に、で音声のビットレートを設定して、より良い音声品質を得ることができます-ab。これは、YouTubeでこの種のビデオを作成するために実際に使用するコマンドです。

ffmpeg -loop 1 -shortest -r 0.1 -i <audio file> -i <image file> -ab 128k output.avi

ありがとう。実行しましffmpeg -loop 1 -shortest -r 0.1 -i audio.mp3 -i image.jpg output.aviたが、「オプションループが見つかりません」と表示されました。何か案は?
パニック大佐

@colまだ興味がある場合:音声の前ではなく、画像入力の前にループオプションが必要です。
slhck

これは私のために働いたものです:ffmpeg -i <audio file> -loop 1 -i <image file> -shortest <output video file>
カロリンジャー

2

avconvを使用:

avconv -i input.mp3 -loop 1 -f image2 -i logo.png -r 30 -s 640x480 -ab 128k -ar 44100 -ac 1 -ss 00:00:00.000 -t 01:02:03.123 foo.ogv

SuperUserへようこそ。ご回答いただきありがとうございます。あなたが提案していることと、なぜ役立つかについての詳細。
ブラッドパットン

1
ffmpegのでは推奨されませんので、応答がある
ZiTAL

2
いいえ、ffmpegプロジェクトは進行中です。廃止されたメッセージにつながる論争がありました。stackoverflow.com/questions/9477115/を
ブラッドパットン

2
-shortest時間を手動で宣言する代わりに出力オプションを使用します(また、可能であればffmpeg代わりに 使用しますavconv)。
llogan

2
メイドbashスクリプト誰もが興味を持っている場合
Dallaylaen

0

多くの実験を行った結果、これが機能するようになりました:https : //www.youtube.com/watch?v=qjlDT819Q3s

  1. https://trac.ffmpeg.org/wiki/Create%20a%20video%20slideshow%20from%20imagesに従って画像をビデオに変換します

    ffmpeg -framerate 1/20 -i png/img-%03d.png -c:v libx264 -vf "fps=25,format=yuv420p" png.mp4

    ここでは、いくつかの画像を使用し、20秒ごとに変更します。

  2. https://trac.ffmpeg.org/wiki/Concatenateに従って、上記のビデオのコピーを十分に連結して、オーディオの持続時間を広げます。他のソリューションffmpeg -i wav.wav -i png.mp4 youtube.mp4は、正しいことをすることを期待するなど、YouTubeによって拒否されました(また、VLCなどのプレーヤーは混乱しており、適切にシークできません)。私の推測では、コピー内で時間位置を調整する必要ffmpegがありますが、連結しない限り、調整しません。

    ffmpeg -f concat -i pngs.txt -c copy pngs.mp4

    (ファイルpngs.txtが必要な数のコピーを含むように手作りされている場合:コピー=オーディオの長さ/ビデオの長さ)

  3. https://www.virag.si/2015/06/encoding-videos-for-youtube-with-ffmpeg/に従って、オーディオを2で取得したビデオとミックスします。

    ffmpeg -i pngs.mp4 -i wav.wav -shortest -codec:v libx264 -crf 21 -bf 2 -flags +cgop -pix_fmt yuv420p -codec:a aac -strict -2 -b:a 384k -r:a 48000 -movflags faststart youtube.mp4

これで、ファイルyoutube.mp4はYTで受け入れられます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.