LinuxForum.Fans
Тема

я отупел, но исправляюсь.

Автор: system-root 26 сообщений 5582 просмотров
#259632

в общем друзья я отупел.
прочёл топик как отупивают другие люди и срочно выделил бюджет под сервер домой.
помогите с ТЗ и задачами.
что уже настроено и работает:

text
bind9
squid3 icap drweb
samba
transmission-daemon autofs yandex.disk
hostapd dhcp3-server
firewall

в планах на завтра

text

mediatomb
zabbix 

железка раздаёт сеть по wifi фильтруя трафик, хранит и качает торрент файлы которые ищет на яндекс диске.
возможно станет DLNA сервером заодно, если осилю перекодирование.


что ещё? чтоб такого туда накрутить чтоб мозг зашевелился?
выглядит эта сволочь кстати так =)

#259646
"system-root" написал:
станет DLNA сервером заодно, если осилю перекодирование

Вот может поможет. То, что у меня сейчас лежит в конф.директории. Нашел где то на просторах интернета. Источника не помню. Что то правил немного. Но "лишь бы работало".... Так разобраться и не выделил время.

Показать

config.xml


<?xml version="1.0" encoding="UTF-8"?>
<config version="2" xmlns="http://mediatomb.cc/config/2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://mediatomb.cc/config/2 http://mediatomb.cc/config/2.xsd\"><!--
Read /usr/share/doc/mediatomb-common/README.gz section 6 for more
information on creating and using config.xml configration files.
-->
<server>
<ui enabled="yes" show-tooltips="yes">
<accounts enabled="no" session-timeout="30">
<account user="mediatomb" password="mediatomb"/>
</accounts>
</ui>
<name>DebianServer</name>
<interface>eth0</interface>
<udn>uuid:50d1fffa-42b9-4703-9133-83c4bdff5f12</udn>
<home>/var/lib/mediatomb</home>
<webroot>/usr/share/mediatomb/web</webroot>
<storage caching="yes">
<sqlite3 enabled="yes">
<database-file>mediatomb.db</database-file>
</sqlite3>
<mysql enabled="no">
<host>localhost</host>
<username>mediatomb</username>
<database>mediatomb</database>
</mysql>
</storage>
<protocolInfo extend="yes"/><!-- For PS3 support change to "yes" --><!--
Uncomment the lines below to get rid of jerky avi playback on the
DSM320 or to enable subtitles support on the DSM units
--><!--
<custom-http-headers>
<add header="transferMode.dlna.org: Streaming" />
<add header="contentFeatures.dlna.org: DLNA.ORG_OP=01;DLNA.ORG_CI=0;DLNA.ORG_FLAGS=01700000000000000000000000000000" />
</custom-http-headers>

