gpt4 book ai didi

python - 如何修复 CalledProcessError : in ffmpeg

转载 作者:行者123 更新时间:2023-12-04 22:48:03 25 4
gpt4 key购买 nike

我希望有人可以帮助解决这个问题。我正在尝试以以下动画的形式从 Keras 中保存损失图。

img

但我一直面临以下错误,最终我无法保存动画:

MovieWriter stderr:
[h264_v4l2m2m @ 0x55a67176f430] Could not find a valid device
[h264_v4l2m2m @ 0x55a67176f430] can't configure encoder
Error initializing output stream 0:0 -- Error while opening encoder for output stream #0:0 - maybe incorrect parameters such as bit_rate, rate, width or height

---------------------------------------------------------------------------
BrokenPipeError Traceback (most recent call last)
~/anaconda3/envs/CR7/lib/python3.6/site-packages/matplotlib/animation.py in saving(self, fig, outfile, dpi, *args, **kwargs)
229 try:
--> 230 yield self
231 finally:

~/anaconda3/envs/CR7/lib/python3.6/site-packages/matplotlib/animation.py in save(self, filename, writer, fps, dpi, codec, bitrate, extra_args, metadata, extra_anim, savefig_kwargs, progress_callback)
1155 frame_number += 1
-> 1156 writer.grab_frame(**savefig_kwargs)
1157

~/anaconda3/envs/CR7/lib/python3.6/site-packages/matplotlib/animation.py in grab_frame(self, **savefig_kwargs)
383 self.fig.savefig(self._frame_sink(), format=self.frame_format,
--> 384 dpi=self.dpi, **savefig_kwargs)
385

~/anaconda3/envs/CR7/lib/python3.6/site-packages/matplotlib/figure.py in savefig(self, fname, transparent, **kwargs)
2179
-> 2180 self.canvas.print_figure(fname, **kwargs)
2181

~/anaconda3/envs/CR7/lib/python3.6/site-packages/matplotlib/backend_bases.py in print_figure(self, filename, dpi, facecolor, edgecolor, orientation, format, bbox_inches, **kwargs)
2081 bbox_inches_restore=_bbox_inches_restore,
-> 2082 **kwargs)
2083 finally:

~/anaconda3/envs/CR7/lib/python3.6/site-packages/matplotlib/backends/backend_agg.py in print_raw(self, filename_or_obj, *args, **kwargs)
445 cbook.open_file_cm(filename_or_obj, "wb") as fh:
--> 446 fh.write(renderer._renderer.buffer_rgba())
447

BrokenPipeError: [Errno 32] Broken pipe

During handling of the above exception, another exception occurred:

CalledProcessError Traceback (most recent call last)
<ipython-input-23-13442cbf583d> in <module>
17 print(f'{model_type.upper()} Train Time: {Timer} sec')
18
---> 19 create_loss_animation(model_type, hist.history['loss'], hist.history['val_loss'], epoch)
20
21 evaluate(model, trainX, trainY, testX, testY, scores_train, scores_test)

<ipython-input-22-199228cd4989> in create_loss_animation(model_type, loss_hist, val_loss_hist, epoch)
34
35 ani = matplotlib.animation.FuncAnimation(fig, animate, fargs=(l1, l2, loss, val_loss, title), repeat=True, interval=1000, repeat_delay=1000)
---> 36 ani.save(f'loss_animation_{model_type}_oneDataset.mp4', writer=writer)

~/anaconda3/envs/CR7/lib/python3.6/site-packages/matplotlib/animation.py in save(self, filename, writer, fps, dpi, codec, bitrate, extra_args, metadata, extra_anim, savefig_kwargs, progress_callback)
1154 progress_callback(frame_number, total_frames)
1155 frame_number += 1
-> 1156 writer.grab_frame(**savefig_kwargs)
1157
1158 # Reconnect signal for first draw if necessary

