Python ImageIO WARNING:root:IMAGEIO FFMPEG_WRITER WARNING
我正在使用python处理某些图像,并且尝试将大小为961x509的一系列图像转换为MP4电影文件。 我已经做过了,并且可以正常工作,但是我遇到了一个令人讨厌的问题,警告是这样的:
WARNING:root:IMAGEIO FFMPEG_WRITER WARNING: input image is not
divisible by macro_block_size=16, resizing from (509L, 961L) to (512L,
976L) to ensure video compatibility with most codecs and players. To
prevent resizing, make your input image divisible by the
macro_block_size or set the macro_block_size to None (risking
incompatibility). You may also see a FFMPEG warning concerning
speedloss due to data not being aligned. [swscaler @ 04f8ac40]
Warning: data is not aligned! This can lead to a speedloss
警告出现的问题是我的图像分辨率,该分辨率应可被2整除,但我的分辨率不能。 是否有可能仅使此警告不再出现? 因为我无法更改图像的大小,并且同时不想调整所有图像的大小。
这是我的代码:
1
2
3
4
5
6
7
8 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(这是我唯一的方法):
1 2 3 4 5 6 7 8 | 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) |
我将收到此错误消息:
Error while opening encoder for output stream #0:0 - maybe incorrect
parameters such as bit_rate, rate, width or heightTraceback (most recent call last): File"", line 146, in
run() File"", line 136, in run
for i, _ in tqdm(enumerate(pool.imap_unordered(generateGIFsWithThreads,
videoList))): File"", line 953, in iter
for obj in iterable: File"", line 673, in next
raise value IOError: [Errno 32] Broken pipeFFMPEG COMMAND: ffmpeg -y -f rawvideo -vcodec rawvideo -s 961x509
-pix_fmt rgb24 -r 10.00 -i - -an -vcodec libx264 -pix_fmt yuv420p -crf 25 -v warning
D:\\work\\hero_forge\\build\\win32\\Documents\\GIFs\\CH3_M1_0.mp4FFMPEG STDERR OUTPUT:
只是为了跟进此步,以防万一来自Google的人正在寻找答案...最好添加额外的参数作为通配符。 您只需要以正确的格式将macro_block_size添加为karg。 例如:
1 2 3 | kargs = { 'fps': 3, 'quality': 10, 'macro_block_size': None, 'ffmpeg_params': ['-s','600x450'] } imageio.mimsave(gifOutputPath, images, 'FFMPEG', **kargs) |
在OP示例中,它将是:
1 2 3 4 5 6 7 8 9 | ready_images = [] for img in videos['Images']: image = imageio.imread(img.fileName) ready_images.append(image) video_name = videos['Images'][0].gifLocationPath +"//" + videos['Name'] kargs = { 'macro_block_size': None } imageio.mimwrite(video_name, ready_images, 'MP4', **kargs) |