Настраивается цифровое многоканальное видеозаписывающее устройство, по простому iptv магнитофон или digital multichannel streaming videorecorder based on VideoLAN client.
Возможности возникающие после настройки IPTV на домашнем сервере можно посмотреть в предыдущей теме, здесь же - конкретное решение - цифровой видеорекордер.
Итак, общая схема ЦМВЗУ (viderecorder scheme)
ВАЖНО! Похоже игры с русскими буквами и Upstart закончились, возникают проблемы. Просто переименовать на английский и не мучить бедного.
Имеется несколько пользовательских задач, расположенных в папке ~/.init/ (в домашней директории).
Задачи (Tasks) поименованы на русском языке, вида:
первый.conf
россия.conf
россия2.conf
5канал.conf
нтв.conf
и т. д.
В свете выявленных последних глюков, задачи временно переименованы на английском языке, до нахождения способа обхода глюков.
Каждая задача представляет собой "работу" Upstart, следует ее синтаксису и семантике.
Управление записью-остановкой осуществляется путем посылки сигналов, в терминологии Upstart. Для пользователя, команды выглядят так:
$ запись 5канал
$ запись первый
где "запись" - это псевдоним, определенный в оболочке bash/sh.
Остановка осуществляется системной командой stop:
stop 5канал.
Для управления по расписанию используется CRON. в нем команды выглядят так:
00 08 * * * "start первый"
31 08 * * * "stop первый"
и т.д.
Увы, с русскими буквами в cron оказались трудности, поэтому делаем обходной маневр.
Проблема оказалась не в русских буквах, а в доступности команды start для cron, в указании пути.
00 08 * * * /sbin/start первый
31 08 * * * /sbin/stop первый
либо в указать PATH в начале файла при редактировании с помощью crontab -e .
Общий шаблон пользовательской "работы" по записи видео IPTV.
Common template of Upstart's job.
$ sudo nano ~/.init/вести.conf
#! /bin/bash
# Скрипт для видеозаписи канала Вести (тестовый 60 сек.)
# url канала: rtp://@233.33.210.115:5050
# сервер: микросервер
# Дата изменения: 24 марта 2012
# Особенности:
# Выходной файл создается с датой-временем,
# при использовании русских букв в имени выходного файла
# надо использовать кавычки в команде mv
task
author "Дмитрий. gimmor.blogspot.com"
description "Задача записи видеопотока IPTV телеканала Вести"
manual
exec cvlc -vvv rtp://@233.33.210.115:5050 --sout '#standard{mux=ts,dst=vesti.ts}' --run-time 60 vlc://quit --no-audio
# Выполняется после завершения задачи
post-stop script
OUTPUT_VIDEOFILE="avoska/"`date +%Y.%m.%d-%H.%M.%S`".Вести.тестовый.видеопоток.ts"
mv vesti.ts "$OUTPUT_VIDEOFILE"
end script
# Запуск скрипта по сигналу
# используется неблокирующий сигнал
# пример: initctl emit --no-wait videostart
# пример: initctl emit --no-wait videostop
start on videostart
stop on videostop
start on вести
В результате создания для каждого канала такого файла, с корректировкой url и имени временного файла (у канала Вести dst=vesti.ts) на сервере появляется ЦМВЗУ
Специальные сигналы videostart и videostop служат цели включения/выключения всех каналов сразу.
Команды все запускаются на сервере под обычным пользователем (это ограничение cvlc).
На сервере должна быть настроена русификация консоли.
Команда "запись" определена как псевдоним alias вида:
$ alias запись='initctl emit --no-wait'
Для постоянного использования прописать в конфигурационный файл bash.
echo "alias запись='initctl emit --no-wait'" >> .bashrc
Редактирование расписания
$ crontab -e
Во к примеру (часть crontab), запись новостей первого канала:
00 08 * * * /sbin/start 1ch 2> /tmp/1.cron
31 08 * * * /sbin/stop 1ch 2> /tmp/1s.cron
00 12 * * * /sbin/start 1ch 2> /tmp/1.cron
30 12 * * * /sbin/stop 1ch 2> /tmp/1s.cron
00 21 * * * /sbin/start 1ch 2> /tmp/1.cron
30 21 * * * /sbin/stop 1ch 2> /tmp/1s.cron
При использовании команды at
$ at 09:00
warning: commands will be executed using /bin/sh
> start вести
>
> <EOT>
job 18 at Sun Mar 25 02:12:00 2012
<EOT> символ завершения, нажать Ctrl-D.
$ at -l
Иногда надо для контроля просмотреть правильно ли сформировано задание (из-за русских букв)
И особенность, системные альясы недоступны оказались для cron и at, поэтому вместо них используется прямая команда "start" или "initctl emit --no-wait". C cron вес также проблемы.
Включение поддержки пользовательских задач Upstart. Это необходимо.
Редактируется файл: /etc/dbus-1/system.d/Upstart.conf
В нем пару секций в которых присутствует root надо скопировать тут же и заменить на имя пользователя.
Осторожно! Можно разломать Ubuntu. Если разломалась, надо загрузиться с другого LiveCD и там исправить этот файл.
Замеченное
- выявился баг, когда в имени видеофайла присутствовал символ ":", этот файл нормально не передавался через SAMBA (было преобразование имени в формат DOS 8.3). Исправил на %H.%M.%S
- с русскими буквами, таки случились проблемы, поэтому было принято решение быстренько все переписать на английском.
Выводы
- IPTV на компьютере, очень удобно использовать для мониторинга новостных каналов
- Upstart - великолепная вещь, быстрая в освоении под свои задачи.
На этом пока все.
Ресурсы
- . http://wiki.videolan.org/Documentation:Streaming_HowTo/Receive_and_Save_a_Stream
Возможности возникающие после настройки IPTV на домашнем сервере можно посмотреть в предыдущей теме, здесь же - конкретное решение - цифровой видеорекордер.
Итак, общая схема ЦМВЗУ (viderecorder scheme)
ВАЖНО! Похоже игры с русскими буквами и Upstart закончились, возникают проблемы. Просто переименовать на английский и не мучить бедного.
Имеется несколько пользовательских задач, расположенных в папке ~/.init/ (в домашней директории).
Задачи (Tasks) поименованы на русском языке, вида:
первый.conf
россия.conf
россия2.conf
5канал.conf
нтв.conf
и т. д.
В свете выявленных последних глюков, задачи временно переименованы на английском языке, до нахождения способа обхода глюков.
Каждая задача представляет собой "работу" Upstart, следует ее синтаксису и семантике.
Управление записью-остановкой осуществляется путем посылки сигналов, в терминологии Upstart. Для пользователя, команды выглядят так:
$ запись 5канал
$ запись первый
где "запись" - это псевдоним, определенный в оболочке bash/sh.
Остановка осуществляется системной командой stop:
stop 5канал.
Проблема оказалась не в русских буквах, а в доступности команды start для cron, в указании пути.
00 08 * * * /sbin/start первый
31 08 * * * /sbin/stop первый
либо в указать PATH в начале файла при редактировании с помощью crontab -e .
Общий шаблон пользовательской "работы" по записи видео IPTV.
Common template of Upstart's job.
$ sudo nano ~/.init/вести.conf
#! /bin/bash
# Скрипт для видеозаписи канала Вести (тестовый 60 сек.)
# url канала: rtp://@233.33.210.115:5050
# сервер: микросервер
# Дата изменения: 24 марта 2012
# Особенности:
# Выходной файл создается с датой-временем,
# при использовании русских букв в имени выходного файла
# надо использовать кавычки в команде mv
task
author "Дмитрий. gimmor.blogspot.com"
description "Задача записи видеопотока IPTV телеканала Вести"
manual
exec cvlc -vvv rtp://@233.33.210.115:5050 --sout '#standard{mux=ts,dst=vesti.ts}' --run-time 60 vlc://quit --no-audio
# Выполняется после завершения задачи
post-stop script
OUTPUT_VIDEOFILE="avoska/"`date +%Y.%m.%d-%H.%M.%S`".Вести.тестовый.видеопоток.ts"
mv vesti.ts "$OUTPUT_VIDEOFILE"
end script
# Запуск скрипта по сигналу
# используется неблокирующий сигнал
# пример: initctl emit --no-wait videostart
# пример: initctl emit --no-wait videostop
start on videostart
stop on videostop
start on вести
В результате создания для каждого канала такого файла, с корректировкой url и имени временного файла (у канала Вести dst=vesti.ts) на сервере появляется ЦМВЗУ
Специальные сигналы videostart и videostop служат цели включения/выключения всех каналов сразу.
Команды все запускаются на сервере под обычным пользователем (это ограничение cvlc).
На сервере должна быть настроена русификация консоли.
Команда "запись" определена как псевдоним alias вида:
$ alias запись='initctl emit --no-wait'
Для постоянного использования прописать в конфигурационный файл bash.
echo "alias запись='initctl emit --no-wait'" >> .bashrc
Редактирование расписания
$ crontab -e
Во к примеру (часть crontab), запись новостей первого канала:
00 08 * * * /sbin/start 1ch 2> /tmp/1.cron
31 08 * * * /sbin/stop 1ch 2> /tmp/1s.cron
00 12 * * * /sbin/start 1ch 2> /tmp/1.cron
30 12 * * * /sbin/stop 1ch 2> /tmp/1s.cron
00 21 * * * /sbin/start 1ch 2> /tmp/1.cron
30 21 * * * /sbin/stop 1ch 2> /tmp/1s.cron
При использовании команды at
$ at 09:00
warning: commands will be executed using /bin/sh
> start вести
>
> <EOT>
job 18 at Sun Mar 25 02:12:00 2012
<EOT> символ завершения, нажать Ctrl-D.
$ at -l
Иногда надо для контроля просмотреть правильно ли сформировано задание (из-за русских букв)
И особенность, системные альясы недоступны оказались для cron и at, поэтому вместо них используется прямая команда "start" или "initctl emit --no-wait". C cron вес также проблемы.
Включение поддержки пользовательских задач Upstart. Это необходимо.
Редактируется файл: /etc/dbus-1/system.d/Upstart.conf
В нем пару секций в которых присутствует root надо скопировать тут же и заменить на имя пользователя.
Осторожно! Можно разломать Ubuntu. Если разломалась, надо загрузиться с другого LiveCD и там исправить этот файл.
Замеченное
- выявился баг, когда в имени видеофайла присутствовал символ ":", этот файл нормально не передавался через SAMBA (было преобразование имени в формат DOS 8.3). Исправил на %H.%M.%S
- с русскими буквами, таки случились проблемы, поэтому было принято решение быстренько все переписать на английском.
Выводы
- IPTV на компьютере, очень удобно использовать для мониторинга новостных каналов
- Upstart - великолепная вещь, быстрая в освоении под свои задачи.
На этом пока все.
Ресурсы
- . http://wiki.videolan.org/Documentation:Streaming_HowTo/Receive_and_Save_a_Stream