「2倍再生」とか「0.5倍速再生」の例は web で見つかるんですけど 「長さ不定の動画を強制的に2分で収まる動画として再エンコードする」 みたいな例は見つからない感じがする(?)
…ので、それを実現するには以下で出来るハズ
ffmpeg -i input.mp4 -vf "setpts=${NEW_DURATION}*PTS/${ORG_DURATION}" -o new_movie.mp4 # Audio の話が抜けてる点に留意
NEW_DURATION
/ ORG_DURATION
の単位は何でも良いです。"秒" であれば両方とも "秒" で指定すれば良いですし、”ミリ秒” でも "分" でも "frame" でも良いです。 小数点も使えますゾ!
少し悩ましいのは ORG_DURATION
を元の動画ファイルからどう取得するかだと思います。 例えば NEW_DURATION
を「2分」とした場合、元動画の長さを分単位でどう得るか? 120秒 とした場合、秒単位で元動画の長さをどう得るか? 480frame としたらならどう得るか? …まぁ ffmpeg -i して出力される元動画情報から grep なり awk なり python や PowerShell で script 書くなりで頑張るしか無いような気はします……?