如何解决使用imageio.mimwrite将numpy数组保存到io.BytesIO对象时,出现“ OSError:[Errno 32]管道损坏”
我正在尝试使用imageio.mimwrite将一个numpy数组(帧数组)另存为视频。
这样的操作效果很好-
imageio.mimwrite('./temp4.mp4',frames,fps=fps,format='.mp4')
但是,当我尝试这样的事情时-
fo = io.BytesIO()
imageio.mimwrite(fo,format='.mp4')
OR
writer = imageio.get_writer(fo,format='.mp4')
for im in frames:
writer.append_data(imageio.imread(im))
writer.close()
我收到以下错误-
---------------------------------------------------------------------------
BrokenPipeError Traceback (most recent call last)
c:\program files (x86)\python38-32\lib\site-packages\imageio_ffmpeg\_io.py in write_frames(path,size,pix_fmt_in,pix_fmt_out,fps,quality,bitrate,codec,macro_block_size,ffmpeg_log_level,ffmpeg_timeout,input_params,output_params)
478 try:
--> 479 p.stdin.write(bb)
480 except Exception as err:
BrokenPipeError: [Errno 32] Broken pipe
During handling of the above exception,another exception occurred:
OSError Traceback (most recent call last)
<ipython-input-72-c6f1d6c45f5e> in <module>
1 for im in ret3:
----> 2 writer.append_data(im)
3 writer.close()
c:\program files (x86)\python38-32\lib\site-packages\imageio\core\format.py in append_data(self,im,meta)
500 im = asarray(im)
501 # Call
--> 502 return self._append_data(im,total_meta)
503
504 def set_meta_data(self,meta):
c:\program files (x86)\python38-32\lib\site-packages\imageio\plugins\ffmpeg.py in _append_data(self,meta)
572
573 # Write. Yes,we can send the data in as a numpy array
--> 574 self._write_gen.send(im)
575
576 def set_meta_data(self,meta):
c:\program files (x86)\python38-32\lib\site-packages\imageio_ffmpeg\_io.py in write_frames(path,output_params)
484 "OUTPUT:\n".format(err,cmd_str)
485 )
--> 486 raise IOError(msg)
487
488 nframes += 1
OSError: [Errno 32] Broken pipe
FFMPEG COMMAND:
c:\program files (x86)\python38-32\lib\site-packages\imageio_ffmpeg\binaries\ffmpeg-win32-v4.2.2.exe -y -f rawvideo -vcodec rawvideo -s 256x256 -pix_fmt rgb24 -r 29.97 -i - -an -vcodec libx264 -pix_fmt yuv420p -crf 25 -v warning C:\Users\pramu\AppData\Local\Temp\imageio_fh1fqkgc
FFMPEG STDERR OUTPUT:
使用anaconda ffmpeg和非anaconda ffmpeg会出现相同的错误。
是否可以解决此错误?
还有没有更好的方法将帧列表转换为.mp4或对其进行序列化以通过API发送?
谢谢!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。