2017-11-17 17 views
1

일반 정보로 변환 할 수 없습니다 : 나는 오디오 분류를 다루는 파이썬 프로젝트가설치된 ffmpeg가 감지되지 않았습니다. 오디오 (파이썬 2.7, 맥 OS X)

을; 백엔드는 완료되었지만 프론트 엔드로 인해 어려움을 겪고 있습니다. 백엔드 요구 사항 (변경할 수 없음)은 오디오 파일이 wav 형식이어야하지만 사용자가 mp3 파일을 업로드 할 수있게하려는 것입니다. 제 프론트 엔드는 Python 2.7 및 플라스크를 사용하는 웹 서버입니다.

그래서 기본적으로 mp3를 wav로 변환하려고하지만 오류가 계속 발생합니다.


내 시도 (전체 코드가 더 명확하게 문제를 이해하기 위해 필요한 경우 하단에) : 나는 사제, libav, 그리고는 FFmpeg 을 설치

pydub 라이브러리를 사용
1

libav 설치 방법 : 양조가 libav를 설치 --with-을받는 libvorbis --with-SDL --with-테오 라 (Theora)
는 FFmpeg 설치 방법 : 양조 설치는 FFmpeg --with-을받는 libvorbis --with-ffplay --with- Theora

,451,515,


방법 항목

sound = AudioSegment.from_file(filename[i], format="mp3") #filename[i]=nameOfFile 
sound.export("input.wav", format="wav") 


방법 2

> 내가는 FFmpeg을 설치하더라도 런타임 경고 "는 FFmpeg 또는 avconv을 감지 할 수 없습니다", "파일을 찾을 수 없습니다"와지고 유지 =
AudioSegment.from_file(filename[i], format="mp3").export("input.wav", format="wav") 


및 libav
=> "f 대신"from_mp3 "을 사용했을 때 위와 같은 오류가 발생했습니다 ("파일을 찾을 수 없습니다 "). rom_file "
=>를 사용하여 시도"MP3 "대신"원시 "하고있어"키 오류 :
참고 (이 오류가 무슨 뜻인지 찾을 수 없습니다) sample_width를 "내가 올바른 디렉토리에있어 확인했다


2 사용 서브 프로세스

import subprocess 
subprocess.call(["ffmpeg", "-i",filename[i],"inputAudio.wav"]) 


=>있어 "OSError : 해당 파일이나 디렉토리"나는 당신이 날 문제가 어떻게 해결하는 방법을 이해하는 데 도움 수 있기를 바랍니다


.. .


전체 코드 :
나는이 오디오 파일을 다루는 함수 내부 상단

app = Flask(__name__) 
APP_ROOT = os.path.dirname(os.path.abspath(__file__)) 
os.chdir(APP_ROOT) 


에서이

data = request.files.getlist('file') #get all uploaded audio files 
fsize = len(data) #number of audio files 
i = 0 #index counter 

filename = ["" for x in range(fsize)] #LIST TO STORE EACH FILE'S NAME 
audiofile = ["" for x in range(fsize)] #LIST TO STORE CLASSIFICATION RESULTS OF EACH FILE 


#LOOP THROUGH EACH UPLOADED FILE 
for file in data: 
    filename[i] = file.filename #ADD FILENAME TO LIST ABOVE 
    destination = str(APP_ROOT) 

문제있는 제품 :

코드 계속 :이 문제에 대한 해결책을 발견 있도록

#STORE AUDIO FILE TO PREPARE FOR PROCESSING (CLASSIFICATION) 
    else: 
     destination += "/inputAudio.wav" 
     file.save(destination) 

#FINAL STEP 
    audiofile[i]=Raudio.start() #AUDIO PROCESSING (CLASSIFICATION) 
    os.remove(destination) #DELETE AUDIO FILE TO PREVENT CLUTTERING OF FILES 
    i += 1 #INCREMENT FILE INDEX 
+0

'해결됨'으로 질문 제목을 표시하지 마십시오. 대신 자신의 대답을 수락하십시오. – Rob

+0

대답을 어떻게 수락합니까? @Rob – trezcast

+0

답안 점수에 회색 진드기가 있습니다. 그것을 클릭하면 초록색이됩니다. – Rob

답변

1

좋아요.

this site에서 FFmpeg 바이너리를 다운로드했습니다. 2.7

이 또한 어디 파이썬 간부 인/

매킨토시 HD/라이브러리/프레임 워크/Python.framework가/버전 :
그럼 난 그냥 다운로드 다음 경로에서 파일의 모든 내용을 붙여 넣은 복사 내가 어딘가에 문제가 ffmpeg 파이썬이나 뭔가의 경로에서 찾을 수 없다는 것을 읽을 기억 해요.

그래서 .... 결국 마침내 작동합니다! 이 문제가 내 주말 대부분을 차지 했으므로 해결책을 공유 할 생각이었고 다른 사람이 문제를 해결하는 데 도움이되기를 바랍니다.