我有一个相当大的程序(记忆方式),它是Tensorflow的神经网络。我正在使用体积数据。我的最终目标是使用ffmpeg
通过卷创建视频 - 其中每个帧都是z切片。我在使用os
python库之前已成功完成此操作。代码如下所示:
videoFile = self.slicesPath + "/0.mp4"
sliceFiles = self.slicesPath + "/%04d.jpg"
os.system("ffmpeg -y -framerate 10 -start_number 0 -i " + sliceFiles + " -vcodec mpeg4 " + videoFile)
当我使用pdb
逐步执行此操作时,我尝试执行os.system()
命令,我得到-1
,好像有一些错误。
(Pdb) os.system("ffmpeg -y -framerate 10 -start_number 0 -i " + sliceFiles + " -vcodec mpeg4 " + videoFile)
-1
然后我打印了两个变量......
(Pdb) sliceFiles
'/home/volcart/UnsupervisedResults/HercFragment/VAE/0/1/%04d.jpg'
(Pdb) videoFile
'/home/volcart/UnsupervisedResults/HercFragment/VAE/0/1/0.mp4'
在新的终端选项卡中打开一个python控制台,复制并粘贴完全相同的代码行(上面的字符串而不是变量名)和BAM!它神奇地起作用。
这是为什么?它在一个单独的python控制台中工作,它在bash中工作,但它在我的程序中不起作用(当它完全相同的时候)。我唯一的猜测是与内存有关,但我确信我不是内存不足......我的机器有64GB而且python没有限制。
修改
我只是尝试了subprocess
而得到了这个:
(Pdb) subprocess.call("ffmpeg -y -framerate 10 -start_number 0 -i " + sliceFiles + " -vcodec mpeg4 " + videoFile, shell=True)
*** OSError: [Errno 12] Cannot allocate memory
但它怎么也无法分配内存? Python没有内存限制吗?我有64GB的内存,我可以在程序外执行ffmpeg
命令,所以有些东西限制了我的程序。