пятница, 5 октября 2012 г.

Вещание с нескольких DV камер на медиасервер (RTMP протокол)

Для этого нам потребуется доп.ПО: dvswitch, dvsource, dvsilk и ffmpeg

Как правило всё это есть в репозиториях и сложности в установки нет.

1.) Запускаем dvswitch

#!/bin/bash

dv_host="127.0.0.1"
#ip адрес ПК с запущенным dvswitch
dv_port="54321"
#порт который будит слушать dvswitch

dvswitch -h ${dv_host} -p ${dv_port};

exit 0


2.) Подключаем dv камеры, вот тут много "подводных камней".

DV камеру не рекомендуется подключать "на живую" есть шанс что сгорит

Начнем, если Вы планируете подключить только одну dv-камеру то тут всё просто:

#!/bin/bash

dv_host="127.0.0.1"
#ПК с запущенным dvswitch
dv_port="54321"
#порт dvswitch

dvsource-firewire -h ${dv_host} -p ${dv_port};

exit 0


Если у Вас несколько dv-камер, то по документации достаточно добавить параметр -c hex_GUID_dv-камеры

А вот тут начинаются приколы:
I.) Как узнать эти GUID?

grep "firewire_core: created device" /var/log/dmesg

Только нужно учесть что здесь будит не только GUID dv-камер, но и GUID чипов в вашей карты ieee1394, так что не удивляйтесь.
 Так же можно поставить GTK+ программу gscanbus и посмотреть в ней.

II.) Если у вас каждая dv-камера подключена к отдельной плате ieee1394, то проблем тоже нет, указываем hex_guid и всё нормально, но в моём случаи на плате ieee1394 было 2 выхода и чип один. При этом при попытки подключить камеру стандартным методом подключалась только 1 камера и на указание GUID вообще не реагирует!!!
Пришлось извращаться:

 #!/bin/bash

dv_guid="0x0800460103F54296"
#GUID камеры
dv_host="-h 127.0.0.1"
#ПК с dvswitch
dv_port="-p 54321"
#порт dvswitch
dv_fifo="/tmp/"${dv_guid}
#потоковый файл

audio="-ab 96k -f alsa -ac 2 -i pulse -ar 44100"


mkfifo ${dv_fifo};
#создаём потоковый файл

dvgrab -guid ${dv_guid} - | ffmpeg -i - -f dv ${audio} -target pal-dv - > ${dv_fifo}&
#через dvgrab заводим видео в потоковый файл
dvsource-file ${dv_host} ${dv_port} ${dv_fifo};
#подключаем поток к dvswitch

exit 0


Задержка видео примерно 10сек., зато работает))) 


3.) Если нужно подключить web-камеру

#!/bin/bash


dv_host="-h 127.0.0.1" #ПК с dvswitch
dv_port="-p 54321" #порт dvswitch
dev_web="video0"

web_fifo="/tmp/"${dev_web}

mkfifo ${web_fifo};


ffmpeg -f video4linux2 -s vga -r 25 -i /dev/${dev_web} -f s16le -ar 48000 -ac 2 -i /dev/zero -target pal-dv - > ${web_fifo}&



dvsource-file ${dv_host} ${dv_port} ${web_fifo}


exit 0

По аналогии с предыдущем, думаю всё понятно.


 4.) Вещаем собранный поток из dvswitch

#!/bin/bash

dv_host="127.0.0.1";
dv_port="54321";

rtmp="tcp://ip_медиасервера:порт";
kadr="-r 25";
video="-vcodec libx264 -b 200k -vpre slow -s 720x530";
audio="-ab 96k -f alsa -ac 2 -i pulse -ar 44100";
str_name="-metadata streamName=livestream";
#имя нашего потока

dvsink-command -h ${dv_host} -p ${dv_port} -- ffmpeg -i - -f dv ${audio} ${video} -bufsize 20000k ${kadr} ${str_name} -threads 0 -f flv ${rtmp};

exit 0

понедельник, 7 мая 2012 г.

Вставки мультимедийного контента в OOo 3.3

1.) Скачиваем архив и распаковываем https://docs.google.com/open?id=0B4O9WJovBctqSFpad1huUUVhNjA

2.) Копирум в /opt и делаем символьную ссылку для удобства

