[Python] Why does ffmpeg command work in terminal but not subprocess.call

Discussão em 'Python' iniciado por Stack, Agosto 4, 2025.

  1. Stack

    Stack Membro Participativo

    I reviewed the "similar questions", but those seem to refer to using the full path for ffmpeg to ensure using the same version, which I am already doing so posting my question.

    I am using a Mac runnning Sequoia 15.5, python 3, and ffmpeg 4.2.1.

    I'm trying to write a script that can convert flac to mp3 320k.

    If I use the following command in terminal everything works as intended:

    /usr/local/bin/ffmpeg -i "/Volumes/MainData/Media/Media Server/_Stage/03 - People Like Us - Aaron Tippin.flac" -b:a 320k -map_metadata 0 -id3v2_version 3 "/Volumes/MainData/Media/Media Server/_Stage/03 - People Like Us - Aaron Tippin.mp3"


    But when trying to do the same thing with subprocess.call with the following:

    command = ['/usr/local/bin/ffmpeg', '-i', '/Volumes/MainData/Media/Media Server/_Stage/03 - People Like Us - Aaron Tippin.flac', '-b:a 320k', '-map_metadata 0', '-id3v2_version 3', '/Volumes/MainData/Media/Media Server/_Stage/03 - People Like Us - Aaron Tippin.mp3']
    p = subprocess.call(command)


    I get this as a result:

    Unrecognized option 'id3v2_version 3'.
    Error splitting the argument list: Option not found


    If I remove the '-id3v2_version 3', then the subprocess.call results in the following error:

    [mp3 @ 0x7fae2c008200] Invalid stream specifier: a 320k.


    Why does Terminal understand but subprocess.call doesn't when I've verified I'm using the same version of ffmpeg?

    Continue reading...

Compartilhe esta Página