Skip to main content

streamp3

This library implements streaming MP3 decompression using the LAME library.

Status

PyPI CircleCI Coveralls

Installation

First, make sure you have the LAME libraries and headers installed.

macOS

brew install lame

Debian/Ubuntu

apt install libmp3lame-dev

Install with pip

pip install streamp3

Usage

To begin decoding an MP3, construct an MP3Decoder, passing it in a binary stream or bytes object. You can then access the bit_rate, sample_rate, and num_channels properties for information about the MP3.

from streamp3 import MP3Decoder

with open('my.mp3', 'rb') as mp3_file:
    decoder = MP3Decoder(mp3_file)
    print(decoder.bit_rate, decoder.sample_rate, decoder.num_channels)

You can then read samples from the stream directly using the read() method or use the decoder as an iterator. Samples are returned as bytes objects, which are 16-bit PCM encoded, with samples interleaved across channels. This example streams an MP3 file to the system speaker using PyAudio.

import pyaudio
from streamp3 import MP3Decoder

with open('my.mp3', 'rb') as mp3_file:
    decoder = MP3Decoder(mp3_file)

    audio = pyaudio.PyAudio()
    device = audio.get_default_output_device_info()
    speaker = audio.open(output=True,
                         input_device_index=device['index'],
                         format=pyaudio.paInt16,
                         channels=decoder.num_channels,
                         rate=decoder.sample_rate)

    for chunk in decoder:
        speaker.write(chunk)

Development

Setup

We generally use pyenv to create virtual environments. The following script creates a virtual environment for the project and installs dependencies.

pyenv install 3.6.4
pyenv virtualenv 3.6.4 streamp3
pip install -r requirements.txt

Deployment

The project uses setup.py for installation and is deployed to PyPI. The project can be built for installation with the following command:

python setup.py clean --all; rm -r ./dist
python setup.py sdist bdist_wheel

The wheel and source distribution can then be uploaded to PyPI using twine.

twine upload --repository-url=https://upload.pypi.org/legacy/ dist/*

License

Copyright 2018 Pylon, Inc.

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

  http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

Metadata

Release files for streamp3 0.1.12

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for streamp3 0.1.12
File Size Uploaded
streamp3-0.1.12.tar.gz 10.9 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for streamp3 0.1.12
File Interpreter ABI Platform
streamp3-0.1.12-cp39-cp39-macosx_12_0_x86_64.whl CPython 3.9 CPython 3.9 macOS 12.0+ x86-64 Details

Total release size: 33.6 kB

Release files / streamp3-0.1.12.tar.gz

Download URL streamp3-0.1.12.tar.gz
Size 10.9 kB
Tags Source
SHA-256 checksum
How to use checksums
3511d41addc054cfb6483c6ca61ea3d1ce9a642933e89e8026a5e520147522d4
BLAKE2b-256 checksum
How to use checksums
810be14dc397ec6043eb0be458815e64691816cce0f9976fd1f8b6362140c0eb
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.9.13

Release files / streamp3-0.1.12-cp39-cp39-macosx_12_0_x86_64.whl

Download URL streamp3-0.1.12-cp39-cp39-macosx_12_0_x86_64.whl
Size 22.6 kB
Tags CPython 3.9 macOS 12.0+ x86-64
SHA-256 checksum
How to use checksums
f24787303bbd67892ed51987d1da30e3d077a7d685ad04671a0693bb6a7b54f7
BLAKE2b-256 checksum
How to use checksums
3aa49fb1ca182714874e26aa1e2428fbd1941c42939e75d5c111075552487c28
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.9.13

Release history Release notifications | RSS feed

This release

0.1.12 This release

2 release files

0.1.11

2 release files

0.1.10

2 release files

0.1.9

2 release files

0.1.8

2 release files

0.1.7

2 release files

0.1.6

2 release files

0.1.5

2 release files

0.1.4

2 release files

0.1.3

2 release files

0.1.2

2 release files

0.1.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page