~/anaconda3/envs/CR7/lib/python3.6/contextlib.py in __exit__(self, type, value, traceback)
97 value = type()
98 try:
---> 99 self.gen.throw(type, value, traceback)
100 except StopIteration as exc:
101 # Suppress StopIteration *unless* it's the same exception that

~/anaconda3/envs/CR7/lib/python3.6/site-packages/matplotlib/animation.py in saving(self, fig, outfile, dpi, *args, **kwargs)
230 yield self
231 finally:
--> 232 self.finish()
233
234

~/anaconda3/envs/CR7/lib/python3.6/site-packages/matplotlib/animation.py in finish(self)
365 def finish(self):
366 '''Finish any processing for writing the movie.'''
--> 367 self.cleanup()
368
369 def grab_frame(self, **savefig_kwargs):

~/anaconda3/envs/CR7/lib/python3.6/site-packages/matplotlib/animation.py in cleanup(self)
409 if self._proc.returncode:
410 raise subprocess.CalledProcessError(
--> 411 self._proc.returncode, self._proc.args, out, err)
412
413 @classmethod

CalledProcessError: Command '['/usr/bin/ffmpeg', '-f', 'rawvideo', '-vcodec', 'rawvideo', '-s', '720x720', '-pix_fmt',
'rgba', '-r', '5', '-loglevel', 'error', '-i', 'pipe:', '-vcodec', 'h264', '-pix_fmt', 'yuv420p', '-b', '800k', '-y',
'loss_animation_CNN_oneDataset.mp4']' returned non-zero exit status 1.

我试图忽略这个 answer 的错误但似乎并非如此。我也检查了类似的情况,但它获取静态 git 二进制文件的答案也不是我的 cas,因为不是特别将 PNG 转换为 MP4!

我的代码如下:

plt.rcParams['animation.ffmpeg_path'] = '/usr/bin/ffmpeg'

def animate(i, data1, data2, line1, line2):
temp1 = data1.iloc[:int(i+1)]
temp2 = data2.iloc[:int(i+1)]

line1.set_data(temp1.index, temp1.value)
line2.set_data(temp2.index, temp2.value)

return (line1, line2)


def create_loss_animation(model_type, data1, data2):
fig = plt.figure()
plt.title(f'Loss on Train & Test', fontsize=25)
plt.xlabel('Epoch', fontsize=20)
plt.ylabel('Loss MSE for Sx-Sy & Sxy', fontsize=20)
plt.xlim(min(data1.index.min(), data2.index.min()), max(data1.index.max(), data2.index.max()))
plt.ylim(min(data1.value.min(), data2.value.min()), max(data1.value.max(), data2.value.max()))

l1, = plt.plot([], [], 'o-', label='Train Loss', color='b', markevery=[-1])
l2, = plt.plot([], [], 'o-', label='Test Loss', color='r', markevery=[-1])
plt.legend(loc='center right', fontsize='xx-large')

Writer = animation.writers['ffmpeg']
writer = Writer(fps=5, bitrate=1800)

ani = matplotlib.animation.FuncAnimation(fig, animate, fargs=(data1, data2, l1, l2), repeat=True, interval=1000, repeat_delay=1000)
ani.save(f'{model_type}.mp4', writer=writer)

# create datasets
x = np.linspace(0,150,50)
y1 = 41*np.exp(-x/20)
y2 = 35*np.exp(-x/50)

my_data_number_1 = pd.DataFrame({'x':x, 'value':y1}).set_index('x')
my_data_number_2 = pd.DataFrame({'x':x, 'value':y2}).set_index('x')

create_loss_animation('test', my_data_number_1, my_data_number_2)

最佳答案

我遇到了同样的错误,不知何故我锁定了视频,我猜 ffmpeg 无法覆盖它。确保未选中此锁定。
enter image description here

关于python - 如何修复 CalledProcessError : in ffmpeg,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57422195/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com