Скриншот с интегрированным optipng или pngcrush

Одна идея, которую я должен был передать «тому, что я слышу» в DLNA-рендерере (например, WDTV), - это передать поток с помощью VLC в качестве HTTP-потока с pulse://alsa_output.xxx.monitor в качестве входного и перекодировать его в MP3 или FLAC. Затем я хотел использовать контрольную точку DLNA, чтобы позволить рендереру воспроизводить поток taht. VLC действительно корректно выполняет транскодированный поток, но он не позволяет установить тип mime, поэтому рендеринг отказывается его воспроизводить.

Следующей идеей было написать http-сервер в python, который служит для потока , Он получает звуковой поток из пульса с помощью parec, кодирует его с помощью flac (или lame или любого другого, что вы хотите) и правильно устанавливает тип мига.

Он работает со следующим (очень простым ) script:

#!/usr/bin/python

import BaseHTTPServer
import SocketServer
import subprocess

PORT = 8080
# run "pactl list short |grep monitor" to see what monitors are available
# you may add a null sink for streaming, so that what is streamed is not played back locally
# add null sink with "pactl load-module module-null-sink"
MONITOR = 'null.monitor'
MIMETYPE = 'audio/flac'
ENCODER = 'flac - -c --channels 2 --bps 16 --sample-rate 44100 --endian little --sign signed'
BUFFER = 65536

class Handler(BaseHTTPServer.BaseHTTPRequestHandler):
def do_HEAD(s):
    print s.client_address, s.path, s.command
    s.send_response(200)
    s.send_header('content-type', MIMETYPE)
    s.end_headers()
def do_GET(s):
    s.do_HEAD()
    pa = subprocess.Popen('parec -d {} | {}'.format(MONITOR, ENCODER), shell = True, bufsize = BUFFER, stdout = subprocess.PIPE)
    while True:
        data = pa.stdout.read(1024)
        if len(data) == 0: break
        s.wfile.write(data)
    print 'stream closed'


httpd = SocketServer.TCPServer(("", PORT), Handler)

print "listening on port", PORT

try:
httpd.serve_forever()
except KeyboardInterrupt:
pass

httpd.server_close()

Отрегулируйте параметры, запустите их и укажите рендер DLNA на ваш компьютер. Он работал для меня с WDTV как рендерером и Android-телефоном с BubbleUPnP в качестве контрольной точки (вы можете ввести URL-адрес потока при добавлении нового элемента в список воспроизведения вручную). Но он должен работать с любыми DLNA-совместимыми устройствами.

1
задан 13 April 2017 в 15:23

0 ответов

Другие вопросы по тегам:

Похожие вопросы: