Back to all posts
Data Science

Convert MP4 Video to MP3 in Python Using FFmpeg

Agar aapke paas bahut saari video files hain aur aap unse sirf audio extract karna chahte ho — jaise songs, lectures, podcasts, ya movie audio — to Python +...

Agar aapke paas bahut saari video files hain aur aap unse sirf audio extract karna chahte ho — jaise songs, lectures, podcasts, ya movie audio — to Python + FFmpeg ek bahut powerful solution hai.

Is blog me hum step-by-step samjhenge:

  • MP4 ko MP3 me kaise convert kare

  • FFmpeg kya hota hai

  • subprocess ka use kyu karte hain

  • Folder ke saare videos ek saath kaise convert kare

  • Real-world use cases

  • Common errors aur unke solutions

  • Performance improvement tips


Final Output Kya Karega?

Ye script:

D:\Songs folder ke saare .mp4 files read karegi
✅ Har video ka audio extract karegi
✅ MP3 format me save karegi
✅ Output folder me automatically store karegi

Example:

Plain Text
Input:
D:\Songs\song1.mp4

Output:
D:\Songs\output\song1.mp3

FFmpeg Kya Hai?

FFmpeg ek powerful multimedia tool hai jo:

  • Video convert karta hai

  • Audio extract karta hai

  • Compression karta hai

  • Streaming support karta hai

  • Editing aur processing karta hai

Python directly video conversion nahi karta.

Python FFmpeg ko command bhejta hai.


imageio_ffmpeg Kya Hai?

imageio-ffmpeg ek Python package hai jo:

  • Automatically FFmpeg download/use karta hai

  • Manual FFmpeg setup ki problem kam karta hai

Install:

Bash
pip install imageio-ffmpeg

Complete Code

Python
import subprocess
import imageio_ffmpeg
import os


def video_to_mp3(video_path, output_path=None, bitrate="192k"):

    # Agar output path nahi diya to automatic name create hoga
    if output_path is None:
        output_path = video_path.rsplit('.', 1)[0] + '.mp3'

    # FFmpeg executable ka path
    ffmpeg_exe = imageio_ffmpeg.get_ffmpeg_exe()

    # FFmpeg command
    command = [
        ffmpeg_exe,
        "-i", video_path,   # Input video
        "-vn",              # Video remove karo
        "-b:a", bitrate,    # Audio bitrate
        "-y",               # Existing file overwrite
        output_path
    ]

    # Command execute karo
    result = subprocess.run(
        command,
        capture_output=True,
        text=True
    )

    # Success ya error print karo
    if result.returncode == 0:
        print(f"✓ Done: {output_path}")
    else:
        print(f"✗ Error: {result.stderr}")


# Folder paths
videofolderpath = "D:\\Songs"
outputpath = "D:\\Songs\\output"

# Output folder create karo agar exist nahi karta
os.makedirs(outputpath, exist_ok=True)

# Saari MP4 files loop karo
for filename in os.listdir(videofolderpath):

    if filename.endswith(".mp4"):

        video_path = os.path.join(videofolderpath, filename)

        output_path = os.path.join(
            outputpath,
            filename.rsplit('.', 1)[0] + '.mp3'
        )

        video_to_mp3(video_path, output_path)

Step-by-Step Deep Explanation

1. subprocess Module

Python
import subprocess

Python directly FFmpeg nahi chalata.

Ye external software ko command bhejta hai using subprocess.

Real-life example:

Plain Text
Python = Manager
FFmpeg = Worker

Python bolta hai:

"Ye video lo aur MP3 bana do"


2. get_ffmpeg_exe()

Python
ffmpeg_exe = imageio_ffmpeg.get_ffmpeg_exe()

Ye automatically FFmpeg executable ka path return karta hai.

Example:

Plain Text
C:\Users\AppData\Local\Programs\ffmpeg.exe

Benefit:

✅ Manual FFmpeg install ki tension kam
✅ Portable solution


3. FFmpeg Command Samjho

Python
command = [
    ffmpeg_exe,
    "-i", video_path,
    "-vn",
    "-b:a", bitrate,
    "-y",
    output_path
]

Ye internally kuch aisa command banata hai:

Bash
ffmpeg -i song.mp4 -vn -b:a 192k -y song.mp3

