문제

그래서 Python 및 FFMPEG를 통해 영화에서 프레임을 덤프하는 것이

subprocess.check_output([ffmpeg, "-i", self.moviefile, "-ss 00:01:00.000 -t 00:00:05 -vf scale=" + str(resolution) + ":-1 -r", str(framerate), "-qscale:v 6", self.processpath + "/" + self.filetitles + "-output%03d.jpg"])
.

및 현재 오류가 발생합니다 :

'CalledProcessError: Command ... returned non-zero exit status 1'
.

Command Python이 실행중인 것이라고합니다 :

'['/var/lib/openshift/id/app-root/data/programs/ffmpeg/ffmpeg', '-i', u'/var/lib/openshift/id/app-root/data/moviefiles/moviename/moviename.mp4', '-ss 00:01:00.000 -t 00:00:05 -vf scale=320:-1 -r', '10', '-qscale:v 6', '/var/lib/openshift/id/app-root/data/process/moviename/moviename-output%03d.jpg']'
.

그러나 ssh를 통해 다음 명령을 실행할 때 ...

'/var/lib/openshift/id/app-root/data/programs/ffmpeg/ffmpeg' -i '/var/lib/openshift/id/app-root/data/moviefiles/moviename/moviename.mp4' -ss 00:01:00.000 -t 00:00:05 -vf scale=320:-1 -r 10 -qscale:v 6 '/var/lib/openshift/id/app-root/data/process/moviename/moviename-output%03d.jpg'
.

그것은 잘 작동합니다.내가 도대체 뭘 잘못하고있는 겁니까?나는 서브 프로세스 필드 파싱 작업 방식을 오해하고 있다고 생각합니다 ...

도움이 되었습니까?

해결책

서브 프로세스 모듈은 쉘 모드에서 실행하지 않는 한 해당 매개 변수의 공백 문자를 거의 허용하지 않습니다.이것을 시도하십시오 :

subprocess.check_output(["ffmpeg", "-i", self.moviefile, "-ss", "00:01:00.000", "-t", "00:00:05", "-vf", "scale=" + str(resolution) + ":-1", "-r", str(framerate), "-qscale:v", "6", self.processpath + "/" + self.filetitles + "-output%03d.jpg"])
.

다음은 파이썬 문서 도구를 참조하십시오. / P>

"특히 쉘에서 공백으로 구분 된 옵션 (예 : eggs.txt와 같은)은 별도의 목록 요소로 이동하는 반면 인수 또는 백 슬래시가 탈출 해야하는 인수쉘 (예 : 위의 공백이 포함 된 파일 이름이나 echo 명령)은 단일 목록 요소입니다. "

다른 팁

check_call에 전달하는 인수 배열이 올바르게 포맷되지 않았습니다.ffmpeg에 대한 모든 인수는 인수 목록에 단일 요소 여야합니다 (예 :

)
... "-ss 00:01:00.000 -t 00:00:05 -vf ...
.

이어야합니다
... "-ss", "00:01:00.000", "-t", "00:00:05", "-vf", ...
.

완전한 결과 args 배열은 다음과 같아야합니다 :

['ffmpeg', '-i', '/var/lib/openshift/id/app-root/data/moviefiles/moviename/moviename.mp4', '-ss', '00:01:00.000', '-t', '00:00:05', '-vf', 'scale=320:-1', '-r', '10', '-qscale:v', '6', '/var/lib/openshift/id/app-root/data/process/moviename/moviename-output%03d.jpg']
.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top