sudo ln -s /opt/JMF-2.1.1e /opt/JMF

3.) Выполняем и записываем в конец ~/.profile:

export JAVA_HOME=/usr/lib/jvm/java-6-sun
export JMFHOME=/opt/JMF
export CLASSPATH=$JMFHOME/lib/jmf.jar:$JMFHOME/lib/mp3plugin.jar:$JMFHOME/lib/fobs4jmf.jar:$CLASSPATH
export LD_LIBRARY_PATH=$JMFHOME/lib:$LD_LIBRARY_PATH
export PATH=$JAVA_HOME/bin:$JMFHOME/bin:$PATH

4.) Открываем всем доступ
sudo chmod -R 777 /opt/JMF

5.) Запускаем
sudo /opt/JMF/lib/runjmstudio.sh

6.) Перехдим File > Preferences, выбераем Capture device, жмём Detect Capture Devices.
Переходим в Plugins > Codec, в поле теста пишем com.sun.media.codec.audio.mp3.JavaDecoder, жмём Add, и Commit.
Выходим.

7.) Открываем openoffice > сервис > параметры > java > Путь класса > Добавить архив >
  • /opt/JMF/lib/jmf.jar
  • /opt/JMF/lib/multiplayer.jar
  • /opt/JMF/lib/customizer.jar
  • /opt/JMF/lib/multiplayer.jar
  • /opt/JMF/lib/mediaplayer.jar
  • /opt/JMF/lib/mp3plugin.jar

8.) Перзапускаем openoffice

Шаг 5 и 6 необязательны!

Установка проприетарных драйверов Nvidea в Ubuntu


sudo apt-add-repository ppa:ubuntu-x-swat/x-updates
sudo apt-get update
sudo apt-get install nvidia-current

среда, 11 апреля 2012 г.

Запуск GUI-приложения от имени другого пользователя

1.) Способ - самодельный велосипед
 
#!/bin/bash
# Коды завершения
UA_REQUEST=60  # Прервано пользователем
NO_REQUEST=61  # Нет одного или нескольких параметров
NU_REQUEST=62  # Указан несуществующий пользователь
NEH_REQUEST=63  # Не удалось создать папку пользователя
FCXA_REQUEST=64  # Не удалось создать файл авторизации
SUDOFAIL_REQUEST=65 # Ошибка авторизации супер-пользователя
UE_REQUEST=69  # Непредвиденная ошибка
HELP_REQUEST=70  # HELP

четверг, 29 марта 2012 г.

Загрузка прошивки для "безголовых" принтеров

Если система опознала принтер, но он не печатает значит не загрузилась прошивка. 


#!/bin/bash
 printers="1000 1005 1018 1020 p1005
p1006 p1007 p1008 p1505"  
#весь список принтеров можно посмотреть командой sudo getweb. Впишите нужный вам принтер (если его нет) в переменную printers

cd /tmp
for prn in $printers; do
img="sihp${prn}.img"
dl="sihp${prn}.dl"
getweb $prn
if [ -f $img ]; then
arm2hpdl $img > $dl
sudo cp /lib/firmware/hp/$dl /usr/share/foo2zjs/firmware/$dl
rm $img $dl
fi;
done



После этого, выключите и включите принтер. Должен печать


Ещё один способ:
1. установите пакет: hannah-foo2zjs
2. запустите утилиту Система > Администрирование > Foo2ZJS firmware installer и выберите модель принтера
3. выполните комманду sudo cp /lib/firmware/hp/* /usr/share/foo2zjs/firmware


четверг, 22 марта 2012 г.

Слетает тема Gnome

1.) gedit ~/.bash_logout
2.) Пишем:
theme=$(gconftool-2 -g /desktop/gnome/interface/gtk_theme);
echo gtk-theme-name ="'${theme}'" > ~/.gtkrc-2.0

icon=$(gconftool-2 -g /desktop/gnome/interface/icon_theme);
echo gtk-icon-theme-name ="'${icon}'" >> ~/.gtkrc-2.0

3.) Сохроняем файл

Лучше ещё пробублировать
4.) gedit ~/.bashrc

Попторяем шаг 2.) и 3.)

5.) Перзагрузаемся или завершаем сеанс