Как перекодировать поток в fly и перевести?

У меня есть URL-адреса потоков Icecast/Shoutcast, как я могу ретранслировать эти потоки с разными битрейтами? Я знаю, как перекодировать файл, но не знаю, как перекодировать поток с несколькими битрейтами.

For example i find two icecast/shoutcast stream url/server:

http://icecast_stream.ru:8000/play
http://shoutcast_stream:8000/

I want to relay it in multiple bitrates:
http://localhost:8000/icecast_stream_32
http://localhost:8000/icecast_stream_64
http://localhost:8000/icecast_stream_128


http://localhost:8000/shoutcast_stream_32
http://localhost:8000/shoutcast_stream_64
http://localhost:8000/shoutcast_stream_128

Могу ли я сделать это с помощью Icecast + Ices или какой софт мне нужно использовать?


person Suleiman    schedule 16.07.2015    source источник
comment
Я настоятельно рекомендую получать эти потоки из исходного кодировщика. Когда вы повторно сжимаете уже сжатый с потерями звук, вы теряете еще больше качества, и артефакты начинают становиться более слышимыми. Обращаясь к источнику, вы теряете качество только один раз.   -  person Brad    schedule 12.08.2015


Ответы (1)


Потоковое транскодирование можно выполнять с помощью нескольких инструментов. avconv/ffmpeg, vlc, Liquidsoap, ezstream,…
Один пример: https://stackoverflow.com/a/29500982/2648865

Что касается вашей части с несколькими битрейтами: в большинстве случаев вам нужно запустить несколько процессов инструмента транскодирования.
Если вас беспокоит потребление полосы пропускания, я бы порекомендовал настроить ретрансляцию удаленного потока на вашем локальном сервере Icecast и использовать его в качестве входных данных для транскодирования.

добавлено после редактирования вопроса:
Я предполагаю, что оба исходных потока имеют размер 128 КБ.
Как объяснено здесь: http://icecast.org/docs/icecast-2.4.1/relaying.html#setting-up-a-single-broadcast-relay

<relay> <server>icecast_stream.ru</server> <port>8000</port> <mount>/play</mount> <local-mount>/icecast_stream_128</local-mount> <relay-shoutcast-metadata>1</relay-shoutcast-metadata> </relay>

Чтобы получить два потока более низкого качества, действуйте, как описано выше. Для этого сложно использовать лед, поэтому что-то другое будет проще. Если вы хотите автоматизировать запуск транскодирования, загляните в:
http://icecast.org/docs/icecast-2.4.1/config-file.html#mountsettings — особенно при подключении:
<mount> <mount-name>/icecast_stream_128</mount-name> <on-connect>/usr/local/bin/start-transcoders-icecast-stream</on-connect> </mount>
примечание:< /em> эта команда запускается до того, как поток станет доступен, вам может потребоваться отложить запуск транскодеров на несколько секунд, чтобы избежать проблем.

person TBR    schedule 16.07.2015
comment
Мороженое тоже можно или нет? Можете показать пример для IceS или EzStream? Например: ip:port/some_mount -- URL-адрес потока icecast. Мне нужны ключи моменты как перетранслировать его на локалхост(например) в 64 и 128 битрейт - person Suleiman; 16.07.2015
comment
Когда вы уточнили свой вопрос, я смог привести несколько примеров. Как там сказано, айс не идеален. Лучше подойдут EZ-stream, avconv или LiquidSoap. Liquidsoap, хотя и сложен в настройке, вероятно, сможет делать все в одном, даже без локального реле. - person TBR; 17.07.2015
comment
можешь порекомендовать потоковый транскодер и написать как им пользоваться? - person Suleiman; 19.07.2015
comment
Я указал пример в самом начале: stackoverflow.com/questions/29499768/ Что насчет этого непонятно? - person TBR; 19.07.2015
comment
но мне нужен пример ices0 или ffmpeg, как это сделать, можете помочь? - person Suleiman; 20.07.2015
comment
ffmpeg -re -i someserver/stream.mp3 -c:a opus -b:a 20k \ -аудио приложения -vbr on -frame_duration 60 \ -content_type audio/ogg \ icecast://source:bar@server:8000/test-20.opus Обратите внимание, что я только что заменил «avconv» на «ffmpeg», так как они взаимозаменяемы. - person TBR; 20.07.2015