使用 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 Shorts 的最大长度为 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

该命令将剪切第一分钟,为了剪切其他部分,您应该编写一些数学逻辑来计算并执行它。我已经为 PHP 做到了,请检查以下内容: https://gist.github.com/drpshtiwan/45fd233695b168056af980c56b93579c


选修的

或者您应该将分割视频 (newVideo.mp4) 叠加到背景视频中,该视频应具有黑色背景、持续时间 60 秒和 9/16 比例。这是 ffmpeg 命令的神奇之处;)我使用了全高清视频,并将视频覆盖在中心。

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

相关内容