我正在使用 python 处理一些图像,我正在尝试将一系列大小为 961x509 的图像转换为 MP4 电影文件。我已经这样做了,它正在工作,但是我有一个非常烦人的问题,警告说如下:
WARNING:root:IMAGEIO FFMPEG_WRITER WARNING: 输入图像不能被 macro_block_size=16 整除,从 (509L, 961L) 调整到 (512L, 976L) 以确保视频与大多数编解码器和播放器的兼容性。为防止调整大小,请使您的输入图像可被 macro_block_size 整除或将 macro_block_size 设置为 None(存在不兼容的风险)。由于数据未对齐,您可能还会看到有关速度损失的 FFMPEG 警告。[swscaler @ 04f8ac40] 警告:数据未对齐!这可能会导致速度损失
出现警告的问题是我的图像分辨率,该分辨率应该能被 2 整除,但我的不是。有没有可能让这个警告不再出现?因为我无法更改图像的大小,同时我不想调整所有图像的大小。
这是我的代码:
ready_images = [] for img in videos['Images']: image = imageio.imread(img.fileName) ready_images.append(image) videoName = videos['Images'][0].gifLocationPath + "//" + videos['Name'] imageio.mimwrite(videoName, ready_images, 'MP4')
有人在这里对我有解决方案吗?
更新:
如果我要以这种方式将macro_block_size 设置为 None (这是我知道的唯一方法):
ready_images = []
for img in videos['Images']:
image = imageio.imread(img.fileName)
ready_images.append(image)
video_name = videos['Images'][0].gifLocationPath + "//" + videos['Name']
imageio.mimwrite(video_name, ready_images, 'MP4', macro_block_size = None)
我将收到此错误消息:
为输出流 #0:0 打开编码器时出错 - 可能是不正确的参数,例如 bit_rate、rate、width 或 height
Traceback(最近一次调用最后一次):文件“”,第 146 行,在 run() 文件“”,第 136 行,在 run for i,_ in tqdm(enumerate(pool.imap_unordered(generateGIFsWithThreads, videoList))):文件“ ",第 953 行,在iter for obj in iterable: 文件 "",第 673 行,在下一个提升值 IOError: [Errno 32] Broken pipe
FFMPEG 命令: ffmpeg -y -f rawvideo -vcodec rawvideo -s 961x509 -pix_fmt rgb24 -r 10.00 -i - -an -vcodec libx264 -pix_fmt yuv420p -crf 25 -v 警告 D:\work\hero_forge\build\win32\Documents \GIFs\CH3_M1_0.mp4
FFMPEG标准错误输出: