nuclon 04.08.2010 12:28
Есть вопрос! — cmus - проигрывание потоков через http-proxy
Поверхностный гугль не выдал решения на вопрос - что прикрутить в cmus, чтобы научить его играть потоки через http-proxy. Или я плохо смотрел?
А stdin он не умеет играть? С mplayer срабатывало
curl http://example.com/stream.mp3 | mplayer -
Получилось только так:
(echo -ne "HTTP/1.0 200 OK\nContent-Type: audio/mpeg\n\n"; cat ~/music/02_era_ameno_remix.mp3)|nc -l -p 8080
И потом послушать поток http://localhost:8080
причём два раза: один раз cmus обращается к серверу при добавлении урла в библиотеку/плейлист чтобы получить заголовки и понять, что это действительно радиостанция, а второй раз (пришлось эту команду перезапустить) уже можно слушать.
Скормить поток напрямую в stdin не вышло, как ни пытался: не хочет он stdin открывать.
(echo -ne "HTTP/1.0 200 OK\nContent-Type: audio/mpeg\n\n"; cat ~/music/02_era_ameno_remix.mp3)|nc -l -p 8080
И потом послушать поток http://localhost:8080
причём два раза: один раз cmus обращается к серверу при добавлении урла в библиотеку/плейлист чтобы получить заголовки и понять, что это действительно радиостанция, а второй раз (пришлось эту команду перезапустить) уже можно слушать.
Скормить поток напрямую в stdin не вышло, как ни пытался: не хочет он stdin открывать.
точнее так:
mkfifo pipe
(sed 's/^Host:.*/Host: stream.server.org:8000/' pipe) | nc proxy.org 8080 | nc -l 8888 > pipe
И коннект к http://localhost:8888/stream.m3u, где stream.m3u — путь к потоку точно такой же, как на изначальном потоковом сервере.
mkfifo pipe
(sed 's/^Host:.*/Host: stream.server.org:8000/' pipe) | nc proxy.org 8080 | nc -l 8888 > pipe
И коннект к http://localhost:8888/stream.m3u, где stream.m3u — путь к потоку точно такой же, как на изначальном потоковом сервере.
Можно ещё примерно так попробовать:
mkfifo pipe
echo -ne "GET /stream.m3u HTTP/1.0\nHost: stream.host.com" | nc proxy.org 8080 | nc -l 8888
И попробовать получить поток из http://localhost:8080. Сам не проверял, но вдруг.