Конвертить mpegts поток в audio/aac на лету
От: aik Австралия  
Дата: 26.02.25 11:38
Оценка: 5 (1)
Есть годное радио BBC 6 Music: https://as-hls-ww.live.cf.md.bbci.co.uk:443/pool_01505109/live/ww/bbc_radio_one/bbc_radio_one.isml/bbc_radio_one-audio=320000-271960580.ts
Есть "умная колонка" Sonos Roam, которая понимает полтора формата, но aac в обёртке mpegts оно не желает играть, ну, бывает.
У меня есть роутер со свежей openwrt и nginx + ngx_rtmp_module, как бы должно работать, но что то... никак. Конфиг ниже.

Первый вопрос — если заводить этот hls (или играть rtmp?), то что подавать плееру? "mpv http://192.168.10.201/hls/radio" или "mpv rtmp://192.168.10.201/radio" не работают с ffplay/mpv на линухе (пока не до соноса долбаного).

Второй — а нет ли чего по-современнее к nginx? Sonos, можно сказать, софта не имеет.


"модуль":
load_module /usr/lib/nginx/modules/ngx_rtmp_module.so;
rtmp {
        server {
                listen 1935;
                application radio {
                        live on;
                        exec_options on;
                        exec_push ffmpeg -re -i https://as-hls-ww.live.cf.md.bbci.co.uk:443/pool_01505109/live/ww/bbc_radio_one/bbc_radio_one.isml/bbc_radio_one-audio=320000-271960580.ts -acodec copy -f adts rtmp://localhost/$app/$name;
                }
                application hls {
                        live on;
                        hls on;
                        hls_path /tmp/hls;
                        hls_fragment 5s;
                }
        }
}


"сервер":
server {
        listen 192.168.10.201:80 default_server;
        location /hls {
                types {
                        application/vnd.apple.mpegurl m3u8;
                }
                root /tmp;
                add_header Cache-Control no-cache;
                add_header Access-Control-Allow-Origin *;
        }
}
Re: Конвертить mpegts поток в audio/aac на лету
От: DiPaolo Россия  
Дата: 26.02.25 12:15
Оценка:
aik>Первый вопрос — если заводить этот hls (или играть rtmp?), то что подавать плееру? "mpv http://192.168.10.201/hls/radio" или "mpv rtmp://192.168.10.201/radio" не работают с ffplay/mpv на линухе (пока не до соноса долбаного).

что-то оканчивающееся на .m3u8 (по умолчанию master.m3u8, то есть скорее всего http://192.168.10.201/radio/hls/master.m3u8)

aik>Второй — а нет ли чего по-современнее к nginx? Sonos, можно сказать, софта не имеет.


чего именно посовременнее? на лету надо?

можно посмотреть Kodi

можно конвертить в AAC другого типа пакетизации (ADTS/LATM). Надо смотреть, что умеет жевать плеер
Патриот здравого смысла
Re: Конвертить mpegts поток в audio/aac на лету
От: andrey.desman  
Дата: 26.02.25 12:16
Оценка:
Здравствуйте, aik, Вы писали:

aik>exec_push ffmpeg -re -i https://as-hls-ww.live.cf.md.bbci.co.uk:443/pool_01505109/live/ww/bbc_radio_one/bbc_radio_one.isml/bbc_radio_one-audio=320000-271960580.ts -acodec copy -f adts rtmp://localhost/$app/$name;


В rtmp используется flv.

aik>Первый вопрос — если заводить этот hls (или играть rtmp?), то что подавать плееру? "mpv http://192.168.10.201/hls/radio" или "mpv rtmp://192.168.10.201/radio" не работают с ffplay/mpv на линухе (пока не до соноса долбаного).


rtmp играется через mpv rtmp://192.168.10.201/${app}/${key}. В твоем случае app — это radio, а key любой. То есть, так должно работать: mpv rtmp://192.168.10.201/radio/blabla.
hls играется запуском m3u плейлиста. Надо посмотреть имя листа, что он там создает и просто его и запустить: mpv http://192.168.10.201/hls/playlist.m3u
Re: Конвертить mpegts поток в audio/aac на лету
От: andrey.desman  
Дата: 26.02.25 12:21
Оценка:
Здравствуйте, aik, Вы писали:

aik>Есть годное радио BBC 6 Music: https://as-hls-ww.live.cf.md.bbci.co.uk:443/pool_01505109/live/ww/bbc_radio_one/bbc_radio_one.isml/bbc_radio_one-audio=320000-271960580.ts


А вообще, hls — это как раз mpegts, нарезанный на чанки, с плейлистом. И ты здесь приводишь адрес одного конкретного чанка .ts из hls (судя по адресу). Смысла в этом ровно ноль, как и нет смысла конвертить hls в hls если можно сразу взять hls (адрес его плейлиста).
Если же сонос не умеет играть hls, то конвертить во что-то можно, но источником надо брать опять же адрес плейлиста, а не конкретный чанк.
Re: Конвертить mpegts поток в audio/aac на лету
От: Великий Мессия google
Дата: 26.02.25 12:27
Оценка:
если не сильно горит, то я как нибудь добавлю поддержку audio/aac в свой проксик
и кину бинарь сюда, бесплатно, какая там архитектура роутера?
у меня чисто аудио никто никогда не интересовался

только не совсем понятно, колонка тоже hls хочет или там прогрессив стрим?

если прям срочно надо
можно поиграться с gstreamer
там вроде можно скрутить что бы он и тянул стрим и вещал в нужном формате

из остального что приходит на ум
это полу платные решения
тот же nimble можно взять старую версию, которая не требует постоянной подписки
но для сгенерировать статичный конфиг, нужно будет интерфейс один раз подключить
Re: Конвертить mpegts поток в audio/aac на лету
От: DiPaolo Россия  
Дата: 26.02.25 12:29
Оценка:
aik>Есть годное радио BBC 6 Music: https://as-hls-ww.live.cf.md.bbci.co.uk:443/pool_01505109/live/ww/bbc_radio_one/bbc_radio_one.isml/bbc_radio_one-audio=320000-271960580.ts
Вот кстати исходный HLS-поток https://as-hls-ww.live.cf.md.bbci.co.uk/pool_01505109/live/ww/bbc_radio_one/bbc_radio_one.isml/bbc_radio_one-audio=320000.m3u8
Патриот здравого смысла
Re[2]: Конвертить mpegts поток в audio/aac на лету
От: aik Австралия  
Дата: 26.02.25 12:38
Оценка:
Здравствуйте, DiPaolo, Вы писали:

aik>>Первый вопрос — если заводить этот hls (или играть rtmp?), то что подавать плееру? "mpv http://192.168.10.201/hls/radio" или "mpv rtmp://192.168.10.201/radio" не работают с ffplay/mpv на линухе (пока не до соноса долбаного).

DP>что-то оканчивающееся на .m3u8 (по умолчанию master.m3u8, то есть скорее всего http://192.168.10.201/radio/hls/master.m3u8)

/hls отправляет в /tmp, а там не появляется ничего в папке /tmp/radio. Что то должно тригернуть nginx чтоб он туда положил этот сколькотосекундный фрагмент.

aik>>Второй — а нет ли чего по-современнее к nginx? Sonos, можно сказать, софта не имеет.

DP>чего именно посовременнее? на лету надо?

На лету, это ж радио.

DP>можно посмотреть Kodi

DP>можно конвертить в AAC другого типа пакетизации (ADTS/LATM). Надо смотреть, что умеет жевать плеер

Плееры то жрут всё, даже браузер почти всё жрёт, а колонка жрёт только так:

https://docs.sonos.com/docs/supported-audio-formats

AAC-LC, HE-AAC, HEv2-AAC .m4a, .mp4, .aac audio/mp4, audio/aac, application/x-mpegURL, application/vnd.apple.mpegURL, audio/x-mpegurl
FLAC .flac audio/flac
MP3 .mp3 audio/mp3, audio/mpeg3, audio/mpeg
Ogg Vorbis .ogg application/ogg
WMA .asf, .wma audio/wma, audio/x-ms-wma
Re[2]: Конвертить mpegts поток в audio/aac на лету
От: aik Австралия  
Дата: 26.02.25 12:55
Оценка:
Здравствуйте, andrey.desman, Вы писали:

aik>>Есть годное радио BBC 6 Music: https://as-hls-ww.live.cf.md.bbci.co.uk:443/pool_01505109/live/ww/bbc_radio_one/bbc_radio_one.isml/bbc_radio_one-audio=320000-271960580.ts

AD>А вообще, hls — это как раз mpegts, нарезанный на чанки, с плейлистом. И ты здесь приводишь адрес одного конкретного чанка .ts из hls (судя по адресу). Смысла в этом ровно ноль, как и нет смысла конвертить hls в hls если можно сразу взять hls (адрес его плейлиста).

Началось с плейлиста как раз:
https://as-hls-ww.live.cf.md.bbci.co.uk/pool_01505109/live/ww/bbc_radio_one/bbc_radio_one.isml/bbc_radio_one-audio=320000.norewind.m3u8

Но состоит он из этих вот .ts.

AD>Если же сонос не умеет играть hls, то конвертить во что-то можно, но источником надо брать опять же адрес плейлиста, а не конкретный чанк.


Тут я запутался. Я тут более простое завести не могу, а если сверху навернуть плейлисты — то как это поможет?

Тут так — у меня ещё есть tvheadend, который эфирное dvb-t радио раздаёт, там h.264+mp2 для видео и просто mp2 для радио, "[demux] Detected file format: mpegts (libavformat)" пишет мне mpv. Sonos так не может, но tvheadend умеет в ffmpeg + "aac" + "raw audio stream", Sonos это жрёт.
И я попробовал на ноуте писать в файл с -f adts, получается проигрываемый файл, т.е. косяк не похоже чтоб в формате был.
Re[3]: Конвертить mpegts поток в audio/aac на лету
От: andrey.desman  
Дата: 26.02.25 13:01
Оценка: -1 :)
Здравствуйте, aik, Вы писали:

aik>Началось с плейлиста как раз:

aik>https://as-hls-ww.live.cf.md.bbci.co.uk/pool_01505109/live/ww/bbc_radio_one/bbc_radio_one.isml/bbc_radio_one-audio=320000.norewind.m3u8
aik>Но состоит он из этих вот .ts.

Ну вот они говорят, что умеют в hls, при этом mpegts вполне поддерживается.
https://docs.sonos.com/docs/http-live-streaming-hls

А больше кроме http они ничего не умеют. Ну в принципе, можно через nginx-rtmp-module раздавать стрим по http, наверное.
Ну короче, про hls через nginx-rtmp-module можно забыть, так как всё равно есть оригинальный и если его напрямую не удастся завести, то скорее всего и такой бесполезен будет. Сам по себе rtmp сонос не поддерживает.

AD>>Если же сонос не умеет играть hls, то конвертить во что-то можно, но источником надо брать опять же адрес плейлиста, а не конкретный чанк.

aik>Тут я запутался. Я тут более простое завести не могу, а если сверху навернуть плейлисты — то как это поможет?

HLS — это всегда обновляемый плейлист и круговой буфер чанков. Поэтому не навернуть не получится.

aik>Тут так — у меня ещё есть tvheadend, который эфирное dvb-t радио раздаёт, там h.264+mp2 для видео и просто mp2 для радио, "[demux] Detected file format: mpegts (libavformat)" пишет мне mpv. Sonos так не может, но tvheadend умеет в ffmpeg + "aac" + "raw audio stream", Sonos это жрёт.


Не понятно.

aik>И я попробовал на ноуте писать в файл с -f adts, получается проигрываемый файл, т.е. косяк не похоже чтоб в формате был.


Файл можешь записать в adts, а вот в rtmp надо flv передавать.
Re[4]: Конвертить mpegts поток в audio/aac на лету
От: aik Австралия  
Дата: 26.02.25 13:13
Оценка:
Здравствуйте, andrey.desman, Вы писали:

aik>>Началось с плейлиста как раз:

aik>>https://as-hls-ww.live.cf.md.bbci.co.uk/pool_01505109/live/ww/bbc_radio_one/bbc_radio_one.isml/bbc_radio_one-audio=320000.norewind.m3u8
aik>>Но состоит он из этих вот .ts.
AD>Ну вот они говорят, что умеют в hls, при этом mpegts вполне поддерживается.
AD>https://docs.sonos.com/docs/http-live-streaming-hls
AD>А больше кроме http они ничего не умеют. Ну в принципе, можно через nginx-rtmp-module раздавать стрим по http, наверное.

Да можно и http гонять с bbci.co.uk, работает на ноуте, но не в соносе (который вообще понимает https).
upd: а, речь была про http против rtmp. окей.

AD>Ну короче, про hls через nginx-rtmp-module можно забыть, так как всё равно есть оригинальный и если его напрямую не удастся завести, то скорее всего и такой бесполезен будет. Сам по себе rtmp сонос не поддерживает.


Я пока на шаге№1 — как завести хотя бы rtmp, я не могу добиться чтоб nginx запустил ffmpeg. 1 раз удалось, но сразу не понял, а потом не смог повторить.

AD>>>Если же сонос не умеет играть hls, то конвертить во что-то можно, но источником надо брать опять же адрес плейлиста, а не конкретный чанк.

aik>>Тут я запутался. Я тут более простое завести не могу, а если сверху навернуть плейлисты — то как это поможет?
AD>HLS — это всегда обновляемый плейлист и круговой буфер чанков. Поэтому не навернуть не получится.

ok.

aik>>Тут так — у меня ещё есть tvheadend, который эфирное dvb-t радио раздаёт, там h.264+mp2 для видео и просто mp2 для радио, "[demux] Detected file format: mpegts (libavformat)" пишет мне mpv. Sonos так не может, но tvheadend умеет в ffmpeg + "aac" + "raw audio stream", Sonos это жрёт.

AD>Не понятно.

tvtuner -> raspberrypi -> tvheadend софтина -> raw aac -> sonos -> музыка играет.

upd: заменил в nginx .ts на:

ee ~> mpv http://tvh:9981/stream/channel/7ed927db2960b33668a24fac81d11271
(+) Audio --aid=1 --alang=eng (mp2 2ch 48000Hz)
AO: [pipewire] 48000Hz stereo 2ch s16p

"mpv rtmp://192.168.10.201/radio" всё равно не играет.
Отредактировано 26.02.2025 13:40 aik . Предыдущая версия .
Re[3]: Конвертить mpegts поток в audio/aac на лету
От: Великий Мессия google
Дата: 26.02.25 13:19
Оценка:
https://docs.sonos.com/docs/http-live-streaming-hls

Sonos supports the following for HLS:

MIME/media types: application/x-mpegURL, application/vnd.apple.mpegurl, audio/mpegurl
Codecs and profiles: AAC-LC, HE-AAC, HEv2-AAC
Container format: MPEG-TS, MPEG-4
Playlist formats: m3u and m3u8
Sample rates: 48 kHz or lower

mpegts контейнеры и m3u8 стримы тоже жрет
Re[5]: Конвертить mpegts поток в audio/aac на лету
От: andrey.desman  
Дата: 26.02.25 13:47
Оценка: -1 :)
Здравствуйте, aik, Вы писали:

aik>"mpv rtmp://192.168.10.201/radio" всё равно не играет.


Заменил adts на flv? Url прописал до плейлиста, а не чанка? Ну и урл с nginx я тебе написал выше, а ты всё не туда ломишься.
Re[4]: Конвертить mpegts поток в audio/aac на лету
От: aik Австралия  
Дата: 26.02.25 13:51
Оценка:
Здравствуйте, Великий Мессия, Вы писали:

ВМ>mpegts контейнеры и m3u8 стримы тоже жрет


Ну BBC6 что то делает так, что не нравится Соносу — не играет.
Re[5]: Конвертить mpegts поток в audio/aac на лету
От: Великий Мессия google
Дата: 26.02.25 13:56
Оценка:
вроде пишут лог какой то включить можно
что бы вразуметь почему не фурычит
Re[6]: Конвертить mpegts поток в audio/aac на лету
От: aik Австралия  
Дата: 26.02.25 14:05
Оценка:
Здравствуйте, andrey.desman, Вы писали:


aik>>"mpv rtmp://192.168.10.201/radio" всё равно не играет.

AD>Заменил adts на flv? Url прописал до плейлиста, а не чанка? Ну и урл с nginx я тебе написал выше, а ты всё не туда ломишься.

cutnpaste:
rtmp {
        server {
                listen 1935;
                chunk_size 4000;
                application radio {
                        live on;
                        exec_options on;
                        exec_pull ffmpeg -re -i https://as-hls-ww.live.cf.md.bbci.co.uk/pool_01505109/live/ww/bbc_radio_one/bbc_radio_one.isml/bbc_radio_one-audio=320000.norewind.m3u8 -c copy -f flv rtmp://localhost/$app/$name name=bbc6;
                }
                application hls {
                        live on;
                        hls on;
                        hls_path /tmp/hls;
                        hls_fragment 5s;
                }
        }
}