<manufacturerURL>redsonic.com</manufacturerURL>
<modelNumber>105</modelNumber>
--><!-- Uncomment the line below if you have a Telegent TG100 --><!--
<upnp-string-limit>101</upnp-string-limit>
-->
<custom-http-headers>
<add header="transferMode.dlna.org: Streaming"/>
<add header="contentFeatures.dlna.org: DLNA.ORG_OP=01;DLNA.ORG_CI=0;DLNA.ORG_FLAGS=01700000000000000000000000000000"/>
</custom-http-headers>
<extended-runtime-options>
<ffmpegthumbnailer enabled="yes">
<thumbnail-size>128</thumbnail-size>
<seek-percentage>5</seek-percentage>
<filmstrip-overlay>yes</filmstrip-overlay>
<workaround-bugs>no</workaround-bugs>
</ffmpegthumbnailer>
<mark-played-items enabled="no" suppress-cds-updates="yes">
<string mode="prepend">*</string>
</mark-played-items>
</extended-runtime-options>
</server>
<filesystem-charset>UTF-8</filesystem-charset>
<metadata-charset>UTF-8</metadata-charset>
<playlist-charset>UTF-8</playlist-charset>
<import hidden-files="no">
<scripting script-charset="UTF-8">
<common-script>/usr/share/mediatomb/js/common.js</common-script>
<playlist-script>/usr/share/mediatomb/js/playlists.js</playlist-script>
<virtual-layout type="builtin">
<import-script>/usr/share/mediatomb/js/import.js</import-script>
<dvd-script>/usr/share/mediatomb/js/import-dvd.js</dvd-script>
</virtual-layout>
</scripting>
<mappings>
<extension-mimetype ignore-unknown="no">
<map from="mp3" to="audio/mpeg"/>
<map from="ogg" to="application/ogg"/>
<map from="asf" to="video/x-ms-asf"/>
<map from="asx" to="video/x-ms-asf"/>
<map from="wma" to="audio/x-ms-wma"/>
<map from="wax" to="audio/x-ms-wax"/>
<map from="wmv" to="video/x-ms-wmv"/>
<map from="wvx" to="video/x-ms-wvx"/>
<map from="wm" to="video/x-ms-wm"/>
<map from="wmx" to="video/x-ms-wmx"/>
<map from="m3u" to="audio/x-mpegurl"/>
<map from="pls" to="audio/x-scpls"/>
<map from="ts" to="video/mpeg"/>
<map from="m2ts" to="video/mpeg"/>
<map from="vob" to="video/mpeg"/>
<map from="wav" to="audio/wav"/>
<map from="mpg" to="video/mpeg"/>
<map from="aac" to="audio/x-aac"/>
<map from="m4a" to="audio/mp4"/>
<!-- <map from="mkv" to="video/x-matroska"/> -->
<map from="mkv" to="video/x-mkv" />
<map from="mov" to="video/x-quicktime"/>
<map from="flv" to="video/x-flv"/>
<map from="divx" to="video/divx"/>
<!-- <map from="avi" to="video/x-msvideo"/>-->
<!-- Uncomment the line below for PS3 divx support -->
<!-- <map from="avi" to="video/divx"/> -->
<!-- Uncomment the line below for D-Link DSM / ZyXEL DMA-1000 -->
<map from="avi" to="video/avi"/>
</extension-mimetype>
<mimetype-upnpclass>
<map from="audio/*" to="object.item.audioItem.musicTrack"/>
<map from="video/*" to="object.item.videoItem"/>
<map from="image/*" to="object.item.imageItem"/>
<map from="application/ogg" to="object.item.audioItem.musicTrack"/>
</mimetype-upnpclass>
<mimetype-contenttype>
<treat mimetype="audio/mpeg" as="mp3"/>
<treat mimetype="application/ogg" as="ogg"/>
<treat mimetype="audio/x-flac" as="flac"/>
<treat mimetype="image/jpeg" as="jpg"/>
<treat mimetype="audio/x-mpegurl" as="playlist"/>
<treat mimetype="audio/x-scpls" as="playlist"/>
<treat mimetype="audio/x-wav" as="pcm"/>
<treat mimetype="audio/L16" as="pcm"/>
<treat mimetype="video/x-msvideo" as="avi"/>
<treat mimetype="video/mp4" as="mp4"/>
<treat mimetype="audio/mp4" as="mp4"/>
<treat mimetype="application/x-iso9660" as="dvd"/>
<treat mimetype="application/x-iso9660-image" as="dvd"/>
<treat mimetype="video/x-matroska" as="mkv"/>
<treat mimetype="audio/x-matroska" as="mka"/>
</mimetype-contenttype>
</mappings>
<online-content><!-- Make sure to setup a transcoding profile for flv -->
<YouTube enabled="no" refresh="28800" update-at-start="no" purge-after="604800" racy-content="exclude" format="flv" hd="no">
<favorites user="mediatomb"/>
<standardfeed feed="most_viewed" time-range="today"/>
<playlists user="mediatomb"/>
<uploads user="mediatomb"/>
<standardfeed feed="recently_featured" time-range="today"/>
</YouTube>
<Weborama enabled="no" refresh="28800" update-at-start="no">
<playlist name="Active" type="playlist" mood="active"/>
<playlist name="Metal" type="playlist">
<filter>
<genres>metal</genres>
</filter>
</playlist>
</Weborama>
<AppleTrailers enabled="no" refresh="43200" update-at-start="no" resolution="640"/>
</online-content>
</import>
<transcoding enabled="yes">
<mimetype-profile-mappings>
<transcode mimetype="video/x-flv" using="vlcmpeg"/>
<transcode mimetype="application/ogg" using="vlcmpeg"/>
<transcode mimetype="application/ogg" using="oggflac2raw"/>
<!-- <transcode mimetype="audio/x-flac" using="oggflac2raw"/>-->
<transcode mimetype="audio/x-flac" using="audio-flac"/>
<transcode mimetype="video/x-matroska" using="video-generic"/>
<transcode mimetype="video/x-msvideo" using="videol-generic"/>
</mimetype-profile-mappings>
<profiles>
<profile name="video-generic" enabled="yes" type="external">
<mimetype>video/mpeg</mimetype>
<accept-url>yes</accept-url>
<first-resource>yes</first-resource>
<hide-original-resource>yes</hide-original-resource>
<accept-ogg-theora>yes</accept-ogg-theora>
<agent command="/usr/bin/transcoder.sh" arguments="%in %out"/>
<buffer size="14400000" chunk-size="512000" fill-size="120000"/>
</profile>
<profile name="audio-flac" enabled="yes" type="external">
<mimetype>audio/mpeg</mimetype>
<accept-url>no</accept-url>
<first-resource>yes</first-resource>
<hide-original-resource>yes</hide-original-resource>
<accept-ogg-theora>no</accept-ogg-theora>
<sample-frequency>44100</sample-frequency>
<audio-channels>2</audio-channels>
<agent command="/usr/bin/flac2mp3_vt.sh" arguments="%in %out"/>
<buffer size="1048576" chunk-size="262144" fill-size="262144"/>
</profile>
<profile name="oggflac2raw" enabled="no" type="external">
<mimetype>audio/L16</mimetype>
<accept-url>no</accept-url>
<first-resource>yes</first-resource>
<accept-ogg-theora>no</accept-ogg-theora>
<agent command="ogg123" arguments="-d raw -o byteorder:big -f %out %in"/>
<buffer size="1048576" chunk-size="131072" fill-size="262144"/>
</profile>
<profile name="vlcmpeg" enabled="yes" type="external">
<mimetype>video/mpeg</mimetype>
<accept-url>yes</accept-url>
<avi-fourcc-list mode="ignore">
<fourcc>XVID</fourcc>
<fourcc>DX50</fourcc>
</avi-fourcc-list>
<first-resource>yes</first-resource>
<accept-ogg-theora>yes</accept-ogg-theora>
<agent command="vlc" arguments="-I dummy %in --sout #transcode{venc=ffmpeg,vcodec=mp2v,vb=4096,fps=25,aenc=ffmpeg,acodec=mpga,ab=192,samplerate=44100,channels=2}:standard{access=file,mux=ps,dst=%out} vlc:quit"/>
<buffer size="14400000" chunk-size="512000" fill-size="120000"/>
</profile>
</profiles>
</transcoding>
</config>

flac2mp3_vt.sh

#!/bin/sh
#flac -d -f -c -s "$1" | lame -S --noreplygain --strictly-enforce-ISO --cbr -b 256 - "$2"
#flac -d -f -c -s "$1" | lame -S --cbr -b 128 - "$2"
#ffmpeg -y -i "$1" -acodec mp2 -ab 320k -ac 2 -f mp3 "$2"
#flac -d -f -c -s "$1" | lame -S --cbr -b 320 - "$2"
#flac -d -f -c -s "$1" | lame -S --cbr -b 128 - "$2"
#gst-launch filesrc location = "$1" ! flacdec ! audioconvert! lame vbr=0 bitrate=320 ! id3mux name=tag v2-tag=true v1-tag=true ! filesink location = "$2"
ffmpeg -y -i "$1" -acodec mp2 -ab 320k -ac 2 -f mp3 "$2"

transcoder.sh

#!/bin/bash
# скрипт для декодирования видео-файлов как самостоятельно так и составе в dlna-сервера
#
# формат вызова:
# # transcoder ВХОДНОЙ_ФАЙЛ ВЫХОДНОЙ_ФАЙЛ
#
# авт. Никишин С.В. 27.12.2010 г.
# в ред. от 31.01.2011

