FFMPEGを使用してMP4ファイルサイズを9:16 YT短いサイズに調整する

FFMPEGを使用してMP4ファイルサイズを9:16 YT短いサイズに調整する

私は最近、Twitch APIを使用してTwitchビデオをスクラップし、YouTubeに投稿するボットを作成しました。例については、こちらのYouTubeチャンネルをご覧ください。https://www.youtube.com/channel/UCuhWw8LbPWdkybIF9olAszw

私の問題は、これらの一般的なTwitch動画を自動的にアップロードできるYouTubeクリップに変換する方法を探したいということです。顔カメラを含める必要はなく、ビデオ全体を9:16形式に圧縮するだけです。

私はFFMPEGを使ってみましたが、これを正しく実行しているかどうかはわかりません。

変換したいビデオの例は次のとおりです。https://www.youtube.com/watch?v=hZecXrvd6_g

(露骨な表現を申し訳ありません。これは私のボットチャンネルで初めて見た動画です。)

Tldr:mp4ファイルを9:16ビデオ形式に変換


編集:FFMPEGコマンドを実行しました。 ffmpeg -i video.mp4 -vf scale=1280:720 output.mp4

よろしくお願いします!これは数日間私を悩ませました。

答え1

scaleビデオのサイズが調整されます。縦横比を変更するには、以下を試してください。

ffmpeg -i video.mp4  -vf setdar=9/16 output.mp4

答え2

以下のようにクリップを9/16に切ります。

ffmpeg -i video.mp4 -vf crop=ih*(9/16):ih output.mp4

答え3

YouTubeショートの最大長は60秒です。このコマンドを使用すると、ビデオをセグメントに分割してサイズ変更できます。

ffmpeg -i video.mp4 -ss 00:00:00 -t 00:01:00 -vf "[in]scale=iw*min(1080/iw\,1920/ih):ih*min(1080/iw\,1920/ih),pad=1080:1920:(1080-iw)/2:(1920-ih)/2[out]" newVideo.mp4

このコマンドは最初の1分を切り捨て、他の部分を切り取るにはそれを計算して実行するための数学的ロジックを作成する必要があります。私はPHPで作業しました。以下を確認してください。 https://gist.github.com/drpshtiwan/45fd233695b168056af980c56b93579c


任意に選択できる

または、分割ビデオ(newVideo.mp4)を黒の背景、60秒の持続時間、および9/16の比率を持つ背景ビデオにオーバーレイする必要があります。これがffmpegコマンドの魔法です;) Full HD映像を使って中央に映像をオーバーレイしました。

ffmpeg -i background.mp4 -i newVideo.mp4 -filter_complex "[1:v]scale=1080:-1[v2];[0:v][v2]overlay=(main_w-overlay_w)/2:(main_h-overlay_h)/2" -map 1:a  -c:v libx264 -c:a  copy shortVide.mp4

答え4

これは私にとって効果的です。

ffmpeg -i sample.mp4 -vf "crop='min(iw,ih)*9/16:min(iw,ih):iw/2:ih/2'" cropped.mp4

関連情報