Important FFmpeg Flags

-i

Input file.

Bash
-i song.mp4

-vn

Video remove karo.

Sirf audio rakho.


-b:a

Audio bitrate.

Bash
192k

Higher bitrate:

✅ Better quality
❌ Bigger size


Bitrate Comparison

Bitrate

Quality

File Size

64k

Low

Small

128k

Good

Medium

192k

Very Good

Medium

320k

Excellent

Large


4. subprocess.run()

Python
result = subprocess.run(
    command,
    capture_output=True,
    text=True
)

Ye FFmpeg command execute karta hai.


capture_output=True

Output aur errors capture karta hai.

Useful for debugging.


text=True

Output string format me milega.


5. returncode

Python
if result.returncode == 0:

0 means:

✅ Success

Non-zero means:

❌ Error


Batch Processing Logic

Python
for filename in os.listdir(videofolderpath):

Folder ke saare files read karta hai.


File Filter

Python
if filename.endswith(".mp4"):

Sirf MP4 files process hongi.


Dynamic Output Name

Python
filename.rsplit('.', 1)[0] + '.mp3'

Example:

Plain Text
movie.mp4
↓
movie.mp3

Real World Use Cases

1. Song Extraction

Music videos → MP3


2. Podcast Creation

Video lectures → Audio podcast


3. YouTube Audio Backup

Educational content ka audio store kar sakte ho.


4. AI/ML Projects

Speech recognition datasets banane me useful.


Advanced Improvements

1. Multiple Formats Support

Python
if filename.endswith((".mp4", ".mkv", ".avi")):

2. Better Error Handling

Python
try:
    video_to_mp3(video_path, output_path)
except Exception as e:
    print(e)

3. Progress Bar

Use:

Python
tqdm

Install:

Bash
pip install tqdm

4. Parallel Processing

Large folders ke liye:

Python
concurrent.futures

Bahut fast ho jayega.


Optimized Professional Version

Python
import os
import subprocess
import imageio_ffmpeg
from concurrent.futures import ThreadPoolExecutor


ffmpeg_exe = imageio_ffmpeg.get_ffmpeg_exe()

video_folder = r"D:\Songs"
output_folder = r"D:\Songs\output"

os.makedirs(output_folder, exist_ok=True)


def convert_video(filename):

    if not filename.endswith(".mp4"):
        return

    video_path = os.path.join(video_folder, filename)

    output_path = os.path.join(
        output_folder,
        filename.rsplit(".", 1)[0] + ".mp3"
    )

    command = [
        ffmpeg_exe,
        "-i", video_path,
        "-vn",
        "-b:a", "192k",
        "-y",
        output_path
    ]

    result = subprocess.run(
        command,
        capture_output=True,
        text=True
    )

    if result.returncode == 0:
        print(f"Converted: {filename}")
    else:
        print(f"Error: {filename}")
        print(result.stderr)


files = os.listdir(video_folder)

with ThreadPoolExecutor(max_workers=4) as executor:
    executor.map(convert_video, files)

Common Errors + Solutions

Error 1

Plain Text
FileNotFoundError

Cause:

Wrong path.

Solution:

Python
print(video_path)

Check path properly.


Error 2

Plain Text
Permission Denied

Cause:

File already open hai.

Solution:

  • VLC close karo

  • Media player close karo


Error 3

Plain Text
FFmpeg not found

Solution:

Bash
pip install imageio-ffmpeg

Performance Discussion

Agar:

  • 1000 videos

  • Large files

  • 4K videos

to:

✅ Multi-threading use karo
✅ SSD storage use karo
✅ Lower bitrate use karo


Final Verdict

Ye project beginner se intermediate Python developers ke liye bahut useful hai because isme:

  • File handling

  • Automation

  • FFmpeg integration

  • Batch processing

  • Error handling

  • External command execution

sab ek saath seekhne ko milta hai.

Agar aap Data Engineering, Automation, AI pipelines, ya backend systems me jana chahte ho to aise projects bahut valuable hote hain.

0 likes

Rate this post

No rating

Tap a star to rate

0 comments

Latest comments

0 comments

No comments yet.

Keep building your data skillset

Explore more SQL, Python, analytics, and engineering tutorials.