使用 ffmpeg python 为图像设置相等的持续时间
set equal duration to images with ffmpeg python
嗨,我想用图片制作视频。可以说我有一个 60 秒的音频和 6 张图片,我希望我的视频以相同的持续时间显示图像,即每张图片 10 秒
但我不知道该怎么做
这是我的代码
import ffmpeg
input_audio = ffmpeg.input('./SARS/SARS.mp3')
input_still = ffmpeg.input('./SARS/*.jpg',t=20, pattern_type='glob', framerate=24)
(
ffmpeg
.concat(input_still, input_audio, v=1, a=1)
.filter('scale', size='hd1080', force_original_aspect_ratio='increase')
.output('./SARS/output.mp4')
.run(overwrite_output=True)
)
任何帮助都适用
我相信您可以使用 ffmpeg-python
实现此目的,但您可以尝试以下方法之一:
普通 CLI
ffmpeg \
-y \
-i './SARS/SARS.mp3' \
-pattern_type glob -framerate 0.1 -i './SARS/*.jpg' \
-vf scale=size=hd1080:force_original_aspect_ratio=increase \
'./SARS/output.mp4'
您可以 运行 在 Python 中使用 subprocess.run(['ffmpeg','-y',...])
ffmpegio
套餐
对于 one-time 纯粹的转码需求,ffmpegio
实际上是一种矫枉过正,通过 subprocess
直接调用 ffmpeg
已经绰绰有余而且速度更快,但是如果你这样做这种操作经常可以试试
pip install ffmpegio-core
from ffmpegio.ffmpegprocess import run
run({'inputs': [
('./SARS/SARS.mp3', None)
('./SARS/*.jpg', {'pattern_type':'glob','framerate': 0.1})],
'outputs': [
('./SARS/output.mp4', {'vf':'scale=size=hd1080:force_original_aspect_ratio=increase'})],
overwrite=True)
本质上,它类似于 subprocess
对应物,但采用参数字典。
嗨,我想用图片制作视频。可以说我有一个 60 秒的音频和 6 张图片,我希望我的视频以相同的持续时间显示图像,即每张图片 10 秒 但我不知道该怎么做 这是我的代码
import ffmpeg
input_audio = ffmpeg.input('./SARS/SARS.mp3')
input_still = ffmpeg.input('./SARS/*.jpg',t=20, pattern_type='glob', framerate=24)
(
ffmpeg
.concat(input_still, input_audio, v=1, a=1)
.filter('scale', size='hd1080', force_original_aspect_ratio='increase')
.output('./SARS/output.mp4')
.run(overwrite_output=True)
)
任何帮助都适用
我相信您可以使用 ffmpeg-python
实现此目的,但您可以尝试以下方法之一:
普通 CLI
ffmpeg \
-y \
-i './SARS/SARS.mp3' \
-pattern_type glob -framerate 0.1 -i './SARS/*.jpg' \
-vf scale=size=hd1080:force_original_aspect_ratio=increase \
'./SARS/output.mp4'
您可以 运行 在 Python 中使用 subprocess.run(['ffmpeg','-y',...])
ffmpegio
套餐
对于 one-time 纯粹的转码需求,ffmpegio
实际上是一种矫枉过正,通过 subprocess
直接调用 ffmpeg
已经绰绰有余而且速度更快,但是如果你这样做这种操作经常可以试试
pip install ffmpegio-core
from ffmpegio.ffmpegprocess import run
run({'inputs': [
('./SARS/SARS.mp3', None)
('./SARS/*.jpg', {'pattern_type':'glob','framerate': 0.1})],
'outputs': [
('./SARS/output.mp4', {'vf':'scale=size=hd1080:force_original_aspect_ratio=increase'})],
overwrite=True)
本质上,它类似于 subprocess
对应物,但采用参数字典。