url с nginx:
mpv rtmp://192.168.10.201/radio/blabla
mpv http://192.168.10.201/hls/playlist.m3u

никак.

Если на самом роутере запустить "ffmpeg -i https://as-hls-ww.live.cf.md.bbci.co.uk/pool_01505109/live/ww/bbc_radio_one/bbc_radio_one.isml/bbc_radio_one-audio=320000.norewind.m3u8 -c copy -f flv rtmp://localhost/radio/bbc6" — то вполне работает, пишет чота, т.е. добраться до сервера может.
Re[7]: Конвертить mpegts поток в audio/aac на лету
От: andrey.desman  
Дата: 26.02.25 16:06
Оценка: 17 (2) -1 :)
Здравствуйте, aik, Вы писали:

aik>cutnpaste:


aik>exec_pull ffmpeg -re -i https://as-hls-ww.live.cf.md.bbci.co.uk/pool_01505109/live/ww/bbc_radio_one/bbc_radio_one.isml/bbc_radio_one-audio=320000.norewind.m3u8 -c copy -f flv rtmp://localhost/$app/$name name=bbc6;


Раньше имени не было. Раз уж теперь есть, то и что угодно не пойдет, надо использовать данное имя.
mpv rtmp://192.168.10.201/radio/bbc6


aik>mpv http://192.168.10.201/hls/playlist.m3u


Яж написал, что надо пойти в директорию /tmp/hls и посмотреть, что он там создает, а не просто вставить playlist.m3u.
hls секция работать не будет, потому что в hls application никто, наверное не паблишит. Её содержимое надо в radio перенести, но тогда она будет работать только тогда, когда кто-то слушает через rtmp, а иначе процесс ffmpeg не запустится сам по себе.

aik>никак.


Еще rtmp module требует worker_processes 1, добавь/поменяй в конфиге.
Re[8]: Конвертить mpegts поток в audio/aac на лету
От: aik Австралия  
Дата: 27.02.25 00:00
Оценка:
Здравствуйте, andrey.desman, Вы писали:

aik>>cutnpaste:

aik>>exec_pull ffmpeg -re -i https://as-hls-ww.live.cf.md.bbci.co.uk/pool_01505109/live/ww/bbc_radio_one/bbc_radio_one.isml/bbc_radio_one-audio=320000.norewind.m3u8 -c copy -f flv rtmp://localhost/$app/$name name=bbc6;
AD>Раньше имени не было. Раз уж теперь есть, то и что угодно не пойдет, надо использовать данное имя.
AD>mpv rtmp://192.168.10.201/radio/bbc6

Так я тоже пробовал.

aik>>mpv http://192.168.10.201/hls/playlist.m3u

AD>Яж написал, что надо пойти в директорию /tmp/hls и посмотреть, что он там создает, а не просто вставить playlist.m3u.

Да я понимаю, но в директории пусто если ffpeg не стартовал.

AD>hls секция работать не будет, потому что в hls application никто, наверное не паблишит. Её содержимое надо в radio перенести, но тогда она будет работать только тогда, когда кто-то слушает через rtmp, а иначе процесс ffmpeg не запустится сам по себе.


Я перенёс hls в радио (и работает как ты сказал), а как тогда hls заставить запустить ffmpeg?

aik>>никак.

AD>Еще rtmp module требует worker_processes 1, добавь/поменяй в конфиге.

there we gooooo. В uci.conf.template было "worker_processes auto;". Пойду перечитывать что там к чему, потому что с наскока "worker_processes 4;" не работает (auto наверное и есть 4). "1" означает что только один поток процесса будет обрабатывать все 4 сервера? Не катастрофа, но это всё таки роутер, небыстрый. Запускать отдельно несколько nginx, что ли...

Но наконец то пошла музыка из "mpv rtmp://192.168.10.201/radio/bbc6", а, поскольку теперь есть файлы в /tmp/hls/ (bbc6-0.ts bbc6-1.ts bbc6-2.ts bbc6.m3u8), то и "mpv http://192.168.10.201/hls/bbc6.m3u8" играет.

Спасибо!
Отредактировано 27.02.2025 0:05 aik . Предыдущая версия .
Re[9]: Конвертить mpegts поток в audio/aac на лету
От: aik Австралия  
Дата: 27.02.25 12:40
Оценка:
Здравствуйте, aik, Вы писали:

aik>Я перенёс hls в радио (и работает как ты сказал), а как тогда hls заставить запустить ffmpeg?


