Python 스크립트 내에서 FFMPEG 명령을 실행하는 데 문제가 있습니다. 터미널에서 다음 명령을 실행하면 연결된 웹캠(Logitech C310)에서 비디오 및 오디오를 스트리밍하고 오류 없이 "out.avi" 파일로 출력할 수 있습니다.
ffmpeg -f alsa -i default -itsoffset 00:00:00 -f video4linux2 -s 1280x720 -r 25 -i /dev/video0 out.avi
아래 Python 스크립트에서 동일한 명령을 실행하면
def call_command(command):
subprocess.Popen(command.split(' '))
call_command("ffmpeg -f alsa -i default -itsoffset 00:00:00 -f video4linux2 -s 1280x720 -r 25 -i /dev/video0 out.avi")
나에게 다음과 같은 오류가 발생합니다.
Input #0, alsa, from 'default':
Duration: N/A, start: 1317762562.695397, bitrate: N/A
Stream #0.0: Audio: pcm_s16le, 44100 Hz, 1 channels, s16, 705 kb/s
[video4linux2 @ 0x165eb10]Cannot find a proper format for codec_id 0, pix_fmt -1.
/dev/video0: Input/output error
여기서 무슨 일이 일어나고 있는지 알려줄 수 있는 사람이 있나요? os.system()과 subprocess.call()을 사용해 보았지만 동일한 오류가 발생했습니다. 여기서 무엇이 잘못될 수 있는지 어디서부터 시작해야 할지 잘 모르겠습니다. "video4linux2는 codec_id 0, pix_fmt -1에 대한 적절한 형식을 찾을 수 없습니다" 오류를 검색해 보았지만 일관된 내용을 찾을 수 없습니다.
답변1
이 문제는 다음에서 해결되었습니다.스택 오버플로.
답변을 정리하자면, 질문자 코드에 문제가 있었고, 녹음을 하려던 중에 화면에 출력이 출력되면서 충돌이 발생했습니다.
답변2
"명령" 문자열을 분할하는 대신 다음을 호출할 수 있습니다.하위 프로세스매개변수가 있는 모듈 shell=True
:
subprocess.Popen(command, shell=True)
그러나 이 방법으로 코덱 문제가 해결되는지 테스트할 수는 없습니다.