Форум русскоязычного сообщества Ubuntu


Следите за новостями русскоязычного сообщества Ubuntu в Twitter-ленте @ubuntu_ru_loco

Автор Тема: [РЕШЕНО]VLC демон для вещания видео файлов в сеть  (Прочитано 3560 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн cidldx

  • Автор темы
  • Новичок
  • *
  • Сообщений: 2
    • Просмотр профиля
Вещаю в сеть файлы из плейлиста запускаю просто консольной командой

vlc -vvv playlist.m3u --sout "#transcode:rtp{sdp=rtsp://IP:5544/mystream}"  --sout-keep --loop
задача сделать так чтобы вещание стартовало со стартом машины (иксов нет vlc-nox)


Делаю все примерно как описано http://voroshil.livejournal.com/7385.html

Демон не стартует. в логах пишет
-- logger module started --
main error: no suitable interface module
main error: interface "globalhotkeys,none" initialization failed
dbus error: Failed to connect to the D-Bus session daemon: Unable to autolaunch a dbus-daemon without a $DISPLAY for X11
main error: no suitable interface module
main error: interface "dbus,none" initialization failed
lua error: password not configured
lua: Please specify the password in the preferences.
main error: no suitable interface module
main error: interface "default" initialization failed
-- logger module stopped --
« Последнее редактирование: 29 Апреля 2016, 09:44:05 от Punko »

Оффлайн cidldx

  • Автор темы
  • Новичок
  • *
  • Сообщений: 2
    • Просмотр профиля
Re: VLC демон для вещания видео файлов в сеть
« Ответ #1 : 28 Апреля 2016, 16:57:00 »
Решил самостоятельно. Инструкцию писал самостоятельно.

ПЕРЕД ЗАПУСКОМ НУЖНО СОЗДАТЬ ПАПКИ, ПОЛЬЗОВАТЕЛЯ И ГРУППУ!!! (Это умеет скрипт ./тот самый скрипт/123.sh)
не забываем делать скрипты исполнительными (chmod +x имя)


Ниже пример демона с коментариями для начала работы надо его подправить под себя (к примеру ip:port в разделе # Daemon options)

файл vlcd в папке etc.init.d нужно отредактировать под свои нужды и закинуть в папку /etc/init.d/ и сделать исполнительным (chmod +x)



#!/bin/sh
#
### BEGIN INIT INFO
# Provides:          vlcd
# Required-Start:    $network
# Required-Stop:
# Default-Start:     2 3 4 5
# Default-Stop:      0 6
# Short-Description: VLC trancoding daemon
# Description:       This service provides streaming DVB
#                    channels to network
### END INIT INFO

set -e

. /lib/lsb/init-functions

VLCD_PIDDIR=/var/run/vlcd #рабочая папка(каталог для PID файла должен быть заранее создан)
VLCD_LOGDIR=/var/log/vlcd #папка для логов(заранее создать)
VLCD_USER=vlc #имя пользователя от кого стартует VLC (пользователь должен быть заранее создан но для этого тоже имеется скрипт)
VLCD_GROUP=video #группа которой принадлежит user (так же создается скриптом)
VLM_CONFIG=/etc/vlcd/vlm.cfg #доп конфиги для запуска
VLM_CONF_DIR=/etc/vlcd/vlm.conf.d #из этой папки она берет конфиги для VLM (многопоточный стриминг) (в нашем случае не используется)

[ -r /etc/default/vlcd ] && . /etc/default/vlcd #дефолтный конфиг так же для старта

# Daemon options
VLC_OPTS="-d --pidfile $VLCD_PIDDIR/vlcd.pid /home/sag/playlist.m3u --sout "#transcode:rtp{sdp=rtsp://192.168.0.35:5544/mystream}"  --loop -I telnet --telnet-password 123" #параметры запуска (тут можно прописать ту самую команду как в примере)

# Logging options
VLC_OPTS="$VLC_OPTS --file-logging --logmode text --logfile $VLCD_LOGDIR/vlcd.log" #файл лога

# VLM config

VLC_OPTS="$VLC_OPTS $VLC_EXTRA_OPTS"

start()
{
log_daemon_msg "Starting VLC daemon" "vlcd"
VLCD_TMPCONF="$VLCD_PIDDIR/vlmt.tmp.cfg"
echo "del media" > $VLCD_TMPCONF
if [ -r "$VLM_CONFIG" ] ; then
    echo "load $VLM_CONFIG" >> $VLCD_TMPCONF
fi
if test -d "$VLM_CONF_DIR" ; then
    for cfg in $VLM_CONF_DIR/*.cfg ; do
if [ -r $cfg ]; then
    echo "load $cfg" >> $VLCD_TMPCONF
fi
    done
fi
chown $VLCD_USER:$VLCD_GROUP $VLCD_TMPCONF
VLC_OPTS="$VLC_OPTS --vlm-conf $VLCD_TMPCONF"
start-stop-daemon --start --exec /usr/bin/vlc --group $VLCD_GROUP --chuid $VLCD_USER \
--startas /usr/bin/cvlc --pidfile $VLCD_PIDDIR/vlcd.pid -- $VLC_OPTS
log_end_msg $?
}

stop()
{
        log_daemon_msg "Stopping VLCT daemon" "vlcd"
start-stop-daemon --stop --exec /usr/bin/vlc -R 2 --oknodo --pidfile $VLCD_PIDDIR/vlcd.pid
log_end_msg $?
}
case "$1" in
    start)
start
;;
    restart|force-reload)
stop
sleep 1
start
;;
    stop)
stop
;;
    status)
exit 4
;;
    *)
echo "Usage: /etc/init.d/vlcd {start|stop}"
exit 2
;;
esac
exit 0

Тот самый скрипт. 123.sh
#!/bin/bash

# Создаем системного пользователя с домашним каталогом /var/log/vlcd и запрещаем ему вход
adduser --system --ingroup video --no-create-home --disabled-password --home /var/log/vlcd \
--shell /bin/false vlc

# Создаем каталог для журналов
mkdir /var/log/vlcd
chown vlc:adm /var/log/vlcd
chmod u=rwx,g=rx,o=rx /var/log/vlcd

# Создаем каталог для PID файла
mkdir /var/run/vlcd
chown vlc:adm /var/run/vlcd
chmod u=rwx,g=rxs,o= /var/run/vlcd

# Добавляем vlcd в автозапуск
update-rc.d vlcd defaults

Punko

  • Гость
Re: VLC демон для вещания видео файлов в сеть
« Ответ #2 : 29 Апреля 2016, 09:43:31 »
cidldx, спасибо от всего сообщества, надеюсь, кому-то пригодится. Закрыто.

 

Страница сгенерирована за 0.095 секунд. Запросов: 25.