Subprocess.call()没有在我的django视图上运行,为什么视图代码在manage.py shell中运行完美

时间:2013-09-28 15:12:51

标签: python django subprocess

我正在尝试使用服务器上的ffmpeg进行视频裁剪,一旦用户上传的视频文件被保存,我就会在其上运行ffmpeg命令来裁剪视频并进一步替换使用mv命令上传带有裁剪文件的文件。虽然这段代码在manage.py控制台中逐步运行时效果很好,但上传的文件在测试时不会被裁剪。

new_video.save()
url=new_video.video_file.url
real_path = "/home/chanceapp/webapps/chanceapp/chanceapp"+url
fake_crop_path = "/home/chanceapp/webapps/chanceapp/chanceapp/fake1"+url
rotate_crop = "ffmpeg -i %s -vf "%(real_path)+r'"transpose=2 , crop=480:480:0:0" '+\
    "-vcodec libx264 -strict -2 -crf 18 %s"%(fake_crop_path)
move_cropped = "mv"+" %s"%(fake_crop_path)+" %s"%(real_path)
commands = [rotate_crop,move_cropped]
for command in commands:
    subprocess.call(command,shell=True ) 

三江源。

1 个答案:

答案 0 :(得分:0)

您应该更多地调试它:

from subprocess import Popen, PIPE

for command in commands:
    result = Popen(command, shell=True, stdout=PIPE).stdout.read()
    if len(result) > 0:
        raise Exception(result)

是否引发任何异常?