Ретрансляция потока mms

Тема в разделе "BSD", создана пользователем poison-b13, 11 авг 2009.

Статус темы:
Закрыта.
  1. poison-b13

    poison-b13 Постоялец

    Регистр.:
    21 июл 2009
    Сообщения:
    64
    Симпатии:
    5
    Добрый день уважаемые.
    Возникло желание сделать релэй некоторых станций с внешки,
    но вот беда, транслируются они по протоколу mms://
    а хочется поток зарулить в icecast2 и желательно консольными демонами.
    Система FreeBSD 6.2.
    Уважаемые гуру подскажите куда копать в инете толкового не чего не нашел, кроме как советом поднять Windows Media Server.
    Заранее благодарен.
     
  2. papenkin

    papenkin Создатель

    Регистр.:
    8 май 2008
    Сообщения:
    21
    Симпатии:
    17
    Сразу скажу, что не пробовал такую связку, но в теории должно работать:
    mplayer хватает mms поток и пишет в файл, который читает ices и отправляет в icecast. Можно попробовать mplayer+vlc.
     
  3. poison-b13

    poison-b13 Постоялец

    Регистр.:
    21 июл 2009
    Сообщения:
    64
    Симпатии:
    5
    порыскав в инете нашел пару подсказок,
    а так буду пробовать сделать пару реализаций:
    есть задумки сделать через fifo каналы mplayerdbitn в fifo, а из fifo запихивать через ices0 в icecast2
    и есть вариант через vlc в нете нашел пару скриптов, пока еще не успел опробовать:
    1.
    Код:
    #!/bin/sh
    
    vlc --daemon \
    --pidfile /var/run/vlc_dfm.pid \
    --intf=dummy \
    --color \
    mms://broadcast03.station.ru/dfm?MSWMExt=.asf \
    --sout-shout-name 'D-FM Radio' \
    --sout-shout-description 'Dinamite FM. http://dfm.ru/' \
    --sout-shout-url 'http://pentagon.net.ru/rtv/' \
    --sout-shout-genre 'eurodance, electronic, pop' \
    --sout '#transcode{acodec=mp3,ab=64,channels=2}:std{acces s=shout{mp3},mux=raw,dst=source:source@192.168.0.2 54:8000/dfm.mp3}'
    2.
    Код:
    #!/bin/sh
    
    vlc --daemon \
    --pidfile /var/run/vlc_maximum.pid \
    --intf=dummy \
    --color \
    mms://broadcast03.station.ru/maximum?MSWMExt=.asf \
    --sout-shout-name 'Radio Maximum' \
    --sout-shout-description 'Radio Maximum. http://maximum.ru/' \
    --sout-shout-url 'http://pentagon.net.ru/rtv/' \
    --sout-shout-genre 'rock, various' \
    --sout '#transcode{acodec=mp3,ab=96,channels=2}:std{acces s=shout{mp3},mux=raw,dst=source:source@192.168.0.2 54:8000/maximum.mp3}'
    о результатах отпишусь.
     
  4. papenkin

    papenkin Создатель

    Регистр.:
    8 май 2008
    Сообщения:
    21
    Симпатии:
    17
    TC, отпишись, плз, о результатах, т.к. в ближайшее время придется столкнуться с такой же проблемой.
     
  5. mod3m

    mod3m Создатель

    Регистр.:
    16 апр 2007
    Сообщения:
    10
    Симпатии:
    0
    По ходу на БСД не реализуемо стандартным софтом. Может с поддержкой линя прокатит?
     
  6. poison-b13

    poison-b13 Постоялец

    Регистр.:
    21 июл 2009
    Сообщения:
    64
    Симпатии:
    5
    корое с vlc не получилось ни фига, vlc отказался транскодировать, поток в icecast2, пробовал и виндовый vlc тоже самое, сделал через оцифровку аудио:
    запускается vlc звук идет на звуковуху(как запустить звуковуху в нете можно найти) далее берется кабелек, раньше с таким продавали тюнеры AverMEDIA с проводком для подключения от тюнера к звуковухе, т.к. посредством дров звук не шел в систему, этот проводок втыкаем в линейный выход звуковухи и в линейный вход (зеленый-голубой)
    далее ставится darkice и он оцифровывает звук с этой же звуковухи и пихает его в icecast2
    конфиг даркайса:
    Код:
     cat /usr/local/etc/darkice.cfg
    # this section describes general aspects of the live streaming session
    [general]
    duration        = 0             # длительность оцифровки в секундах, 0 - бесконе                                                чно
    bufferSecs      = 60            # длительность внутренней буферизации, в секунда                                                х
    reconnect       = yes           # переподключаться в случае дисконнекта с сервер                                                ом
    realtime        = no            # оцифровка в режиме реального времени или нет
    
    # this section describes the audio input that will be streamed
    [input]
    device          = /dev/dsp0     # устройство OSS DSP звуковой карты
    sampleRate      = 44100         # частота дискретизации в Герцах: 11025, 22050 и                                                ли 44100
    bitsPerSample   = 16            # бит на семпл, 8 или 16
    channel         = 2             # каналов: 1 = моно, 2 = стерео
    
    [icecast2-0]
    bitrateMode     = cbr           # тип кодирования, допустимы vbr/abr/cbr
    format          = mp3           # формат потока: mp3/ogg
    bitrate         = 128           # битрейд потока
    server          = 127.0.0.1     # имя хоста, на котором поднят Icecast2 (допусти                                                м IP-адрес)
    port            = 8000          # порт, на котором слушает сервер IceCast2, обыч                                                но 8000
    password        = YOUR_PASS               # пароль для учетной записи source на се                                                рвере IceCast2
    mountPoint      = Maximum       # точка монтирования на сервере IceCast2
    name            = Maximum       # название потока
    description     = Maximum       # описание потока
    url             = http://maximum.ru     # произвольный адрес
    genre           = radio         # жанр
    public          = no            # публиковать на dir.xith.org или нет?
    но есть одна трабла когда отваливается инет vlc не переподключается, и еще одна что vlc не запускается под рутом
    решение первой перезапуск vlc по крону раз в час, вполне хватает.
    вот скрипт перезапуска:
    Код:
     cat /usr/local/etc/mms-rs.sh
    #!/bin/sh
    #
    #:sout='#transcode{acodec=vorb,ab=128,channel=2}:duplicate{dst=std{access=shout,mux=ogg,dst=source:m21412s@127.0.0.1:8000/Maximum}}'
    cvlc="/usr/local/bin/cvlc"
    VLCCMD="${cvlc} --daemon --intf=dummy --volume 512 mms://broadcast01.station.ru/maximum"
    kill -TERM `ps -xa | grep [v]lc | awk '{print$1}'`
    ${VLCCMD} > /dev/null 2>&1
    exit 0
    
    а решение проблемы запуска под root'ом:
    если ставим из портов vlc:
    даем команду make в директории порта как только пошла первая стадия(configure)
    делаем CRTL+C
    и идем в папку work: туда распаковываются исходники,
    ищем там среди всех папок файл vlc.c
    в нем делаем правки:
    Код:
    #ifndef ALLOW_RUN_AS_ROOT
        if (geteuid () == 0)
        {
            fprintf (stderr, "VLC is not supposed to be run as root. Sorry.\n"
            "If you need to use real-time priorities and/or privileged TCP ports\n"
            "you can use %s-wrapper (make sure it is Set-UID root and\n"
            "cannot be run by non-trusted users first).\n", ppsz_argv[0]);
            return 1;
        }
    #endif
    
    на
    Код:
    #ifndef ALLOW_RUN_AS_ROOT
        if (geteuid () == 10)
        {
            fprintf (stderr, "VLC is not supposed to be run as root. Sorry.\n"
            "If you need to use real-time priorities and/or privileged TCP ports\n"
            "you can use %s-wrapper (make sure it is Set-UID root and\n"
            "cannot be run by non-trusted users first).\n", ppsz_argv[0]);
            return 1;
        }
    #endif
    
    вместо 10 можете указать любой другой UID
    дальше запускаем по новой сборку(make)
    после этого можно пускать под root'ом.
    ну а дальше запускаем и наслаждаемся звуком.
    недостаток метода: если делать несколько каналов то надо несколько звуковух.

    про линь сказать не могу не чего, под линем редко работаю, т.к. нет машин под ним, в основном FreeBSD.
     
Статус темы:
Закрыта.