DEV Community

Dmitry Romanoff
Dmitry Romanoff

Posted on

How to Check the Bitrate of an MP3 File Using Python

In digital audio, the bitrate refers to the amount of data processed per unit of time, typically measured in kilobits per second (kbps). For MP3 files, the bitrate plays a crucial role in determining the audio quality and the file's size. Higher bitrates usually indicate better audio quality and larger file sizes, while lower bitrates often result in more compressed files with lower quality.

In this article, we will walk through how you can check the bitrate of an MP3 file using Python. This is especially useful for developers and audio enthusiasts who want to analyze or validate the properties of their audio files programmatically.

Tools You Need

To implement this solution, we will use the following Python libraries:

Mutagen: A Python module to handle audio file metadata. It can read MP3, FLAC, and other audio formats. Specifically, we will use mutagen.mp3 to extract metadata from MP3 files.

os: A built-in Python library that provides functions to interact with the file system.

You can install the required library (mutagen) by running:

pip install mutagen
Enter fullscreen mode Exit fullscreen mode

The Code Breakdown

The following Python code demonstrates how to check the bitrate of an MP3 file.

Importing Required Libraries

We start by importing the necessary modules:

import os
from mutagen.mp3 import MP3
Enter fullscreen mode Exit fullscreen mode

os: This is used to handle file paths and check if the file exists.
MP3: This is the class from mutagen.mp3 used to load and read MP3 file metadata.

Function to Get the Bitrate

The get_bitrate() function is the core of our solution. It takes the path to an MP3 file as input and returns the bitrate of the file in kilobits per second (kbps).

def get_bitrate(mp3_file):
    try:
        # Load the MP3 file
        audio = MP3(mp3_file)

        # Get the bitrate from the MP3 file
        bitrate = audio.info.bitrate  # Bitrate in bits per second
        bitrate_kbps = bitrate // 1000  # Convert to kbps

        return bitrate_kbps
    except Exception as e:
        print(f"Error: {e}")
        return None
Enter fullscreen mode Exit fullscreen mode

In this function:

We use the MP3() class to load the MP3 file.

The audio.info.bitrate gives the bitrate in bits per second (bps), which we convert to kilobits per second (kbps) by dividing by 1000.

If an error occurs (e.g., if the file is corrupted or not an MP3), an exception is caught, and an error message is printed.

Checking the Bitrate of a Specific File

The next function, check_bitrate_of_specific_file(), is used to verify if the file exists, if it is an MP3 file, and then it checks its bitrate.

def check_bitrate_of_specific_file(directory, filename):
    # Construct the full file path
    mp3_file = os.path.join(directory, filename)

    if os.path.exists(mp3_file) and filename.endswith(".mp3"):
        # Check the bitrate of the specific file
        bitrate = get_bitrate(mp3_file)
        if bitrate:
            print(f"The bitrate of {filename} is {bitrate} kbps.")
        else:
            print(f"Could not retrieve the bitrate for {filename}.")
    else:
        print(f"The file {filename} does not exist or is not a valid MP3 file.")
Enter fullscreen mode Exit fullscreen mode

This function:

Constructs the full file path by combining the directory and filename.
It then checks if the file exists and if the filename ends with .mp3 to confirm it's an MP3 file.
If valid, it calls the get_bitrate() function to retrieve and display the bitrate. If any issue occurs, it will notify the user that the bitrate could not be retrieved.

Example Usage

Finally, the script can be executed with the following example:

inp_dir = "inp_dir"  # Replace with the directory where your MP3 file is located
specific_file = "my_mp3_file.mp3"  # Replace with the specific MP3 file name you want to check
check_bitrate_of_specific_file(inp_dir, specific_file)
Enter fullscreen mode Exit fullscreen mode

In this example:

Replace inp_dir with the directory containing your MP3 file.
Replace specific_file with the name of the MP3 file you want to analyze.

Code:

import os
from mutagen.mp3 import MP3

def get_bitrate(mp3_file):
    try:
        # Load the MP3 file
        audio = MP3(mp3_file)

        # Get the bitrate from the MP3 file
        bitrate = audio.info.bitrate  # Bitrate in bits per second
        bitrate_kbps = bitrate // 1000  # Convert to kbps

        return bitrate_kbps
    except Exception as e:
        print(f"Error: {e}")
        return None

def check_bitrate_of_specific_file(directory, filename):
    # Construct the full file path
    mp3_file = os.path.join(directory, filename)

    if os.path.exists(mp3_file) and filename.endswith(".mp3"):
        # Check the bitrate of the specific file
        bitrate = get_bitrate(mp3_file)
        if bitrate:
            print(f"The bitrate of {filename} is {bitrate} kbps.")
        else:
            print(f"Could not retrieve the bitrate for {filename}.")
    else:
        print(f"The file {filename} does not exist or is not a valid MP3 file.")

# Example usage
inp_dir = "inp_dir"  # Replace with the directory where your MP3 file is located
specific_file = "my_input_file.mp3"  # Replace with the specific MP3 file name you want to check
check_bitrate_of_specific_file(inp_dir, specific_file)

Enter fullscreen mode Exit fullscreen mode

Benefits of This Script

Quick Bitrate Check: This script allows users to quickly check the bitrate of MP3 files without manually inspecting metadata.
Automated Audio Analysis: Developers can use this script in larger automation workflows to analyze or process audio files based on their bitrate.
File Validation: The code also ensures that the file exists and is an MP3, reducing the chances of errors when processing multiple files.

Possible Improvements

Support for More Formats: You could extend this functionality to support other audio formats, such as FLAC or WAV, by using different modules from the mutagen library.
Batch Processing: If you need to check the bitrate of multiple files, you can modify the script to process a directory of MP3 files and display their bitrates.
Better Error Handling: While basic error handling is already in place, you can improve it by providing more descriptive messages, especially for file format issues.

Conclusion

With this Python script, you can easily check the bitrate of any MP3 file, allowing you to analyze the quality and size of audio files programmatically. Whether you are a developer, an audio engineer, or just an enthusiast, this script offers a simple way to automate bitrate checks and streamline your audio file management process.

Top comments (0)