问题描述
我正在尝试使用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 (将#修改为@)