Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import subprocess
- import flask
- import os
- app = flask.Flask(__name__)
- CHUNK_SIZE = 64
- @app.route('/pulseaudio', methods=["GET"])
- def pulseaudio():
- def stream():
- pulseaudio_popen = subprocess.Popen(
- [
- "bash", "-c",
- """
- parec \
- --format=s16le | \
- ffmpeg \
- -loglevel panic \
- -ac 2 \
- -f s16le \
- -ar 44100 \
- -i - \
- -ac 2 \
- -f adts \
- -acodec aac \
- -tune zerolatency \
- -movflags +faststart \
- -bufsize 1k \
- -ar 44100 \
- -b:a 192k \
- -
- """
- ],
- bufsize=0,
- stdout=subprocess.PIPE,
- )
- bytes_read = 0
- kbytes_read = 0
- try:
- while True:
- data = os.read(
- pulseaudio_popen.stdout.fileno(),
- CHUNK_SIZE,
- )
- if not data:
- return
- bytes_read += len(data)
- new_kbytes_read = int(bytes_read / 1024)
- if new_kbytes_read != kbytes_read:
- kbytes_read = new_kbytes_read
- yield data
- finally:
- pulseaudio_popen.kill()
- pulseaudio_popen.wait()
- return flask.Response(stream(), mimetype="audio/aac")
Advertisement
Add Comment
Please, Sign In to add comment