Search code examples
pythonffmpegvirtualenvpydub

Pydub installation and ffmpeg


I was trying to get raw sound data out of a .mp3 file. Therefor I used the pydub module as stated here. I created a venv for this project and installed all necessary modules. But for some reason, pydub decided to give me an FileNotFoundError:

(venv) Python-IT:LightsDev pythonit$ which python
/Users/pythonit/Documents/Programmieren/Python/LightsDev/venv/bin/python
(venv) Python-IT:LightsDev pythonit$ which pip3
/Users/pythonit/Documents/Programmieren/Python/LightsDev/venv/bin/pip3
(venv) Python-IT:LightsDev pythonit$ pip3 list 
------------- -------
ffmpeg        1.4
pip           18.1
pydub         0.23.0
pyee          5.0.0
python-ffmpeg 1.0.5
setuptools    39.0.1

My exact code looks like that:

from pydub import AudioSegment
sound = AudioSegment.from_mp3('test.mp3')
raw_data = sound._data
print(raw_data)

and I get this error:

FileNotFoundError: [Errno 2] No such file or directory: 'ffprobe': 'ffprobe'

alongside this runtime warning:

RuntimeWarning: Couldn't find ffmpeg or avconv - defaulting to ffmpeg, but may not work
warn("Couldn't find ffmpeg or avconv - defaulting to ffmpeg, but may not work", RuntimeWarning)

I don't know if it is me, but some similar questions stating I should install ffmpeg or python-ffmpeg won't work. I can even import the ffmpeg module but nothing happens. I can work with ffmpeg and load files but using it with pydub won't work.

EDIT: Today I changed to my windows machine and looked at the error in-depth. However I didn't manage to get it working, even with the solution provided in the comments (thank you though). I installed the ffmpeg binary as stated and i was able to get ffmpeg running in the shell, however not with pydub... I have no clue what is going on. I guess my mistake is very obvious and I am just not able to get it. Even not subprocess was able to solve this problem despite the fact, that I am able to use ffmpeg in shell. I even was able to convert the file using ffmpeg in shell...

 ffmpeg -i test.mp3 test.wav 
 > Output #0, wav, to 'test.wav':

I think I am close to solve the problem myself anyways, but thank you anyways.


Solution

  • Install ffmpeg to your system, not python lib:

    In Ubuntu: sudo apt install ffmpeg

    In Windows: Just download the ffmpeg lib, extract, and add the ***\bin path to the environment path

    And Install both simpleaudio and pydub via pip to python lib (I don't know why, but it work for me)