В общем, сегодня мы много узнали нового, но nginx для задачи не подходит. В эторнетах я нашёл несколько вопросов как сделать ondemand для hls в nginx и в ответ зловещая тишина. Но набрёл на:

https://github.com/bluenviron/mediamtx/

Простейший конфиг генерит всевозможные способы проигрывать:
paths:
  bbc6:
    runOnDemand: /usr/bin/ffmpeg -re -i https://as-hls-ww.live.cf.md.bbci.co.uk/pool_01505109/live/ww/bbc_radio_one/bbc_radio_one.isml/bbc_radio_one-audio=320000.norewind.m3u8 -c copy -f flv rtmp://localhost/$MTX_PATH
    runOnDemandRestart: yes


и "mpv http://aikgw:8888/bbc6/index.m3u8" чтоб играть. ffmpeg запускается по запросу, пристреливается через минуту неиспользования.

Осталось теперь научить ffmpeg выдавать совместимый поток для соноса.
Re[10]: Конвертить mpegts поток в audio/aac на лету
От: Великий Мессия google
Дата: 27.02.25 13:19
Оценка:
хрен поймешь что ваш соснос играет
hls mpegts не играет(хотя по док должен)
hls adio/aac не играет(хотя по док должен)

есть пример потока с интернета который он играет?
что бы хотя бы по исследовать что он хочет
Re[11]: Конвертить mpegts поток в audio/aac на лету
От: aik Австралия  
Дата: 27.02.25 13:28
Оценка:
Здравствуйте, Великий Мессия, Вы писали:

ВМ>хрен поймешь что ваш соснос играет


Да, железяка годная, но софт говно лютое.

ВМ>hls mpegts не играет(хотя по док должен)

ВМ>hls adio/aac не играет(хотя по док должен)
ВМ>есть пример потока с интернета который он играет?
ВМ>что бы хотя бы по исследовать что он хочет

Это sonos играет:
http://live-radio02.mediahubaustralia.com/2TJW/aac/
http://sbs-ice.streamguys1.com/sbschill

mpv говорит про оба:

[ffmpeg] Could not set AVOption tls_verify='0'
[ffmpeg] Mime-type: 'audio/aacp'
[demux] Trying demuxers for level=normal.
[lavf] Found 'aac' at score=75 size=2048.
[lavf] avformat_find_stream_info() finished after 6144 bytes.
[demux] Detected file format: aac (libavformat)
[demux] Stream is not seekable.
[cplayer] Opening done: http://sbs-ice.streamguys1.com/sbschill
[lavf] select track 0
[cplayer] (+) Audio --aid=1 (aac 2ch 44100Hz)
Re[12]: Конвертить mpegts поток в audio/aac на лету
От: Великий Мессия google
Дата: 27.02.25 14:23
Оценка:
Здравствуйте, aik, Вы писали:

aik>Здравствуйте, Великий Мессия, Вы писали:


ВМ>>hls mpegts не играет(хотя по док должен)

ВМ>>hls adio/aac не играет(хотя по док должен)
ВМ>>есть пример потока с интернета который он играет?
ВМ>>что бы хотя бы по исследовать что он хочет

aik>Это sonos играет:

aik>http://live-radio02.mediahubaustralia.com/2TJW/aac/

это
SHOUTcast DNAS/posix(linux x64) v2.4.7.256
вообще на nginx

aik>http://sbs-ice.streamguys1.com/sbschill


это
Server: AIS Streaming Server 9.2.1



aik>mpv говорит про оба:


это все ice cast стримы

даже не hls

гуглите тогда бесплатные icecast server
на гитхабе наверняка куева туча
Re[12]: Конвертить mpegts поток в audio/aac на лету
От: andrey.desman  
Дата: 27.02.25 16:47
Оценка:
Здравствуйте, aik, Вы писали:

aik>Это sonos играет:

aik>http://live-radio02.mediahubaustralia.com/2TJW/aac/
aik>http://sbs-ice.streamguys1.com/sbschill

Если он простой http играет, то проверь вот так:

ffmpeg -re -i https://as-hls-ww.live.cf.md.bbci.co.uk/pool_01505109/live/ww/bbc_radio_one/bbc_radio_one.isml/bbc_radio_one-audio=320000.norewind.m3u8 -listen 1 -c copy -f adts http://0.0.0.0:8888

Ну а на соносе проиграй http://ip:8888
Это на один раз запустить. ffmpeg закроется после отключения клиента.

