os.system()由于某种原因返回False

时间:2017-02-22 19:58:00

标签: python python-3.x ffmpeg

我有一个相当大的程序(记忆方式),它是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命令,所以有些东西限制了我的程序。

0 个答案:

没有答案