일반 정보로 변환 할 수 없습니다 : 나는 오디오 분류를 다루는 파이썬 프로젝트가설치된 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
방법 항목
sound = AudioSegment.from_file(filename[i], format="mp3") #filename[i]=nameOfFile
sound.export("input.wav", format="wav")
방법 2
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
'해결됨'으로 질문 제목을 표시하지 마십시오. 대신 자신의 대답을 수락하십시오. – Rob
대답을 어떻게 수락합니까? @Rob – trezcast
답안 점수에 회색 진드기가 있습니다. 그것을 클릭하면 초록색이됩니다. – Rob