Если сработает, то любой http сервак с cgi и зароутить туда вывод ffmpeg через stdout:
ffmpeg -re -i https://as-hls-ww.live.cf.md.bbci.co.uk/pool_01505109/live/ww/bbc_radio_one/bbc_radio_one.isml/bbc_radio_one-audio=320000.norewind.m3u8 -c copy -f adts -
Re[13]: Конвертить mpegts поток в audio/aac на лету
От: aik Австралия  
Дата: 27.02.25 23:02
Оценка:
Здравствуйте, andrey.desman, Вы писали:

AD>Если он простой http играет, то проверь вот так:

AD>ffmpeg -re -i https://as-hls-ww.live.cf.md.bbci.co.uk/pool_01505109/live/ww/bbc_radio_one/bbc_radio_one.isml/bbc_radio_one-audio=320000.norewind.m3u8 -listen 1 -c copy -f adts http://0.0.0.0:8888
AD>Ну а на соносе проиграй http://ip:8888
AD>Это на один раз запустить. ffmpeg закроется после отключения клиента.

При попытке играть соносом, ffmpeg выходит:

av_interleaved_write_frame(): Broken pipe 295.9kbits/s speed=N/A
Error writing trailer of http://0.0.0.0:8888: Broken pipe
size= 2kB time=00:00:00.06 bitrate= 314.1kbits/s speed=2.09x
video:0kB audio:3kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: unknown
[http @ 0x7f82b96020] URL read error: End of file
Error closing file http://0.0.0.0:8888: End of file
Conversion failed!

mpv же играет (ну, после перезапуска ffmpeg).
Re[14]: Конвертить mpegts поток в audio/aac на лету
От: andrey.desman  
Дата: 27.02.25 23:59
Оценка: 12 (1) -1 :)
Здравствуйте, aik, Вы писали:

aik>При попытке играть соносом, ffmpeg выходит:


Значит он несколько раз коннектится (первый раз для хэдеров или пробинга). Тогда надо мутить нормальный сервак...
Re[13]: Конвертить mpegts поток в audio/aac на лету
От: aik Австралия  
Дата: 28.02.25 04:28
Оценка: 4 (1)
Здравствуйте, andrey.desman, Вы писали:

AD>Если сработает, то любой http сервак с cgi и зароутить туда вывод ffmpeg через stdout:

AD>ffmpeg -re -i https://as-hls-ww.live.cf.md.bbci.co.uk/pool_01505109/live/ww/bbc_radio_one/bbc_radio_one.isml/bbc_radio_one-audio=320000.norewind.m3u8 -c copy -f adts -

Что такое "любой http сервак с cgi"? nginx это не оно, надо думать? Гуглятся какие то ngx_http_fastcgi_module, uWSGI. Не хватало ещё апача мне.

окей, апач так апач. Это, наконец, играет в соносе. Ура.

root@aikgw:~/mediamtx# cat /usr/share/apache2/cgi-bin/ttt.sh
#!/bin/sh

echo -e "Content-type: audio/aac\n\n"

/usr/bin/ffmpeg -re -i https://as-hls-ww.live.cf.md.bbci.co.uk/pool_01505109/live/ww/bbc_radio_one/bbc_radio_one.isml/bbc_radio_one-audio=320000.norewind.m3u8 -c copy -f adts - 2>/dev/null
Отредактировано 28.02.2025 8:26 aik . Предыдущая версия . Еще …
Отредактировано 28.02.2025 5:32 aik . Предыдущая версия .
Re: Конвертить mpegts поток в audio/aac на лету
От: Mr.Delphist  
Дата: 05.03.25 20:53
Оценка:
Здравствуйте, aik, Вы писали:

aik>Есть годное радио BBC 6 Music: https://as-hls-ww.live.cf.md.bbci.co.uk:443/pool_01505109/live/ww/bbc_radio_one/bbc_radio_one.isml/bbc_radio_one-audio=320000-271960580.ts

aik>Есть "умная колонка" Sonos Roam, которая понимает полтора формата, но aac в обёртке mpegts оно не желает играть, ну, бывает.
aik>У меня есть роутер со свежей openwrt и nginx + ngx_rtmp_module, как бы должно работать, но что то... никак. Конфиг ниже.

Как-то думается в сторону попробовать на своём компе преобразовать в нужный формат через ffmpeg и скормить колонке, а затем уже попытаться обосновать это на OpenWRT
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.