INPUT="$1"
OUTPUT="$2"
MYNAME=${0##*/}
ROOT_DIR=/mediatomb
TMP_DIR=/tmp
FILE_NAME=$(basename "$INPUT")
EXT=${INPUT##*.}
VIERA_ASPECT="16/9"
TV_VIERA_CROP="9/16"
#TV_VIERA_CROP="7/8"
THREADS="4"
NAME_FUNCTION=transcode_$EXT


TRANSCODER_OPTIONS=""
LOG_DIR=""
LOG_FILE=""

function create_log_file() { # создание папки для логов и лог-файла скрипта
#echo "Script = $MYNAME; current user = $USER; input file = $INPUT; output file = $OUTPUT. Starting... " > "$LOG_FILE"
# создание папки для хранения логов
LOG_DIR=$TMP_DIR/$FILE_NAME
if [ ! -d "$LOG_DIR" ]; then
mkdir "$LOG_DIR"
chmod 777 "$LOG_DIR"
else
rm -f "$LOG_DIR"/*
fi

if [ "$USER" = "" ]; then # если пользователя нет
# if [ ! -d $HOME ]; then # если пользователя нет
USER="mediatomb"
HOME="/var/lib/$USER"
#HOME=/var/lib/$USER
fi
LOG_FILE="$LOG_DIR/$MYNAME:$USER.log"

if [ -a "$INPUT" ]; then
status_file_input="exist"
else
status_file_input="not found"
fi
# создание файла для записи лога скрипта
cat - >"$LOG_FILE" <<EOF
script name : $MYNAME
full name input file : $INPUT
file status : $status_file_input
base name input file : ${FILE_NAME}
extention input file : ${INPUT##*.}
full name output file : $OUTPUT
name current user : $USER
home directory : $HOME
log files : $LOG_FILE
EOF
}

function check_runprg() { # проверка работы программы в текущем профиле
# передаваемые параметры
# $1 - имя проверяемой программы
echo "check_runprg() starting" >> "$LOG_FILE"
NAMEPRG=$1
echo " found running program <$NAMEPRG>" >> "$LOG_FILE"
if ! [ $(ps -u mediatomb | grep $NAMEPRG | wc -l) -eq 0 ]; then
echo " program found : killing..." >> "$LOG_FILE"
killall -9 $NAMEPRG
sleep 2
check_runprg $NAMEPRG
#echo " check run $NAMEPRG after command killall: $(ps -u mediatomb | grep $NAMEPRG)" >> "$LOG_FILE"
#exit
else
echo " program not found" >> "$LOG_FILE"
fi
}

function download_file() {
echo "Function = download_file; file name = ${FILE_NAME}. Starting..." >> "$LOG_FILE"
SOURCE_DIR=$ROOT_DIR/trailers.apple.com/thumbnail
SOURCE_FILE=$SOURCE_DIR/$FILE_NAME
WGET_LOG=$LOG_DIR/wget-$FILE_NAME.log
WGET_LIST=$SOURCE_DIR/trailers.list

cd $SOURCE_DIR
#killall -9 wget
if [ -a "$SOURCE_FILE" ]; then
#echo "File $SOURCE_FILE found. Continue downloads..." >> "$LOG_FILE"
#wget -b -c -U QuickTime/7.6.2 "$INPUT" -O $SOURCE_FILE >> "$LOG_FILE"
#wget -b -U QuickTime/7.6.2 "$INPUT" -O $SOURCE_FILE -o "$WGET_LOG" -c
#else
#echo "File $SOURCE_FILE not found. New downloads..." >> "$LOG_FILE"
#wget -b -U QuickTime/7.6.2 "$INPUT" -O $SOURCE_FILE >> "$LOG_FILE"
#wget -b -U QuickTime/7.6.2 "$INPUT" >> "$LOG_FILE"
rm $SOURCE_FILE
fi
echo "$INPUT" >> "$WGET_LIST"
# ! wget -U QuickTime/7.6.2 "$INPUT" -i ./thumbnail/trailers.list -c
# wget -b -U QuickTime/7.6.2 "$INPUT" -O $SOURCE_FILE -o "$WGET_LOG" >> "$LOG_FILE"

# echo "$WGETRC" >> "$LOG_FILE"
## cat $WGETRC >> "$LOG_FILE"
# echo "$INPUT $SOURCE_FILE" >> "$LOG_FILE"
wget "$INPUT" -O $SOURCE_FILE >> "$LOG_FILE"
INPUT=$SOURCE_FILE
# echo "sleep" >> "$LOG_FILE"
# sleep 30
# check_runprg wget
}


function WH_fixed { # установка фиксированных разрешений выходного сигнала
case "$EXT" in
flv) w=800; h=600; ;;
mp4) w=800; h=600; ;;
mtvg) w=800; h=600; ;;
m2ts) w=1920; h=1050; ;;
*) w=720; h=576; ;; # параметры для файлов с неизвестным расширением
esac
echo "Funtion = WH_fixed. Extention = $EXT. W = $w. H = $h" >> "$LOG_FILE"
#wn=$(( $h * 1920 / 1050 ))
}

function WH_avinfo { # установка разрешений выходного сигнала на основе программы aviinfo
if [ -x /usr/bin/avinfo ]; then
SCALE_INPUT=$(avinfo "$INPUT" | grep video) # получение информации об видео-файле
else
WH_fixed
fi
if [ "$SCALE_INPUT" == "" ]; then # если информации от файла не получено
WH_fixed
else # если "файл сообщил" размеры картинки, то их и устанавливаем
echo "ready format from avinfo" >> $LOG_FILE
w=$(echo $SCALE_INPUT | awk -F "x" '{print $1}' | awk -F ":" '{print $2}' | awk -F " " '{if(NF<2) print $1; else print $2}')
h=$(echo $SCALE_INPUT | awk -F "x" '{print $2}' | awk -F " " '{print $1}')
fi
}

function WH_mediainfo { # установка разрешений выходного сигнала на основе программы mediainfo
if [ -x /usr/bin/mediainfo ]; then
echo "ready format from mediainfo" >> $LOG_FILE
w=$(mediainfo "$INPUT" | grep "Width" | awk -F " " '{print $3}')
h=$(mediainfo "$INPUT" | grep "Height" | awk -F " " '{print $3}')
else
WH_avinfo
fi
}

#
# Блок функций транскодеров
#

function transcode_vlc { # функция декодирования фалов программой VLC
echo "Function = transcode_vlc; file input = $INPUT. Starting..." >> "$LOG_FILE"
echo "" >> "$LOG_FILE"
#LOG_VLC=$LOG_DIR/transcode_vlc.log
#touch $LOG_VLC
#chmod 777 $LOG_VLC
#arguments="#transcode{venc=ffmpeg,vcodec=mp2v,vb=4096,fps=25,aenc=ffmpeg,acodec=mpga,ab=192,samplerate=44100,channels=2}:standard{access=file,mux=ps,dst=$OUTPUT}"
killall -9 vlc
sleep 3
/usr/bin/vlc -I dummy "$INPUT" --logfile="$LOG_FILE" --log-verbose=3 --file-logging\
--sout "#transcode{venc=ffmpeg,vcodec=mp2v,vb=4096,fps=25,aenc=ffmpeg,acodec=mpga,ab=192,samplerate=44100,channels=2,threads=3}:standard{access=file,mux=ps,dst=$OUTPUT} vlc:quit"
# --sout "#transcode{venc=ffmpeg,vcodec=mp2v,vb=4096,fps=25,aenc=ffmpeg,acodec=mpga,ab=192,samplerate=44100,channels=2,threads=1}:standard{access=file,mux=ps,dst=$OUTPUT} vlc:quit"
#vlc -I dummy "$INPUT" --logfile=/tmp/vlc.log --log-verbose=3 --file-logging --sout "#transcode{venc=ffmpeg,vcodec=mp2v,vb=2048,fps=25,aenc=ffmpeg,acodec=mpga,ab=48,samplerate=44100,channels=2}:standard{access=file,mux=ps,dst=$OUTPUT} vlc:quit"
#vlc -I dummy "$INPUT" --sout-standard-dst=$OUTPUT

#vlc $INPUT\
# --intf dummy\
# --sout-transcode-venc ffmpeg\
# --sout-transcode-vcodec mp2v\
# --sout-transcode-vb 4096\
# --sout-transcode-fps 25\
# --swscale-mode 2
# --sout-transcode-aenc ffmpeg\
# --sout-transcode-acodec mpga\
# --sout-transcode-ab 192\
# --sout-transcode-channels 2\
# --sout-transcode-samplerate 44100\
# --sout-standard-access file\
# --sout-standard-mux ps\
# --sout-standard-dst $OUTPUT\
# --daemon\
# --logfile /tmp/vlc.log\
# --log-verbose 1\
# --file-logging\
# vlc://quit

# --dummy-quiet
# --dummy-save-es\
# --sout-transcode-alang ru\


# exec 6>&1
# exec > $OUTPUT
# vlc $INPUT
# exec 1>&6 6>&-
}

function transcode_mencoder() { # функция декодирования программой MENCODER
# передаваемые параметры
# $1 - профиль трансокдирования совпадающий с раширением файла
echo "transcode_mencoder() starting" >> "$LOG_FILE"
TRANSCODER="mencoder"
LOG_TRANSCODER="$LOG_DIR/$TRANSCODER:$USER.log"
check_runprg $TRANSCODER
create_mencoder_conf $1
/usr/bin/mencoder $TRANSCODER_OPTIONS "$INPUT" >"$LOG_TRANSCODER"
}

function create_mencoder_conf() { # функция создания конфигурации запуска MENCODER
echo "create_mencoder_conf() starting" >> "$LOG_FILE"
echo " параметр функции : <$1>" >> "$LOG_FILE"
case $1 in # создание профилей декодирования по кодовому слову (расширению файла)

mkv)
TRANSCODER_OPTIONS="\
-aid 4352 \
-alang ru \
-channels 2 \
-vf expand=:::::$VIERA_ASPECT,scale,spp=7,harddup \
-af lavcresample=48000,volnorm,extrastereo \
-srate 48000 \
-lavcopts vcodec=mpeg2video:vrc_buf_size=1835:vrc_maxrate=25000:vbitrate=15000:keyint=15:vstrict=0:acodec=ac3:abitrate=384:autoaspect=yes:threads=3 \
-oac lavc \
-ovc lavc \
-of mpeg \
-mpegopts format=dvd:tsaf \
-ofps 24 \
-o $OUTPUT \
-msglevel all=5 \
" ;;

wmv)
TRANSCODER_OPTIONS="\
-vf expand=:::::4/3,scale,spp=6,harddup \
-af lavcresample=48000,hrtf,volnorm \
-srate 48000 \
-lavcopts vcodec=mpeg2video:vrc_buf_size=1835:vrc_maxrate=9800:vbitrate=5000:keyint=15:vstrict=0:acodec=ac3:abitrate=192:autoaspect=yes:threads=3 \
-demuxer lavf \
-lavfdopts probesize=128
-oac lavc \
-ovc lavc \
-of mpeg \
-mpegopts format=dvd:tsaf \
-aid 4352 \
-alang ru \
-ofps 24 \
-o $OUTPUT \
-msglevel all=5 \
" ;;

flv)
TRANSCODER_OPTIONS="\
-aid 4352 \
-alang ru \
-channels 2 \
-vf expand=:::::$VIERA_ASPECT,scale,spp=7,harddup \
-af lavcresample=48000,volnorm -srate 48000 \
-lavcopts vcodec=mpeg2video:vrc_buf_size=1835:vrc_maxrate=9800:vbitrate=5000:keyint=15:vstrict=0:acodec=ac3:abitrate=256:autoaspect=yes:threads=3 \
-oac lavc \
-ovc lavc \
-of mpeg \
-mpegopts format=dvd:tsaf \
-ofps 24 \
-o $OUTPUT \
-msglevel all=5 \
" ;;

mp4)
TRANSCODER_OPTIONS="\
-oac lavc \
-ovc lavc \
-of mpeg \
-mpegopts format=dvd:tsaf \
-aid 4352 \
-alang ru \
-vf expand=:::::$VIERA_ASPECT,scale,spp=7,harddup \
-af lavcresample=48000,volnorm -srate 48000 \
-lavcopts vcodec=mpeg2video:vrc_buf_size=1835:vrc_maxrate=9800:vbitrate=5000:keyint=15:vstrict=0:acodec=ac3:abitrate=256:autoaspect=yes:threads=3 \
-ofps 24 \
-o $OUTPUT \
-msglevel all=5 \
" ;;

slide)
TRANSCODER_OPTIONS="\
-mf w=1600:h=1200:fps=1/3:type=jpg \
-ovc lavc \
-lavcopts vcodec=mjpeg \
-o $OUTPUT \
-msglevel all=5 \
" ;;
#-oac copy \
#-lavcopts vcodec=mjpeg::mbd=2:trell \
#-sws 10 \

mov)
TRANSCODER_OPTIONS="\
-aid 4352 \
-alang ru \
-channels 2 \
-vf expand=:::::$VIERA_ASPECT,scale,spp=7,harddup \
-af lavcresample=48000,volnorm,extrastereo \
-srate 48000 \
-lavcopts vcodec=mpeg2video:vrc_buf_size=1835:vrc_maxrate=10000:vbitrate=5000:keyint=15:vstrict=0:acodec=ac3:abitrate=192:autoaspect=yes:threads=3 \
-oac lavc \
-ovc lavc \
-of mpeg \
-mpegopts format=dvd:tsaf \
-ofps 24 \
-o $OUTPUT \
-msglevel all=5 \
" ;;

m4v)
TRANSCODER_OPTIONS="\
-aid 4352 \
-alang ru \
-channels 2 \
-vf expand=:::::$VIERA_ASPECT,scale,spp=7,harddup \
-af lavcresample=48000,volnorm,extrastereo \
-srate 48000 \
-lavcopts vcodec=mpeg2video:vrc_buf_size=1835:vrc_maxrate=10000:vbitrate=5000:keyint=15:vstrict=0:acodec=ac3:abitrate=192:autoaspect=yes:threads=3 \
-oac lavc \
-ovc lavc \
-of mpeg \
-mpegopts format=dvd:tsaf \
-ofps 24 \
-o $OUTPUT \
-msglevel all=5 \
" ;;

ts)
# опции при кодировании из интернет в поток mencoder не работают !
TRANSCODER_OPTIONS="\
-aid 4352 \
-alang ru \
-channels 2 \
-vf expand=:::::$VIERA_ASPECT,scale,spp=7,harddup \
-af lavcresample=48000,volnorm,extrastereo \
-srate 48000 \
-lavcopts vcodec=mpeg2video:vrc_buf_size=1835:vrc_maxrate=9800:vbitrate=5000:keyint=15:vstrict=0:acodec=ac3:abitrate=256:autoaspect=yes:threads=3 \
-oac lavc \
-ovc lavc \
-of mpeg \
-mpegopts format=dvd:tsaf \
-ofps 25 \
-o $OUTPUT \
-msglevel all=5 \
" ;;

asf)
TRANSCODER_OPTIONS="\
-aid 4352 \
-alang ru \
-channels 2 \
-cache 10240 \
-cache-min 5 \
-vf expand=:::::$VIERA_ASPECT,scale,spp=7,harddup \
-af lavcresample=48000,volnorm,extrastereo \
-srate 48000 \
-lavcopts vcodec=mpeg2video:vrc_buf_size=1835:vrc_maxrate=25000:vbitrate=15000:keyint=15:vstrict=0:acodec=ac3:abitrate=256:autoaspect=yes:threads=3 \
-oac lavc \
-ovc lavc \
-of mpeg \
-mpegopts format=dvd:tsaf \
-ofps 25 \
-o $OUTPUT \
-msglevel all=5 \
" ;;

*)
#NAME_FILE_CONFIG="$HOME/.mplayer/mencoder.conf"
NAME_FILE_CONFIG="$MYHOME/.mplayer/mencoder.conf"
HOME=/var/lib/mediatomb
echo " NAME_FILE_CONFIG = $NAME_FILE_CONFIG" >> "$LOG_FILE"
echo " HOME = $HOME" >> "$LOG_FILE"
# для получения информации о параметрах файла конфигурации mencoder.conf смотри статью http://itkare.ru/Mencoder.conf
HEAD_MENCODER_CONF="файл конфигурации Mencoder для файла $INPUT"
cat - >"$NAME_FILE_CONFIG" <<EOF
# $HEAD_MENCODER_CONF
vf=expand=:::::$VIERA_ASPECT,scale,spp=5,harddup
af=lavcresample=48000,volnorm
srate=48000
lavcopts=vcodec=mpeg2video:vrc_buf_size=1835:vrc_maxrate=9800:vbitrate=5000:keyint=15:vstrict=0:acodec=ac3:abitrate=96:autoaspect=yes:threads=3
oac=lavc=yes
ovc=lavc=yes
of=mpeg=yes
mpegopts=format=dvd:tsaf=yes
aid=4352
alang=ru
ofps=24
o=$OUTPUT
msglevel=all=5
EOF
echo " Неверное обращение к функции - отсутствует параметр $1. Присвоены параметры по умолчанию." >> "$LOG_FILE"
mencoder_VIDEO_FILTERS="-vf expand=:::::$VIERA_ASPECT,scale,spp=6,harddup"
mencoder_AUDIO_FILTERS="-af lavcresample=48000,volnorm -srate 48000"
mencoder_LAVC_OPTIONS="-lavcopts vcodec=mpeg2video:vrc_buf_size=1835:vrc_maxrate=9800:vbitrate=5000:keyint=15:vstrict=0:acodec=ac3:abitrate=224:autoaspect=yes:threads=$THREADS"
#exit 1
;;
esac
}


function transcode_ffmpeg() { # функция декодирования программой FFMPEG
# передаваемые параметры
# $1 - профиль трансокдирования совпадающий с раширением файла
echo "transcode_ffmpeg() starting" >> "$LOG_FILE"
TRANSCODER="ffmpeg"
LOG_TRANSCODER="$LOG_DIR/$TRANSCODER:$USER.log"
check_runprg $TRANSCODER
create_ffmpeg_conf $1
/usr/bin/ffmpeg $TRANSCODER_OPTIONS "$OUTPUT" 2> "$LOG_TRANSCODER"
#/usr/bin/ffmpeg -threads 3 -aspect 16:9 -vf "scale=1920:-1" -i "$INPUT" $arguments -r 25 -target dvd $DEBUG_LEVEL "$OUTPUT" 2> "$LOG_TRANSCODER"

#ffmpeg -i "$INPUT" -max_delay 500000 -f avi -y "$OUTPUT"
}

function create_ffmpeg_conf() { # функция создания конфигурации запуска FFMPEG
# передаваемые параметры
# $1 - профиль трансокдирования совпадающий с раширением файла
echo "create_ffmpeg_conf() starting" >> "$LOG_FILE"
echo " параметр функции : <$1>" >> "$LOG_FILE"
case $1 in # создание профилей декодирования по кодовому слову (расширению файла)

mkv)
TRANSCODER_OPTIONS="\
-threads 3 \
-aspect 16:9 \
-vf "scale=1920:-1" \
-i "$INPUT" \
-r 25 \
-target dvd \
-loglevel debug \
" ;;

ts)
TRANSCODER_OPTIONS="\
-threads 3 \
-i "$INPUT" \
-vf "crop=in_w:$TV_VIERA_CROP*in_h,scale=1920:-1" \
-muxpreload 5 \
-muxdelay 10 \
-r 25 \
-target dvd \
-ac 2 \
-loglevel debug \
-y \
" ;;

#-aspect 16:9 \
#-vf "scale=1920:-1; cropdetect" \
#-vf "cropdetect=16:9" \
#crop=2/3*in_w:2/3*in_h" \


*)
echo " Неверное обращение к функции - отсутствует или неправильный параметр <$1>. Присвоены параметры по умолчанию." >> "$LOG_FILE"
TRANSCODER_OPTIONS="\
-threads 3 \
-aspect 16:9 \
-vf "scale=1920:-1" \
-i "$INPUT" \
-r 25 \
-target dvd \
-loglevel debug \
-y \
"

# -loglevel verbose
# -max_delay 500000
# -f avi -y "$OUTPUT"

;;
esac
}



function transcode_null() { # функция отсуствия декодирования файлов
echo "Function = transcode_null; file input = $INPUT; file output = $OUTPUT. Starting..." >> "$LOG_FILE"
cp "$INPUT" "$OUTPUT"
}


#
# Блок функций выбора кодировщиков для зарегистрированных расширений
#

transcode_mkv() { # функция декодирования файлов mkv
echo "transcode_mkv() starting" >> "$LOG_FILE"
transcode_mencoder mkv
# transcode_ffmpeg
}

transcode_wmv() { # функция декодирования файлов wmv
echo "Function = transcode_wmv. Extention = ${INPUT##*.}. Starting..." >> "$LOG_FILE"
transcode_mencoder wmv
#transcode_ffmpeg
#transcode_vlc
}

transcode_flv() {
echo "Function = transcode_flv; extention = ${INPUT##*.}. Starting..." >> "$LOG_FILE"
transcode_mencoder flv
#arguments=""
#transcode_ffmpeg
}

transcode_mp4() {
echo "Function = transcode_mp4; extention = ${INPUT##*.}. Starting..." >> "$LOG_FILE"
transcode_mencoder mp4
#transcode_ffmpeg
}

transcode_avi() {
echo "Function = transcode_avi; extention = ${INPUT##*.}. Starting... " >> "$LOG_FILE"
arguments=""
#transcode_ffmpeg
#transcode_null
transcode_vlc

#VIDEO_FILTERS="-vf expand=:::::16/9,scale,spp=6,harddup"
#AUDIO_FILTERS="-af lavcresample=48000,volnorm -srate 48000"
#LAVC_OPTIONS="-lavcopts vcodec=mpeg2video:vrc_buf_size=1835:vrc_maxrate=9800:vbitrate=5000:keyint=15:vstrict=0:acodec=ac3:abitrate=224:autoaspect=yes:threads=4"
#arguments="-oac lavc -ovc lavc -of mpeg -mpegopts format=dvd:tsaf -aid 4352 -alang ru $VIDEO_FILTERS $AUDIO_FILTERS $LAVC_OPTIONS -ofps 25 -o $OUTPUT"
#transcode_mencoder

}

transcode_ts() { # транскодирование видео-потока интернет-телевидения
echo "transcode_ts()" >> "$LOG_FILE"
#INPUT="http://youlike.video37.ru:2103/video/$FILE_NAME";
INPUT=$(cat "$INPUT");
echo " read video stream (replace input file name) from $INPUT" >> "$LOG_FILE"
# transcode_mencoder ts
transcode_ffmpeg ts

# TRANSCODER="ffmpeg"
# LOG_TRANSCODER="$LOG_DIR/$TRANSCODER:$USER.log"
# check_runprg $TRANSCODER
# /usr/bin/ffmpeg -i "$INPUT" -threads 3 -target dvd -r 25 -y "$OUTPUT" 2> "$LOG_TRANSCODER"
#wget "$INPUT" -o "$WGET_LOG" -O - | ffmpeg -i pipe:0 -r 25 -target dvd "$OUTPUT" 2> "$LOG_TRANSCODER"
#wget "$INPUT" -o $WGET_LOG -O - | ffmpeg -i - -f avi -y "$OUTPUT"
}

transcode_mov() { # транскодирование видео файлов mov
# с поддержкой воспроизведения их из интернет (с trailers.apple.com)
echo "transcode_mov() starting" >> "$LOG_FILE"
if [ $(echo "$INPUT" | awk -F ":" '{print $1}') = "http" ]; then # если входящий файл находится в интернет
TRANSCODER="mencoder"
LOG_TRANSCODER="$LOG_DIR/$TRANSCODER:$USER.log"
check_runprg $TRANSCODER; # удаление зависших версий $TRANSCODER
create_mencoder_conf mov

DOWNLOADER="wget"
WGET_LOG=$LOG_DIR/$DOWNLOADER:$USER.log
check_runprg $DOWNLOADER; # удаление зависших версий $DOWNLOADER
sleep 1

# загружаем поток из интернет в STDOUT и создаём канал для его декодирования
$DOWNLOADER -U QuickTime/7.6.2 "$INPUT" -o $WGET_LOG -O - | $TRANSCODER $TRANSCODER_OPTIONS - >"$LOG_TRANSCODER"
else
transcode_mencoder mov
#$TRANSCODER $arguments "$INPUT" > "$LOG_TRANSCODER"
fi
}

transcode_m4v() { # транскодирование видео файлов m4v
# с поддержкой воспроизведения их из интернет (с trailers.apple.com)
echo "transcode_m4v() starting" >> "$LOG_FILE"
if [ $(echo "$INPUT" | awk -F ":" '{print $1}') = "http" ]; then # если входящий файл находится в интернет
TRANSCODER="mencoder"
LOG_TRANSCODER="$LOG_DIR/$TRANSCODER:$USER.log"
check_runprg $TRANSCODER; # удаление зависших версий $TRANSCODER
create_mencoder_conf m4v

DOWNLOADER="wget"
WGET_LOG=$LOG_DIR/$DOWNLOADER:$USER.log
check_runprg $DOWNLOADER; # удаление зависших версий $DOWNLOADER
sleep 1

# загружаем поток из интернет в STDOUT и создаём канал для его декодирования
$DOWNLOADER -U QuickTime/7.6.2 "$INPUT" -o $WGET_LOG -O - | $TRANSCODER $TRANSCODER_OPTIONS - >"$LOG_TRANSCODER"
else
transcode_mencoder m4v
fi
}

transcode_asf() {
echo "transcode_asf() starting..." >> "$LOG_FILE"
transcode_mencoder asf
#transcode_ffmpeg
}

transcode_wav() {
local input="$1"
local output="$2"
ffmpeg -i "$input" -f wav -y "$output"
}

transcode_dvd() {
local input="$1"
local output="$2"
ffmpeg -i "$input" -target dvd -y "$output"
}

transcode_matroska() { # Function to transcode matroska files to dvd compatible format
local input="$1"
local output="$2"
local alang="$3"
local slang="$4"

# Default to english if languages are not set
[ "$alang" ] || alang="eng"
[ "$slang" ] || slang="eng"

# Use mencoder if available, else fall back to using ffmpeg.
# Transcoding using ffmpeg will not include subtitles.
if which mencoder >/dev/null 2>&1; then
mencoder "$input" -oac lavc -ovc lavc -of mpeg -mc 0 -noskip \
-lavcopts vcodec=mpeg2video:vbitrate=6000:acodec=ac3:abitrate=448 \
-vf harddup -alang "$alang" \
-slang "$slang" -font 'Bitstream Vera Sans' \
-o "$output"
else
ffmpeg -alang "$alang" -slang "$slang" -i "$input" -target dvd \
-y "$output"
fi
}

transcode_mp3() { # транскодирование аудио файлов mp3
echo "Function = transcode_mp3; extention = ${INPUT##*.}. Starting..." >> "$LOG_FILE"
TRANSCODER="mencoder"
echo "file input = $INPUT, file input = $OUTPUT" >> "$LOG_FILE"
check_runprg $TRANSCODER
LOG_TRANSCODER="$LOG_DIR/$TRANSCODER:$USER.log"
DEBUG_LEVEL="-msglevel all=5"
PATCH_MP3=$(dirname "$INPUT" | sed "s/ /\\\ /g")
NAME_MP3=$(basename "$INPUT")
arguments="-mf w=1600:h=1200:fps=1/3:type=jpg -ovc lavc -lavcopts vcodec=mpeg4:mbd=2:trell -oac copy -o $OUTPUT $DEBUG_LEVEL"
/usr/bin/mencoder "mf://$PATCH_MP3/*jpg" $arguments -audiofile "$INPUT"
}

transcode_slide() {
echo "Function = transcode_slide; extention = ${INPUT##*.}. Starting..." >> "$LOG_FILE"
DIR_SLIDE=$(dirname "$INPUT" | sed "s/ /\\\ /g" | sed "s/)/\\\)/g" | sed "s/(/\\\(/g")
NAME_FILE=$(basename "$INPUT")
NAME_MP3=$(cat "$INPUT")
#INPUT="mf://$DIR_SLIDE/*[jJ][pP][gG]"
INPUT="mf://*.JPG"
#INPUT="mf://@$INPUT"

cd $LOG_DIR
echo "$DIR_SLIDE"
sleep 3
cd "$DIR_SLIDE"
ls *.[jJ][pP][gG] > $LOG_DIR/spisok
#ls "$DIR_SLIDE/*.[jJ][pP][gG]" > $LOG_DIR/spisok
#cat $LOG_DIR/spisok
#sleep 3
for file in $LOG_DIR/spisok; do
convert "$file" -resize "1600x1200" - | convert -background "#000000" - -extent "1600x1200" "$(basename '$file').JPG"
#convert $f -geometry 640x480> -quality 90% thumbs/${f%%JPG}
done

# transcode_mencoder slide
#transcode_ffmpeg
}

transcode_scr() {
echo "transcode_scr() starting" >> "$LOG_FILE"
TRANSCODER="ffmpeg"
#ffmpeg -f x11grab -r 25 -s wxga -i :0.0 $OUTPUT
LOG_TRANSCODER="$LOG_DIR/$TRANSCODER:$USER.log"

#echo "" >> "$LOG_FILE"
#LOG_FFMPEG=$LOG_DIR/transcode_ffmpeg.log
#touch $LOG_FFMPEG
#chmod 777 $LOG_FFMPEG
#killall -9 ffmpeg
#sleep 2

#/usr/bin/ffmpeg -f x11grab -i :0.0 -r 25 -s wxga -target dvd -loglevel debug "$OUTPUT" 2> "$LOG_TRANSCODER"
ffmpeg -f x11grab -i localhost:0.0 -r 25 -s wxga -loglevel debug "$OUTPUT" 2> "$LOG_TRANSCODER"
#ffmpeg -i "$INPUT" -max_delay 500000 -f avi -y "$OUTPUT"
}


#
# Старт скрипта
#

create_log_file
if type $NAME_FUNCTION >/dev/null 2>&1; then # если функция (расширение) в скрипте зарегистрировано
#echo exist
${NAME_FUNCTION} # запускаем именно её
else
#echo no
transcode_vlc # иначе запускаем транскодер по умолчанию
fi

echo "script $MYNAME exit. " >> "$LOG_FILE"
exit 0



case "$EXT" in
flv) transcode_flv; ;;
mkv) transcode_mkv; ;;
wmv) transcode_wmv; ;;
avi) transcode_avi; ;;
mp3) transcode_mp3; ;;
slide) transcode_slide; ;;
mp4) transcode_mp4; ;;
avit) transcode_mkv; ;;
ts) transcode_ts; ;;
scr) transcode_scr; ;;
m2ts) transcode_mkv; ;;
mov) transcode_mov; ;;
m4v) transcode_m4v; ;;
asf) transcode_asf; ;;
#*) transcode_null; ;;
*) transcode_vlc; ;;
esac

exit 0







# пример разбора параметров кмонадной строки

USAGE="
This script is used by MediaTomb for transcoding support. It can also serve as
a script to transcode various files in a format suitable for streaming directly.

Synopsis:
transcoder [TRANSCODE FUNCTION OPTION] [GENERIC OPTIONS]

Generic Options:
-h, --help Display this help message.
-i, --input Input file that is meant to be transcoded.
-o, --output Output file that will be read back by MediaTomb.
--audio-lang Specify ISO 639 language code to use for audio.
--subtitle-lang Specify ISO 639 language code to use for subtitles.

Transcode Function Options (one is required):
--video-common Perform generic video transcoding.
--audio-common Perform generic audio transcoding.
--transcode-matroska Used in transcoding matroska files.
"


while [ "$#" -gt "0" ]
do
case "$1" in
-i|--input)
INPUT="$2"
shift; shift;
;;
-o|--output)
OUTPUT="$2"
shift; shift;
;;
--video-common)
USE_VIDEO_COMMON=1
shift
;;
--audio-common)
USE_AUDIO_COMMON=1
shift
;;
--transcode-matroska)
USE_TRANSCODE_MATROSKA=1
shift
;;
--audio-lang)
ALANG="$2"
shift; shift;
;;
--subtitle-lang)
SLANG="$2"
shift; shift;
;;
-h|--help|*)
echo "${USAGE}"
exit 1
;;
esac
done

# Perform specified function
if [ $USE_VIDEO_COMMON ]; then
video_common "$INPUT" "$OUTPUT"
elif [ $USE_AUDIO_COMMON ]; then
audio_common "$INPUT" "$OUTPUT"
elif [ $USE_TRANSCODE_MATROSKA ]; then
transcode_matroska "$INPUT" "$OUTPUT" "$ALANG" "$SLANG"
else
# Must specify one transcoding function
echo "${USAGE}"
exit 1
fi

#259649

Сделай своё облако, например с помощью этого http://owncloud.org/
Сделай автоматический бэкап.
Ну HTTP и FTP сервера.
Добавь вебкамеру и сделай видеоконтроль за чем-нибудь (видеоглазок входной двери например), для начала при помощи motion.

Ещё интересно сколько эта штука потребляет электричества?
Настрой отправку автоматических почтовых сообщений по разным событиям.

#259651
"system-root" написал:
возможно станет DLNA сервером заодно, если осилю перекодирование.

Перекодирование нужно, если целевая «железяка» не поддерживает формат файлов, имеющихся на dlna-сервере, либо имеются ограничения по «железу» на компьютере-приёмнике медиа контента.

#259707
"system-root" написал:
выглядит эта сволочь кстати так =)

А что у неё внутри?

#259761
"Lupo Alberto" написал:
А что у неё внутри?

Железо. Инфа 146%

#259797
Lupo Alberto написал:
[quote="system-root"]выглядит эта сволочь кстати так =)

А что у неё внутри?[/quote]

#259799

А мне ещё дедушко родный всегда говорил
(дедушко закончил Ленинградскую ВПШ в 1949 г., и был освобождённым парторгом на строительстве Оленегорского ГОКа,
за что и получил в 55-ом годе орден Ленина) -
кажный интиллихентный мушшина должен иметь свою личную и именную кувалду (а всё остальное - приложится).

#259801
"voral" написал:
transcoder.sh
"voral" написал:
авт. Никишин С.В. 27.12.2010 г

г-н Никишин С.В. тот ещё упоротый быдлокодер, не распарсил это творение с двух набегов.

#259809
"system-root" написал:
г-н Никишин С.В. тот ещё упоротый быдлокодер, не распарсил это творение с двух набегов.

Ну уровень кодера и упоротости я не знаю :) Для меня было главным что сервер заработал. И с ноября месяца смотрю на телеке фиьмы с компа. Разобраться в деталях как всегда времени не хватает.

#260073

system-root, меня интересует, какое именно «железо» (материнка, процессор и т. п.) внутри.

#260076

Да-да, нам интересен вывод команд:
cat /proc/cpuinfo
lspci
lsusb
dmidecode
dmesg

:)

#260104

ну давайте расскажу как такой приготовить:
ASUS AT5NM10T-I CPU on board
Корпус Thermaltake Element Q Black-Red 200W
Жесткий диск 1Tb Seagate ST1000DL002
Память SO-DIMM DDR3 2048 Mb (pc-8500) х2шт
Система охлаждения HDD Scythe Himuro *1
Система охлаждения HDD Scythe Ita Kaze *2
Беспроводная сетевая карта ASUS PCE-N10

*1 - ставиться на место DVD
*2 - ставиться на специальное место сбоку предназначенное для жесткого диска, на выдув. на фото видно.


CPU Temperature: +29.0°C (high = +60.0°C, crit = +95.0°C)
MB Temperature: +37.0°C (high = +45.0°C, crit = +75.0°C)
/dev/sda: ST1000DL002-9TT153: 33°C

прикрутил SARG, bindgpraph, Zabbix, в общем было бы классно иметь одну вебморду ко всему этому. жаль что не знаю таких пакетов.

пока в планах
1) раскидать логи всех демонов в разные файлы, чтоб не рыться в syslog\daemon.log
2) установить агрегатор логов
3) написать скрипты для сбора температур
4) воткнуть эти скрипты в Zabbix, настроить алармы и действия при нештатных ситуациях
5) буду ставить релей почтовик с вебмордой (?наркаман штоле?)
6) ну может удалю почтовик потом..

давайте идеи ребят?

#260106

Я выше накидал идей.

#260109
"system-root" написал:
1) раскидать логи всех демонов в разные файлы, чтоб не рыться в syslog\daemon.log

metalog

"system-root" написал:
2) установить агрегатор логов

logwatch

#260112
"system-root" написал:
ASUS AT5NM10T-I CPU on board

HDMI нет? А как тогда видео смотреть? *SCRATCH*

#260113
"Lupo Alberto" написал:
logwatch

где-то года 2 назад писал пост об этом здесь, да поиск изменили, найти свои сообщения не могу =)
блин часть моих поисковых запросов попадало на мои же посты, я читал и офигивал просто

#260114
"Vascom" написал:
Ещё интересно сколько эта штука потребляет электричества?

Думаю, не более 25 Вт.

#260115

Vascom - про облако я не понял совсем =(, бекап ещё рано, но будет, да. по крону наверное

text
tar cf /.watch/etc.tar /etc

с motion хотелось бы играться используя какой нибудь Raspberry Pi, но это уже после проекта "вспомнить всё"

"Lupo Alberto" написал:
HDMI нет? А как тогда видео смотреть?  *SCRATCH*

с телевизора и ноутбуков, у меня нет современных мониторов для hdmi

#260118

Коробочка красивая, да места мало — и хотя на материнке нет PCI-слотов, как вы думаете, встала бы туда PCI-карта, пусть и низкопрофильная?

Войдите или зарегистрируйтесь, чтобы ответить.