Mpeg 2 Converter
Publicado por Carlos Alberto (última atualização em 08/12/2010)
[ Hits: 5.283 ]
Ferramenta em kmdr (kommander) para conversão de formatos de vídeo para mpeg-dvd ou dvd para avi/mkv.
#!/usr/bin/kmdr-executor
<!DOCTYPE UI><UI version="3.0" stdsetdef="1">
<class>Mp2_ConverterVIDEO</class>
<author>CarlosXLinux@gmail.com</author>
<license>GPL2</license>
<version>0.03</version>
<widget class="Dialog">
<property name="name">
<cstring>Mp2_ConverterVIDEO</cstring>
</property>
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>761</width>
<height>592</height>
</rect>
</property>
<property name="caption">
<string>MPEG Converter</string>
</property>
<property name="icon">
<pixmap>image0</pixmap>
</property>
<property name="associations" stdset="0">
<stringlist>
<string></string>
<string>@record.setVisible(false)
@sizecalc.execute
@forEach(T, "NTSC 720x480\nNTSC 704x480\nNTSC 352x480\nNTSC 352x240\nPAL 720x576\nPAL 704x576\nPAL 352x576\nPAL 352x288")
@tela.addUniqueItem(@T)
@end
</string>
<string></string>
</stringlist>
</property>
<property name="useShebang">
<bool>true</bool>
</property>
<grid>
<property name="name">
<cstring>unnamed</cstring>
</property>
<property name="margin">
<number>11</number>
</property>
<property name="spacing">
<number>6</number>
</property>
<widget class="QLayoutWidget" row="9" column="0" rowspan="1" colspan="15">
<property name="name">
<cstring>Layout1</cstring>
</property>
<grid>
<property name="name">
<cstring>unnamed</cstring>
</property>
<property name="margin">
<number>0</number>
</property>
<property name="spacing">
<number>6</number>
</property>
<widget class="ProgressBar" row="0" column="1">
<property name="name">
<cstring>PP_2</cstring>
</property>
<property name="minimumSize">
<size>
<width>0</width>
<height>25</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>32767</width>
<height>25</height>
</size>
</property>
<property name="totalSteps">
<number>100</number>
</property>
<property name="associations" stdset="0">
<stringlist>
<string></string>
</stringlist>
</property>
<property name="toolTip" stdset="0">
<string>Progresso total</string>
</property>
</widget>
<widget class="ProgressBar" row="0" column="0">
<property name="name">
<cstring>PP_1</cstring>
</property>
<property name="minimumSize">
<size>
<width>0</width>
<height>25</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>32767</width>
<height>25</height>
</size>
</property>
<property name="associations" stdset="0">
<stringlist>
<string></string>
</stringlist>
</property>
<property name="toolTip" stdset="0">
<string>Progresso do arquivo.</string>
</property>
</widget>
</grid>
</widget>
<spacer row="8" column="9" rowspan="1" colspan="2">
<property name="name">
<cstring>Spacer2</cstring>
</property>
<property name="orientation">
<enum>Horizontal</enum>
</property>
<property name="sizeType">
<enum>Expanding</enum>
</property>
<property name="sizeHint">
<size>
<width>52</width>
<height>0</height>
</size>
</property>
</spacer>
<widget class="Table" row="1" column="0" rowspan="5" colspan="14">
<column>
<property name="text">
<string>Arquivo</string>
</property>
</column>
<column>
<property name="text">
<string>Volume (M)</string>
</property>
</column>
<column>
<property name="text">
<string>Tempo (s)</string>
</property>
</column>
<column>
<property name="text">
<string>Tela</string>
</property>
</column>
<column>
<property name="text">
<string>Frame Rate (fps)</string>
</property>
</column>
<column>
<property name="text">
<string>Aspect</string>
</property>
</column>
<column>
<property name="text">
<string>V. Codec</string>
</property>
</column>
<column>
<property name="text">
<string>V. Bit Rate (Kb)</string>
</property>
</column>
<column>
<property name="text">
<string>A. Codec</string>
</property>
</column>
<column>
<property name="text">
<string>A. Bit Rate (Kb)</string>
</property>
</column>
<column>
<property name="text">
<string>A. Rate (Hz)</string>
</property>
</column>
<column>
<property name="text">
<string>A. Ling.</string>
</property>
</column>
<column>
<property name="text">
<string>S. Ling.</string>
</property>
</column>
<column>
<property name="text">
<string>Titulo</string>
</property>
</column>
<column>
<property name="text">
<string>Pasta</string>
</property>
</column>
<property name="name">
<cstring>Playlist</cstring>
</property>
<property name="numRows">
<number>0</number>
</property>
<property name="numCols">
<number>15</number>
</property>
<property name="selectionMode">
<enum>Single</enum>
</property>
<property name="associations" stdset="0">
<stringlist>
<string></string>
</stringlist>
</property>
<property name="toolTip" stdset="0">
<string>Lista de arquivos a serem convertidos.</string>
</property>
</widget>
<widget class="ExecButton" row="3" column="14">
<property name="name">
<cstring>adiciona3</cstring>
</property>
<property name="minimumSize">
<size>
<width>40</width>
<height>40</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>40</width>
<height>40</height>
</size>
</property>
<property name="focusPolicy">
<enum>NoFocus</enum>
</property>
<property name="text">
<string></string>
</property>
<property name="accel">
<number>4152</number>
</property>
<property name="iconSet">
<iconset>image1</iconset>
</property>
<property name="flat">
<bool>true</bool>
</property>
<property name="populationText">
<string></string>
</property>
<property name="associations" stdset="0">
<stringlist>
<string>#!/bin/bash
DDK="dcop @dcopid KommanderIf";
SCT="setCellText";
PL="Playlist"; c=0;
enall(){
for m in GB{0,1,2,3,4,5,6,7,8} convert adiciona adiciona2 adiciona3 $PL play remove tela vbit abit; do
$DDK $SE $m $1;
done
}
enall false;
DLST="$(awk '/name|hd[a-z]|sr[0-9]|scd[0-9]/{for (i=NF;i>=3;i--) { print $i }}' /proc/sys/dev/cdrom/info 2>/dev/null)";
for i in $DLST; do
TITLE="$(lsdvd -q "/dev/$i" 2>/dev/null | awk '/Longest track:/{ print $3 }')";
FILES="/dev/$i";
if [ -n "$TITLE" ]; then
DISC_TITLE="$(lsdvd -q "$FILES" | awk '/Disc.*Title:/{for (i=3;i<=NF;i++) { print $i }}')";
FLST="$i $DISC_TITLE";
c="$[c+1]";
fi
done
if [ "$[c]" != "1" ]; then
FILES="/dev/$(kdialog --menu "Escolha a unidade:" $FLST)";
TITLE="$(lsdvd -q "$FILES" 2>/dev/null | awk '/Longest track:/{ print $3 }')";
DISC_TITLE="$(lsdvd -q "$FILES" | awk '/Disc.*Title:/{for (i=3;i<=NF;i++) { print $i }}')";
fi
if [ -n "$FILES" -a -n "$TITLE" ]; then
n="$($DDK rowCount $PL)"; [ ! -n "$n" ] && n="0";
$DDK insertRow $PL $n 1;
$DDK $SCT $PL $n 0 "$DISC_TITLE";
V="$(lshal -u "volume_label_$DISC_TITLE" | awk '/volume.size/{ print $3 "/1024" }' | bc)";
$DDK $SCT $PL $n 1 "$V";
$DDK $SCT $PL $n 14 "$FILES";
ID_FILE="$(mplayer dvd://$TITLE -dvd-device "$FILES" -vo null -ao null -endpos 0 -identify 2>/dev/null 2>&1 | awk '/ID_AUDIO|ID_VIDEO|ID_DEMUXER|ID_LENGTH|ID_AID_.*_LANG/')";
ID_DVD_AUDIO="$(lsdvd -q -x -t$TITLE "$FILES" | tr -d ':,-' | awk '/Audio.*Language/{ print $1 $2 "_" $4 "_" $5 "_" $7 "_" $9 " " $1 $2 "_" $4 "_" $5 "_" $7 "_" $9 }')";
ID_DVD_SUBS="$(lsdvd -q -x -t$TITLE "$FILES" | tr -d ':,-' | awk '/Subtitle.*Language/{ print $1 $2 "_" $4 "_" $5 " " $1 $2 "_" $4 "_" $5 }')";
declare -t $ID_FILE;
c=0; for n in $ID_DVD_AUDIO; do c="$[c+1]"; done;
if [ "$[c/2]" != "1" ]; then ID_DVD_AUDIO="$(kdialog --menu "Linguagens encontradas:" $ID_DVD_AUDIO | tr '_' ' ')"; fi;
$DDK $SCT $PL $n 11 "$(echo $ID_DVD_AUDIO | awk '{ print $2 }')";
ID_AUDIO_CODEC="$(echo $ID_DVD_AUDIO | awk '{ print $4 }')";
ID_AUDIO_RATE="$(echo $ID_DVD_AUDIO | awk '{ print $5 }')";
c=0; for n in $ID_DVD_SUBS; do c="$[c+1]"; done;
if [ "$[c/2]" != "1" ]; then ID_DVD_SUBS="$(kdialog --menu "Legendas encontradas:" nenhum nenhum $ID_DVD_SUBS | tr '_' ' ')"; fi;
$DDK $SCT $PL $n 12 "$(echo $ID_DVD_SUBS | awk '{ print $2 }')";
$DDK $SCT $PL $n 2 "$ID_LENGTH";
$DDK $SCT $PL $n 3 "$ID_VIDEO_WIDTH:$ID_VIDEO_HEIGHT";
$DDK $SCT $PL $n 4 "$ID_VIDEO_FPS";
$DDK $SCT $PL $n 5 "$ID_VIDEO_ASPECT";
$DDK $SCT $PL $n 6 "$ID_VIDEO_CODEC";
$DDK $SCT $PL $n 7 "$[ID_VIDEO_BITRATE/1000]";
$DDK $SCT $PL $n 8 "$ID_AUDIO_CODEC";
$DDK $SCT $PL $n 9 "$[ID_AUDIO_BITRATE/1000]";
$DDK $SCT $PL $n 10 "$ID_AUDIO_RATE";
$DDK $SCT $PL $n 13 "$DISC_TITLE";
TOTAL="$[$($DDK text total | awk '{ print $2 }')+$(echo $ID_LENGTH | cut -f1 -d.)]";
HH="$[$[TOTAL-$[TOTAL-$[$[TOTAL/60]*60]]]/3600]";
MM="$[$[$[TOTAL-$[TOTAL-$[$[TOTAL/60]*60]]]/60]-$[$[$[TOTAL-$[TOTAL-$[$[TOTAL/60]*60]]]/3600]*60]]";
SS="$[TOTAL-$[$[TOTAL/60]*60]]";
[ "$HH" -lt "10" ] && HH="0$HH"; [ "$MM" -lt "10" ] && MM="0$MM"; [ "$SS" -lt "10" ] && SS="0$SS";
$DDK setText total "Total: $TOTAL s - $HH:$MM:$SS";
VBITS="$($DDK text vbit | tr -d ':[alpha]:')";
ABITS="$($DDK text abit | tr -d ':[alpha]:')";
SIZE="$(echo "scale=2; ${TOTAL}*$[VBITS]/8+${TOTAL}*2*$[ABITS]/13" | bc -l)";
$DDK setText size "Estimado: $(echo "scale=2; ${SIZE}/1024" | bc -l )MB";
enall true;
fi;
enall true;
</string>
</stringlist>
</property>
<property name="toolTip" stdset="0">
<string>Inserir um dvd inserido numa unidade a lista.(F9)</string>
</property>
</widget>
<widget class="Label" row="8" column="2">
<property name="name">
<cstring>Label7</cstring>
</property>
<property name="maximumSize">
<size>
<width>50</width>
<height>30</height>
</size>
</property>
<property name="text">
<string>V Bits:</string>
</property>
<property name="associations" stdset="0">
<stringlist>
<string></string>
</stringlist>
</property>
</widget>
<widget class="ExecButton" row="5" column="14">
<property name="name">
<cstring>remove</cstring>
</property>
<property name="minimumSize">
<size>
<width>40</width>
<height>40</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>40</width>
<height>40</height>
</size>
</property>
<property name="focusPolicy">
<enum>NoFocus</enum>
</property>
<property name="text">
<string></string>
</property>
<property name="pixmap">
<pixmap>image2</pixmap>
</property>
<property name="accel">
<number>4154</number>
</property>
<property name="flat">
<bool>true</bool>
</property>
<property name="populationText">
<string></string>
</property>
<property name="associations" stdset="0">
<stringlist>
<string>#!/bin/bash
DDK="dcop @dcopid KommanderIf";
enall(){
for m in GB{0,1,2,3,4,5,6,7,8} convert adiciona adiciona2 adiciona3 $PL play remove tela vbit abit; do
$DDK $SE $m $1;
done
}
enall false;
declare -t $($DDK selection Playlist | awk -F',' '{ print "IN=" $1 " ON=" $3 }');
timerrecal(){
TOTAL="$[$($DDK text total | tr -d 's' | awk '{ print $2 }')-$($DDK cellText Playlist $[a] 2 | cut -f1 -d.)]";
HH="$[$[TOTAL-$[TOTAL-$[$[TOTAL/60]*60]]]/3600]";
MM="$[$[$[TOTAL-$[TOTAL-$[$[TOTAL/60]*60]]]/60]-$[$[$[TOTAL-$[TOTAL-$[$[TOTAL/60]*60]]]/3600]*60]]";
SS="$[TOTAL-$[$[TOTAL/60]*60]]";
[ "$HH" -lt "10" ] && HH="0$HH"; [ "$MM" -lt "10" ] && MM="0$MM"; [ "$SS" -lt "10" ] && SS="0$SS";
$DDK setText total "Total: ${TOTAL}s - $HH:$MM:$SS";
}
if [ "$[IN]" != "-1" -a "$[ON]" != "-1" ]; then
for ((a=$[IN];a<=$[ON];a++)); do timerrecal; done
$DDK removeRow Playlist $[IN] $[1+ON-IN];
else
for ((a=0;a<10;a++)); do timerrecal; done
$DDK removeRow Playlist 0 10;
fi
VBITS="$($DDK text vbit | tr -d ':[alpha]:')";
ABITS="$($DDK text abit | tr -d ':[alpha]:')";
SIZE="$(echo "scale=2; ${TOTAL}*$[VBITS]/8+${TOTAL}*2*$[ABITS]/13" | bc -l)";
$DDK setText size "Estimado: $(echo "scale=2; ${SIZE}/1024" | bc -l )MB";
enall true;
</string>
</stringlist>
</property>
<property name="toolTip" stdset="0">
<string>Remove o arquivo selecionado da lista.(F11)</string>
</property>
</widget>
<widget class="Label" row="8" column="0">
<property name="name">
<cstring>Label9</cstring>
</property>
<property name="maximumSize">
<size>
<width>40</width>
<height>30</height>
</size>
</property>
<property name="text">
<string>Tela:</string>
</property>
<property name="associations" stdset="0">
<stringlist>
<string></string>
</stringlist>
</property>
</widget>
<widget class="StatusBar" row="10" column="0" rowspan="1" colspan="15">
<property name="name">
<cstring>DISPLAY</cstring>
</property>
</widget>
<widget class="ExecButton" row="1" column="14">
<property name="name">
<cstring>adiciona</cstring>
</property>
<property name="minimumSize">
<size>
<width>40</width>
<height>40</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>40</width>
<height>40</height>
</size>
</property>
<property name="focusPolicy">
<enum>NoFocus</enum>
</property>
<property name="text">
<string></string>
</property>
<property name="accel">
<number>4150</number>
</property>
<property name="iconSet">
<iconset>image3</iconset>
</property>
<property name="flat">
<bool>true</bool>
</property>
<property name="populationText">
<string></string>
</property>
<property name="associations" stdset="0">
<stringlist>
<string>#!/bin/bash
DDK="dcop @dcopid KommanderIf";
SCT="setCellText";
PL="Playlist";
enall(){
for m in GB{0,1,2,3,4,5,6,7,8} convert adiciona adiciona2 adiciona3 $PL play remove tela vbit abit; do
$DDK $SE $m $1;
done
}
enall false;
$DDK clear mpinfo;
$DDK clear mplayernfo;
ARCHIVES="$(kdialog --multiple --separate-output --getopenfilename "$HOME" '*.[fm][lpk][veg4] *.[awoi][vmgs][ivmo] *.rpm *.rmv *.rmvb' | sed -e 's/ /##SPACE##/g' | sort -f -r)";
insertName(){
$DDK insertRow $PL $n 1;
V="$(basename "$1")";
$DDK $SCT $PL $n 0 "$V";
DISC_TITLE="$(echo "$V" | sed -e 's/.[mM][pP][eE][gG4]//g; s/.[fF][lL][vV]//g; s/.[oO][gG][mM]//g; s/.[mM][kK][vV]//g; s/.[mM][pP][gG4]//g; s/.[aA][vV][iI]//g; s/.[wW][mM][vV]//g; s/.[rR][mM][vV][bB]//g; s/.[rR][mM][vV]//g; s/.[rR][pP][mM]//g; s/.[vV][oO][bB]//g; s/.[iI][sS][oO]//g')";
V="$(du -s -h -k "$1" | awk '{ print $1 }')";
$DDK $SCT $PL $n 1 "$V";
V="$(dirname "$1")";
$DDK $SCT $PL $n 14 "$V";
}
ncounter(){
VAR="$1";
m="";
n=0;
for i in $VAR; do
n=$[n+1];
m="$m $n";
done;
echo $m
}
addfiles(){
FILES="$1";
if [ -n "$FILES" ]; then
n="$($DDK rowCount $PL 2>/dev/null)"; [ ! -n "$n" ] && n="0";
insertName "$FILES";
case "$FILES" in
*.[aA][vV][iI] | *.[wW][mM][vV] | *.[mM][kK][vV] | *.[fF][lL][vV] | *.[oO][gG][mM] | *.[rR][mM][vV] | *.[rR][mM][vV][bB] | *.[rR][pP][mM] | *.[mM][pP][gG4] | *.[mM][pP][eE][gG])
eval "$(mplayer "$FILES" -vo null -ao null -endpos 0 -identify 2>/dev/null 2>&1 | awk '/ID_VIDEO|ID_AUDIO|ID_SEEKABLE|ID_LENGTH|ID_DEMUXER|ID_AID_.*_LANG/')";
ID_FILE_AUDIO="$(mplayer "$FILES" -vo null -ao null -endpos 0 -identify 2>/dev/null 2>&1 | awk '/Audio.*stream/{ print $6 }')";
case "$FILES" in
*.mkv)
eval "$(mkvmerge -i "$FILES" | awk '/video/{ print "ID_VIDEO_CODEC=" $5 }' | tr -d '()')";
eval "$(mkvmerge -i "$FILES" | awk '/audio/{ print "ID_AUDIO_CODEC=" $5 }' | tr -d '()')";
MER="$(mkvmerge -i "$FILES" | awk '/audio/{ print $3 }')";
ID_FILE_AUDIO="$(ncounter "$MER")";
;;
esac
if [ ! -n "$(echo "$ID_VIDEO_ASPECT" | tr -d '0.')" ]; then ID_VIDEO_ASPECT="$(echo "scale=5; $ID_VIDEO_WIDTH/$ID_VIDEO_HEIGHT" | bc -l)"; fi
if [ -n "$(echo $ID_FILE_AUDIO | grep 2)" ]; then
for i in $ID_FILE_AUDIO; do ID_FILE_AUDIO="$(echo $ID_FILE_AUDIO | sed "s/$i/\"$i\" \"$i\"/g")"; done
V="$(kdialog --menu "Linguagens encontradas:" $ID_FILE_AUDIO)";
$DDK $SCT $PL $n 11 "$V";
else $DDK $SCT $PL $n 11 $ID_AUDIO_ID; fi;
LFS="";
if [ -f "$($DDK cellText $PL $n 14)/${DISC_TITLE}.srt" ]; then
LFS="${DISC_TITLE}.srt";
elif [ -f "$($DDK cellText $PL $n 14)/${DISC_TITLE}.ass" ]; then
LFS="${DISC_TITLE}.ass";
fi
c=0; for n in $LFS; do c="$[c+1]"; done;
if [ -n "$LFS" ]; then
if [ "$[c]" != "1" ]; then
for i in $LFS; do
l="$(echo "$i" | sed -e 's/##SPACE##/ /g')";
LFS="$(echo "$LFS" | sed "s/$i/\"$l\" \"$l\"/g")";
done;
V="$(kdialog --menu "Legendas encontradas:" nenhum nenhum $LFS)";
else
V="$(echo $LFS | sed -e 's/##SPACE##/ /g')";
fi
$DDK $SCT $PL $n 12 "$V";
else
$DDK $SCT $PL $n 12 nenhum;
fi
;;
*.[iI][sS][oO]|*hd[a-z]|*sr[0-9]|*scd[0-9])
TITLE="$(lsdvd -q "$FILES" | awk '/Longest track:/{ print $3 }')";
DISC_TITLE="$(lsdvd -q "$FILES" | awk '/Disc.*Title:/{for (i=3;i<=NF;i++) { print $i }}')";
eval "$(mplayer dvd://$TITLE -dvd-device "$FILES" -vo null -ao null -endpos 0 -identify 2>/dev/null 2>&1 | awk '/ID_AUDIO|ID_VIDEO|ID_DEMUXER|ID_LENGTH|ID_AID_.*_LANG/')";
ID_DVD_AUDIO="$(lsdvd -q -x -t$TITLE "$FILES" | tr -d ':,-' | awk '/Audio.*Language/{ print $1 $2 "_" $4 "_" $5 "_" $7 "_" $9 " " $1 $2 "_" $4 "_" $5 "_" $7 "_" $9 }')";
ID_DVD_SUBS="$(lsdvd -q -x -t$TITLE "$FILES" | tr -d ':,-' | awk '/Subtitle.*Language/{ print $1 $2 "_" $4 "_" $5 " " $1 $2 "_" $4 "_" $5 }')";
c=0; for n in $ID_DVD_AUDIO; do c="$[c+1]"; done;
if [ "$[c/2]" != "1" ]; then ID_DVD_AUDIO="$(kdialog --menu "Linguagens encontradas:" $ID_DVD_AUDIO | tr '_' ' ')"; fi;
$DDK $SCT $PL $n 11 "$(echo $ID_DVD_AUDIO | awk '{ print $2 }')";
ID_AUDIO_CODEC="$(echo $ID_DVD_AUDIO | awk '{ print $4 }')";
ID_AUDIO_RATE="$(echo $ID_DVD_AUDIO | awk '{ print $5 }')";
c=0; for n in $ID_DVD_SUBS; do c="$[c+1]"; done;
if [ "$[c/2]" != "1" ]; then ID_DVD_SUBS="$(kdialog --menu "Legendas encontradas:" nenhum nenhum $ID_DVD_SUBS | tr '_' ' ')"; fi;
$DDK $SCT $PL $n 12 "$(echo $ID_DVD_SUBS | awk '{ print $2 }')";
;;
esac
$DDK $SCT $PL $n 2 "$ID_LENGTH";
$DDK $SCT $PL $n 3 "$ID_VIDEO_WIDTH:$ID_VIDEO_HEIGHT";
$DDK $SCT $PL $n 4 "$ID_VIDEO_FPS";
$DDK $SCT $PL $n 5 "$ID_VIDEO_ASPECT";
$DDK $SCT $PL $n 6 "$ID_VIDEO_CODEC";
$DDK $SCT $PL $n 7 "$[ID_VIDEO_BITRATE/1000]";
$DDK $SCT $PL $n 8 "$ID_AUDIO_CODEC";
$DDK $SCT $PL $n 9 "$[ID_AUDIO_BITRATE/1000]";
$DDK $SCT $PL $n 10 "$ID_AUDIO_RATE";
DISC_TITLE="$(echo "$DISC_TITLE" | tr -d '(){}[]+!?:')";
$DDK $SCT $PL $n 13 "$DISC_TITLE";
TOTAL="$[$($DDK text total | tr -d 's' | awk '{ print $2 }')+$(echo $ID_LENGTH | cut -f1 -d.)]";
HH="$[$[TOTAL-$[TOTAL-$[$[TOTAL/60]*60]]]/3600]";
MM="$[$[$[TOTAL-$[TOTAL-$[$[TOTAL/60]*60]]]/60]-$[$[$[TOTAL-$[TOTAL-$[$[TOTAL/60]*60]]]/3600]*60]]";
SS="$[TOTAL-$[$[TOTAL/60]*60]]";
[ "$HH" -lt "10" ] && HH="0$HH"; [ "$MM" -lt "10" ] && MM="0$MM"; [ "$SS" -lt "10" ] && SS="0$SS";
$DDK setText total "Total: ${TOTAL}s - $HH:$MM:$SS";
VBITS="$($DDK text vbit | tr -d ':[alpha]:')";
ABITS="$($DDK text abit | tr -d ':[alpha]:')";
SIZE="$(echo "scale=2; ${TOTAL}*$[VBITS]/8+${TOTAL}*2*$[ABITS]/13" | bc -l)";
$DDK setText size "Estimado: $(echo "scale=2; ${SIZE}/1024" | bc -l )MB";
enall true;
fi;
}
for A in $ARCHIVES; do
F="$(echo "$A" | sed -e 's/##SPACE##/ /g')";
case $A in
*.[iI][sS][oO]|*hd[a-z]|*sr[0-9]|*scd[0-9])
if lsdvd -q "$F" 2>/dev/null; then
addfiles "$F";
else
kdialog --error "Erro.\nNao foi possivel abrir o arquivo talvez nao seja imagem de um DVD.";
fi
;;
*)
addfiles "$F";
;;
esac
done
enall true;
</string>
</stringlist>
</property>
<property name="toolTip" stdset="0">
<string>Inserir arquivos na lista. (F7)</string>
</property>
</widget>
<widget class="Label" row="8" column="4" rowspan="1" colspan="2">
<property name="name">
<cstring>Label7_2</cstring>
</property>
<property name="maximumSize">
<size>
<width>50</width>
<height>30</height>
</size>
</property>
<property name="text">
<string>A. Bits:</string>
</property>
<property name="associations" stdset="0">
<stringlist>
<string></string>
</stringlist>
</property>
</widget>
<widget class="ExecButton" row="4" column="14">
<property name="name">
<cstring>play</cstring>
</property>
<property name="minimumSize">
<size>
<width>40</width>
<height>40</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>40</width>
<height>40</height>
</size>
</property>
<property name="focusPolicy">
<enum>NoFocus</enum>
</property>
<property name="text">
<string></string>
</property>
<property name="accel">
<number>4153</number>
</property>
<property name="iconSet">
<iconset>image4</iconset>
</property>
<property name="flat">
<bool>true</bool>
</property>
<property name="populationText">
<string></string>
</property>
<property name="associations" stdset="0">
<stringlist>
<string>#!/bin/bash
ADLAY="`echo "0.1*@adelay.text" | bc -l`";
fcalc(){
TOTAL="$(echo "scale=$2; $1" | bc -l)";
[ "$2" != "0" ] && echo $TOTAL || echo $TOTAL | cut -d. -f1;
}
DDK="dcop @dcopid KommanderIf";
enall(){
for m in GB{0,1,2,3,4,5,6,7,8} convert adiciona adiciona2 adiciona3 $PL play remove tela vbit abit; do
$DDK $SE $m $1;
done
}
enall false;
if [ "$IN" != "-1" ]; then
IN="$($DDK currentRow Playlist)";
APC="$($DDK cellText Playlist $IN 5)";
VF1="$($DDK cellText Playlist $IN 3 | cut -d: -f2)";
HF1="$($DDK cellText Playlist $IN 3 | cut -d: -f1)";
case $($DDK selection tela) in
NTSC*|PAL*)
VF2="$($DDK selection tela | awk '{ print $2 }' | cut -dx -f2)";
HF2="$($DDK selection tela | awk '{ print $2 }' | cut -dx -f1)";
;;
*)
VF2="$($DDK selection tela | cut -dx -f2)";
HF2="$($DDK selection tela | cut -dx -f1)";
;;
esac
NV="$(fcalc "$HF2/$APC" 0)";
if [ "@wide.checked" == "0" -a "@fill.checked" == "0" ] || [ "@wide.checked" == "1" -a "@fill.checked" == "1" ]; then
if [ "$NV" -lt "405" -o "$NV" == "405" ]; then ASPECT="16/9"; else ASPECT="4/3"; fi;
EXPAND="expand=$HF1:::::$ASPECT,scale=$HF2:$VF2";
elif [ "@wide.checked" == "1" -a "@fill.checked" == "0" ]; then
ASPECT="16/9";
if [ "$NV" -lt "405" -o "$NV" == "405" ]; then
EXPAND="expand=$HF1:::::$ASPECT,scale=$HF2:$VF2";
else
VF="$(fcalc "9*$HF1/16" 0)";
EXPAND="crop=$HF1:$VF,scale=$HF2:$VF2";
fi;
elif [ "@wide.checked" == "0" -a "@fill.checked" == "1" ]; then
ASPECT="4/3";
if [ "$NV" -lt "405" -o "$NV" == "405" ]; then
EXPAND="expand=$HF1:::::$ASPECT,scale=$HF2:$VF2";
else
VF="$(fcalc "3*$HF1/4" 0)";
EXPAND="crop=$HF1:$VF,scale=$HF2:$VF2";
fi;
fi
ENDR="$($DDK cellText Playlist $IN 14)";
FNAME="$($DDK cellText Playlist $IN 0)";
FILE="$ENDR/$FNAME";
MPL="mplayer -channels 6 -af resample=48000,hrtf -noautosub -ontop -idx -vo xv -identify -osdlevel 2 -softvol -softvol-max 500";
ALANG="$($DDK cellText Playlist $IN 11)";
case $ALANG in
[a-z][a-z])
ALANG=" -alang $ALANG";
;;
[0-9])
ALANG=" -aid $ALANG";
;;
nenhum|todos)
ALANG="";
;;
esac
SLANG="$($DDK cellText Playlist $IN 12)";
case $SLANG in
[a-z][a-z])
SLANG="-slang $SLANG -subfont-autoscale 2";
;;
[0-9])
SLANG="-sid $SLANG -subfont-autoscale 2";
;;
*[sS][rR][tT])
cp -a "$($DDK cellText Playlist $IN 14)/$SLANG" /tmp/subcmp@pid.srt;
SLANG="-utf8 -sub /tmp/subcmp@pid.srt -subfont-autoscale 2";
;;
*)
SLANG='';
;;
esac;
case "$FNAME" in
*.[wW][mM][vV] | *.[mM][kK][vV] | *.[fF][lL][vV] | *.[oO][gG][mM] | *.[rR][mM][vV] | *.[rR][mM][vV][bB] | *.[rR][pP][mM])
$MPL -vf $EXPAND:0,harddup "$FILE" $SLANG 2>/dev/null;
;;
*.[mM][pP][eE][gG] | *.[mM][pP][gG4] | *.[aA][vV][iI] | *.[vV][oO][bB])
$MPL -vf $EXPAND:0,harddup "$FILE" $ALANG $SLANG 2>/dev/null;
;;
*)
case "$FNAME" in *.[iI][sS][oO]) FILE="$ENDR/$FNAME"; ;; *) FILE="$ENDR"; ;; esac;
TLE="$(lsdvd "$FILE" 2>/dev/null | awk '/Longest track:/{ print $3 }')";
$MPL dvd://"$TLE" -dvd-device "$FILE" -vf $EXPAND:0,harddup $ALANG $SLANG 2>/dev/null;
;;
esac
enall true;
fi
</string>
</stringlist>
</property>
<property name="toolTip" stdset="0">
<string>Reproduz e previzualiza o arquivo escolhido.(F10)</string>
</property>
</widget>
<widget class="ExecButton" row="2" column="14">
<property name="name">
<cstring>adiciona2</cstring>
</property>
<property name="minimumSize">
<size>
<width>40</width>
<height>40</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>40</width>
<height>40</height>
</size>
</property>
<property name="focusPolicy">
<enum>NoFocus</enum>
</property>
<property name="text">
<string></string>
</property>
<property name="accel">
<number>4151</number>
</property>
<property name="iconSet">
<iconset>image5</iconset>
</property>
<property name="flat">
<bool>true</bool>
</property>
<property name="populationText">
<string></string>
</property>
<property name="associations" stdset="0">
<stringlist>
<string>#!/bin/bash
DDK="dcop @dcopid KommanderIf";
SCT="setCellText";
PL="Playlist";
enall(){
for m in GB{0,1,2,3,4,5,6,7,8} convert adiciona adiciona2 adiciona3 $PL play remove tela vbit abit; do
$DDK $SE $m $1;
done
}
enall false;
FILES="$(kdialog --getexistingdirectory "$HOME")";
TITLE="$(lsdvd -q "$FILES" | awk '/Longest track:/{ print $3 }')";
if [ -n "$FILES" -a -n "$TITLE" ]; then
n="$($DDK rowCount $PL)"; [ ! -n "$n" ] && n="0";
DISC_TITLE="$(echo "$FILES" | awk -F'/' '{ print $NF }')";
$DDK insertRow $PL $n 1;
$DDK $SCT $PL $n 0 "$DISC_TITLE";
V="$(du -s -h -k "$FILES" | awk '{ print $1 }')";
$DDK $SCT $PL $n 1 "$V";
$DDK $SCT $PL $n 14 "$FILES";
DISC_TITLE="$(lsdvd -q "$FILES" | awk '/Disc.*Title:/{for (i=3;i<=NF;i++) { print $i }}')";
ID_FILE="$(mplayer dvd://$TITLE -dvd-device "$FILES" -vo null -ao null -endpos 0 -identify 2>/dev/null 2>&1 | awk '/ID_AUDIO|ID_VIDEO|ID_DEMUXER|ID_LENGTH|ID_AID_.*_LANG/')";
ID_DVD_AUDIO="$(lsdvd -q -x -t$TITLE "$FILES" | tr -d ':,-' | awk '/Audio.*Language/{ print $1 $2 "_" $4 "_" $5 "_" $7 "_" $9 " " $1 $2 "_" $4 "_" $5 "_" $7 "_" $9 }')";
ID_DVD_SUBS="$(lsdvd -q -x -t$TITLE "$FILES" | tr -d ':,-' | awk '/Subtitle.*Language/{ print $1 $2 "_" $4 "_" $5 " " $1 $2 "_" $4 "_" $5 }')";
declare -t $ID_FILE;
c=0; for n in $ID_DVD_AUDIO; do c="$[c+1]"; done;
if [ "$[c/2]" != "1" ]; then ID_DVD_AUDIO="$(kdialog --menu "Linguagens encontradas:" $ID_DVD_AUDIO | tr '_' ' ')"; fi;
$DDK $SCT $PL $n 11 "$(echo $ID_DVD_AUDIO | awk '{ print $2 }')";
ID_AUDIO_CODEC="$(echo $ID_DVD_AUDIO | awk '{ print $4 }')";
ID_AUDIO_RATE="$(echo $ID_DVD_AUDIO | awk '{ print $5 }')";
c=0; for n in $ID_DVD_SUBS; do c="$[c+1]"; done;
if [ "$[c/2]" != "1" ]; then ID_DVD_SUBS="$(kdialog --menu "Legendas encontradas:" nenhum nenhum $ID_DVD_SUBS | tr '_' ' ')"; fi;
$DDK $SCT $PL $n 12 "$(echo $ID_DVD_SUBS | awk '{ print $2 }')";
$DDK $SCT $PL $n 2 "$ID_LENGTH";
$DDK $SCT $PL $n 3 "$ID_VIDEO_WIDTH:$ID_VIDEO_HEIGHT";
$DDK $SCT $PL $n 4 "$ID_VIDEO_FPS";
$DDK $SCT $PL $n 5 "$ID_VIDEO_ASPECT";
$DDK $SCT $PL $n 6 "$ID_VIDEO_CODEC";
$DDK $SCT $PL $n 7 "$[ID_VIDEO_BITRATE/1000]";
$DDK $SCT $PL $n 8 "$ID_AUDIO_CODEC";
$DDK $SCT $PL $n 9 "$[ID_AUDIO_BITRATE/1000]";
$DDK $SCT $PL $n 10 "$ID_AUDIO_RATE";
$DDK $SCT $PL $n 13 "$DISC_TITLE";
TOTAL="$[$($DDK text total | awk '{ print $2 }')+$(echo $ID_LENGTH | cut -f1 -d.)]";
HH="$[$[TOTAL-$[TOTAL-$[$[TOTAL/60]*60]]]/3600]";
MM="$[$[$[TOTAL-$[TOTAL-$[$[TOTAL/60]*60]]]/60]-$[$[$[TOTAL-$[TOTAL-$[$[TOTAL/60]*60]]]/3600]*60]]";
SS="$[TOTAL-$[$[TOTAL/60]*60]]";
[ "$HH" -lt "10" ] && HH="0$HH"; [ "$MM" -lt "10" ] && MM="0$MM"; [ "$SS" -lt "10" ] && SS="0$SS";
$DDK setText total "Total: $TOTAL s - $HH:$MM:$SS";
VBITS="$($DDK text vbit | tr -d ':[alpha]:')";
ABITS="$($DDK text abit | tr -d ':[alpha]:')";
SIZE="$(echo "scale=2; ${TOTAL}*$[VBITS]/8+${TOTAL}*2*$[ABITS]/13" | bc -l)";
$DDK setText size "Estimado: $(echo "scale=2; ${SIZE}/1024" | bc -l )MB";
enall true;
fi;
enall true;
</string>
</stringlist>
</property>
<property name="toolTip" stdset="0">
<string>Inserir uma pasta contendo um dvd na lista.(F8)</string>
</property>
</widget>
<widget class="SpinBoxInt" row="8" column="3">
<property name="name">
<cstring>vbit</cstring>
</property>
<property name="maximumSize">
<size>
<width>32767</width>
<height>30</height>
</size>
</property>
<property name="suffix">
<string>k</string>
</property>
<property name="maxValue">
<number>9800</number>
</property>
<property name="minValue">
<number>200</number>
</property>
<property name="lineStep">
<number>10</number>
</property>
<property name="value">
<number>3000</number>
</property>
<property name="populationText">
<string></string>
</property>
<property name="associations" stdset="0">
<stringlist>
<string></string>
</stringlist>
</property>
<property name="toolTip" stdset="0">
<string>Video bit rate: Min=800, Max=9800</string>
</property>
</widget>
<widget class="ExecButton" row="8" column="11" rowspan="1" colspan="2">
<property name="name">
<cstring>convert</cstring>
</property>
<property name="minimumSize">
<size>
<width>100</width>
<height>30</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>100</width>
<height>30</height>
</size>
</property>
<property name="text">
<string>C&onverter</string>
</property>
<property name="accel">
<number>4149</number>
</property>
<property name="default">
<bool>true</bool>
</property>
<property name="flat">
<bool>true</bool>
</property>
<property name="populationText">
<string></string>
</property>
<property name="associations" stdset="0">
<stringlist>
<string>@Konsole6.cancel;
@Konsole6.clear;
@Konsole6.execute;
@DISPLAY.setText("PREPARANDO O INICIO DOS PROCESSOS.");
@PP_1.setText(0);
@PP_2.setText(0);
</string>
</stringlist>
</property>
<property name="toolTip" stdset="0">
<string>Da inicio a convercao.(F6)</string>
</property>
</widget>
<widget class="Label" row="0" column="0" rowspan="1" colspan="15">
<property name="name">
<cstring>Label6</cstring>
</property>
<property name="text">
<string>Arquivos a serem convertidos:</string>
</property>
<property name="associations" stdset="0">
<stringlist>
<string></string>
</stringlist>
</property>
</widget>
<widget class="ComboBox" row="8" column="1">
<property name="name">
<cstring>tela</cstring>
</property>
<property name="minimumSize">
<size>
<width>110</width>
<height>0</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>32767</width>
<height>30</height>
</size>
</property>
<property name="editable">
<bool>true</bool>
</property>
<property name="associations" stdset="0">
<stringlist>
<string></string>
</stringlist>
</property>
<property name="toolTip" stdset="0">
<string>Padroes de cor e tela.</string>
</property>
</widget>
<widget class="ComboBox" row="8" column="7" rowspan="1" colspan="2">
<item>
<property name="text">
<string>128</string>
</property>
</item>
<item>
<property name="text">
<string>160</string>
</property>
</item>
<item>
<property name="text">
<string>192</string>
</property>
</item>
<item>
<property name="text">
<string>224</string>
</property>
</item>
<item>
<property name="text">
<string>448</string>
</property>
</item>
<property name="name">
<cstring>abit</cstring>
</property>
<property name="maximumSize">
<size>
<width>32767</width>
<height>30</height>
</size>
</property>
<property name="editable">
<bool>true</bool>
</property>
<property name="currentItem">
<number>2</number>
</property>
<property name="populationText">
<string>@sizecalc.execute</string>
</property>
<property name="associations" stdset="0">
<stringlist>
<string></string>
</stringlist>
</property>
<property name="toolTip" stdset="0">
<string>Audio bit rate.</string>
</property>
</widget>
<widget class="ExecButton" row="8" column="13" rowspan="1" colspan="2">
<property name="name">
<cstring>canceler</cstring>
</property>
<property name="enabled">
<bool>false</bool>
</property>
<property name="minimumSize">
<size>
<width>100</width>
<height>30</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>100</width>
<height>30</height>
</size>
</property>
<property name="text">
<string>&Cancelar</string>
</property>
<property name="accel">
<number>276824131</number>
</property>
<property name="flat">
<bool>true</bool>
</property>
<property name="associations" stdset="0">
<stringlist>
<string>@exec("for p in `ps -A | awk '/[m]encoder/{ print $1 }'`; do if grep -q CNV@pid /proc/$p/cmdline ; then kill $p; fi; done")
@setGlobal("EXECNO", "1")
</string>
</stringlist>
</property>
<property name="toolTip" stdset="0">
<string>Cancela a execucao.(Alt+C)</string>
</property>
</widget>
<widget class="TabWidget" row="7" column="0" rowspan="1" colspan="15">
<property name="name">
<cstring>TabWidget1</cstring>
</property>
<property name="maximumSize">
<size>
<width>32767</width>
<height>180</height>
</size>
</property>
<property name="tabPosition">
<enum>Bottom</enum>
</property>
<property name="tabShape">
<enum>Triangular</enum>
</property>
<widget class="QWidget">
<property name="name">
<cstring>tab</cstring>
</property>
<attribute name="title">
<string>S&aidas do Shell</string>
</attribute>
<grid>
<property name="name">
<cstring>unnamed</cstring>
</property>
<property name="margin">
<number>0</number>
</property>
<property name="spacing">
<number>0</number>
</property>
<widget class="Konsole" row="0" column="0">
<property name="name">
<cstring>Konsole6</cstring>
</property>
<property name="maximumSize">
<size>
<width>32767</width>
<height>180</height>
</size>
</property>
<property name="paletteForegroundColor">
<color>
<red>0</red>
<green>0</green>
<blue>0</blue>
</color>
</property>
<property name="associations" stdset="0">
<stringlist>
<string>#!/bin/bash
SPUMUX=`ls /usr/bin/spumux 2> /dev/null`;
MPGINFO=`ls /usr/bin/mpginfo 2> /dev/null`;
ADLAY="`echo "0.1*@adelay.text" | bc -l`";
NUM="0"
UN="0"; LIST=""; VL="0"; ST="setText"; SE="setEnabled";
DL="/tmp/dvdconvert-@pid.log"; DZ="$HOME/WORKDVD/dvdconvert1-@pid"; EXDA="/tmp/dvdauthor-@pid.sh";
M1="TODOS OS PROCESSOS CONCLUIDOS."; M2="TODOS OS PROCESSOS CANCELADOS.";
if [ "$[@steps.checked]" == "1" ]; then TWO_STEPS="1 2"; else TWO_STEPS="0"; fi
rm -f "$DL";
fcalc(){
TOTAL="$(echo "scale=$2; $1" | bc -l)";
[ "$2" != "0" ] && echo $TOTAL || echo $TOTAL | cut -d. -f1;
}
result(){
if [ "$2" == "0" ]; then
echo "[Concluido]";
echo -e "Gerando capitulos ... \t \c";
CHAP="$(make_chap 1)";
echo "<vob file=\"${FOT}.mpg\" chapters=\"$CHAP\" pause=\"0\" />" >> ${DZ}.xml;
MSEND="$M1";
echo "[ok]";
else
echo "[Parado]";
$DDK cancel Timer1;
MSEND="$M2";
enable_all true;
$DDK $SE canceler false;
$DDK $ST DISPLAY "$MSEND";
$DDK $ST PP_1 0;
$DDK $ST PP_2 0;
rm -f ${DZ}.xml 2>&1 &>$DL;
rm -f /tmp/*@pid.* 2>/dev/null;
echo "Pra mais informacoes, veja: $DL";
break;
fi;
CHAP="$(make_chap $1)";
}
make_chap(){
CP=0; SP=0;
case $1 in
1)
TC="$($DDK cellText $PL $IN 2)";
NC="$(fcalc "$TC/300" 0)";
RC="$(fcalc "$TC/$NC" 3)";
for ((LC=1;LC<=$(($NC-1));LC++)); do TA="$(fcalc "$RC*$LC" 3)"; CP="$CP $TA"; done
;;
2)
C="$(lsdvd -qx -t"$TLE" "$FILE" 2>/dev/null | awk '/Chapter:.*Length:/{ print $4 }' | tr -d ',')";
for d in $C; do SP="$SP+$(echo $d | awk -F: '{ print $1 "*3600+" $2 "*60+" $3 }')"; TA="$(fcalc "$SP" 3)"; CP="$CP $TA"; done;
;;
esac
echo $CP | tr ' ' ',' | sed 's/,,/,/g';
}
mkdvd(){
mkdir -p "$HOME/WORKDVD/" 2>&1 &>$DL;
case $1 in
1)
echo -e "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<dvdauthor>\n<vmgm>\n<fpc>subtitle=65; jump title 1;</fpc>\n</vmgm>\n<titleset>\n<titles>\n<audio samplerate=\"48khz\" format=\"$ACOD\" />\n<video resolution=\"${HF2}x${VF2}\" format=\"$TYPE\" />\n<pgc>" > ${DZ}.xml;
;;
2)
echo -e '<post>call vmgm menu 1;</post>\n</pgc>\n</titles>\n</titleset>\n</dvdauthor>' >> ${DZ}.xml;
;;
3)
if [ -e "/usr/bin/dvdauthor" ]; then
$DDK setGlobal L1 "B $($DDK text PP_2)";
$DDK execute Timer1;
echo -e "Gerando DVD em $HOME/WORKDVD ... \t \c";
$EXDA -o "$HOME/WORKDVD/DVD@pid/" -x "${DZ}.xml" 2>&1 &>$DL;
[ "$?" == "0" ] && echo "[Concluido]" || echo "[Parado]";
$DDK cancel Timer1;
else
echo "Pacote dvdauthor nao encontrado.";
fi
;;
esac
}
addsubs(){
if [ "$1" == "0" ]; then
if [ "@titles.checked" == "1" -a -n "$SPUMUX" ]; then
echo -e "1\n00:00:02,800 --> 00:00:11,801\n$TITLE\n" | tr '_' ' ' > /tmp/subtitle@pid.srt;
echo "<subpictures><stream><textsub filename=\"/tmp/subtitle@pid.srt\" characterset=\"UTF-8\" fontsize=\"25.0\" font=\"Georgia_Bold_Italic.ttf\" horizontal-alignment=\"center\" vertical-alignment=\"top\" top-margin=\"30\" subtitle-fps=\"25\" movie-width=\"$HF2\" movie-height=\"$VF2\" /></stream></subpictures>" > /tmp/spuxml@pid.xml;
spumux -s 0 -m dvd "/tmp/spuxml@pid.xml" < "${FOT}.mpg" > /tmp/videofinal@pid.mpg 2>/dev/null;
mv "/tmp/videofinal@pid.mpg" "${FOT}.mpg" 2>/dev/null 2>&1 &>$DL;
rm -f /tmp/spuxml@pid.xml /tmp/subtitle@pid.srt 2>/dev/null 2>&1 &>$DL;
fi
if [ -e "/tmp/subcmp@pid.srt" ]; then
echo "<subpictures><stream><textsub filename=\"/tmp/subcmp@pid.srt\" characterset=\"UTF-8\" fontsize=\"25.0\" font=\"Georgia_Bold_Italic.ttf\" horizontal-alignment=\"center\" vertical-alignment=\"top\" top-margin=\"30\" subtitle-fps=\"25\" movie-width=\"$HF2\" movie-height=\"$VF2\" /></stream></subpictures>" > /tmp/spuxml@pid.xml;
spumux -s 0 -m dvd "/tmp/spuxml@pid.xml" < "${FOT}.mpg" > /tmp/videofinal@pid.mpg 2>/dev/null;
mv "/tmp/videofinal@pid.mpg" "${FOT}.mpg" 2>/dev/null 2>&1 &>$DL;
rm -f /tmp/spuxml@pid.xml /tmp/subcmp@pid.srt 2>/dev/null 2>&1 &>$DL;
fi
fi
}
matroska_packer(){
if [ "$END" == "0" ]; then
echo "[Concluido]";
echo -e "Empacotando matroska ... \t \c";
/usr/bin/ffmpeg -i "/tmp/video_tmp@pid.avi" -vcodec copy -acodec copy -f matroska "$1" 2>/dev/null 2>&1 &>$DL;
if [ "$?" == "0" ]; then
echo "[Concluido]";
else
echo "[Erro ou cancelado]";
break;
fi
else
echo "[Erro ou cancelado]";
break;
fi
}
export LPOINT="0";
DDK="dcop @dcopid KommanderIf";
PL="Playlist";
SL="selection";
$DDK $SE canceler true;
enable_all(){
for m in GB{0,1,2,3,4,5,6,7,8} convert adiciona adiciona2 adiciona3 $PL play remove tela vbit abit; do
$DDK $SE $m $1;
done
}
enable_all false;
while : ; do NAME="$($DDK cellText $PL $UN 0)"; [ ! -n "$NAME" ] && break; UN=$[UN+1]; done;
$DDK $ST PP_1 0;
$DDK $ST PP_2 0;
$DDK setMaximum PP_1 100;
$DDK setMaximum PP_2 $[100*UN];
ABIT="$($DDK $SL abit)";
VBIT="$($DDK text vbit)";
TYPE="$($DDK $SL tela | awk '{ print $1 }'| tr [:upper:] [:lower:])";
case $TYPE in
ntsc*|pal*)
VF2="$($DDK selection tela | awk '{ print $2 }' | cut -dx -f2)";
HF2="$($DDK selection tela | awk '{ print $2 }' | cut -dx -f1)";
;;
*)
VF2="$($DDK selection tela | cut -dx -f2)";
HF2="$($DDK selection tela | cut -dx -f1)";
;;
esac
SRATE="48000";
if [ "$TYPE" == "ntsc" ]; then
KEY="18"; FPS="30000/1001";
if [ "$HF2:$VF2" == "720:480" -o "$HF2:$VF2" == "704:480" ]; then
VCOD="mpeg2video"; ACOD="ac3"; CH="-channels 6"; ILACE=":ilme:ildct";
else
VCOD="mpeg1video"; ACOD="mp2"; CH="-channels 2"; ILACE="";
fi;
else
KEY="15"; FPS="25";
if [ "$HF2:$VF2" == "720:576" -o "$HF2:$VF2" == "704:576" ]; then
VCOD="mpeg2video"; ACOD="ac3"; CH="-channels 6"; ILACE=":ilme:ildct";
else
VCOD="mpeg1video"; ACOD="mp2"; CH="-channels 2"; ILACE="";
fi;
fi
echo "$[UN] arquivos postos para convercao.";
if [ "$[UN]" != "0" ]; then
mkdvd 1;
for ((IN=0;IN<$[UN];IN++)); do
APC="$($DDK cellText $PL $IN 5)";
VF1="$($DDK cellText $PL $IN 3 | cut -d: -f2)";
HF1="$($DDK cellText $PL $IN 3 | cut -d: -f1)";
NV="$(fcalc "$HF2/$APC" 0)";
$DDK setGlobal L2 "0";
if [ "@wide.checked" == "0" -a "@fill.checked" == "0" ] || [ "@wide.checked" == "1" -a "@fill.checked" == "1" ]; then
if [ "$NV" -lt "405" -o "$NV" == "405" ]; then ASP="16/9"; else ASP="4/3"; fi;
EXPAND="expand=$HF1:::::$ASP,scale=$HF2:$VF2";
elif [ "@wide.checked" == "1" -a "@fill.checked" == "0" ]; then
ASP="16/9";
if [ "$NV" -lt "405" -o "$NV" == "405" ]; then
EXPAND="expand=$HF1:::::$ASP,scale=$HF2:$VF2";
else
VF="$(fcalc "9*$HF1/16" 0)";
EXPAND="crop=$HF1:$VF,scale=$HF2:$VF2";
fi;
elif [ "@wide.checked" == "0" -a "@fill.checked" == "1" ]; then
ASP="4/3";
if [ "$NV" -lt "405" -o "$NV" == "405" ]; then
EXPAND="expand=$HF1:::::$ASP,scale=$HF2:$VF2";
else
VF="$(fcalc "3*$HF1/4" 0)";
EXPAND="crop=$HF1:$VF,scale=$HF2:$VF2";
fi;
fi
ENDR="$($DDK cellText Playlist $IN 14)";
TITLE="$($DDK cellText Playlist $IN 13)";
FNAME="$($DDK cellText Playlist $IN 0)";
FILE="$ENDR/$FNAME";
ALANG="$($DDK cellText $PL $IN 11)";
case $ALANG in
[a-z][a-z])
ALANG=" -alang $ALANG";
;;
[0-9])
ALANG=" -aid $ALANG";
;;
*)
ALANG="";
;;
esac
SLANG="$($DDK cellText Playlist $IN 12)";
case $SLANG in
[a-z][a-z])
SLANG="-slang $SLANG -subfont-autoscale 2";
;;
[0-9])
SLANG="-sid $SLANG -subfont-autoscale 2";
;;
*srt)
cp -a "$($DDK cellText Playlist $IN 14)/$SLANG" /tmp/subcmp@pid.srt;
if [ -n "$SPUMUX" ]; then
SLANG="";
SFILE="/tmp/subcmp@pid.srt"
else
SLANG="-utf8 -sub /tmp/subcmp@pid.srt -subfont-autoscale 2";
fi
;;
*ass)
cp -a "$($DDK cellText Playlist $IN 14)/$SLANG" /tmp/subcmp@pid.ass;
if [ -n "$SPUMUX" ]; then
SLANG="";
SFILE="/tmp/subcmp@pid.ass"
else
SLANG="-utf8 -sub /tmp/subcmp@pid.ass -subfont-autoscale 2";
fi
;;
*)
SLANG="";
;;
esac;
MP3F="";
if [ "@audioonly.checked" == "1" ]; then
MP3F="$($DDK cellText $PL $IN 14)/$($DDK cellText $PL $IN 13).mp3";
FOT="/tmp/videofile@pid.avi";
PARAM2="-of avi";
PARAM3="mp3lame -lameopts vbr=2:br=128:mode=1 -af resample=44100,volume=4";
PARAM0="copy";
PARAM1="";
elif [ "@h264.checked" == "1" ]; then
EXPAND="";
PARAM0="x264 -x264encopts bitrate=$[VBIT]:turbo:subq=6:threads=4";
if [ "@fill.checked" == "1" -a "@wide.checked" == "0" ]; then EXPAND=",expand=720:::::4/3 -force-avi-aspect 4/3";
elif [ "@fill.checked" == "0" -a "@wide.checked" == "1" ]; then EXPAND=",crop=720:406 -force-avi-aspect 16/9"; fi
PARAM1="-vf pp=linblenddeint,scale=$HF2:-2,harddup$EXPAND";
PARAM2="-of avi";
PARAM3="mp3lame -lameopts vbr=2:br=128:mode=1 -af resample=44100,volume=4";
FPS="24";
FOT="$($DDK cellText $PL $IN 14)/$($DDK cellText $PL $IN 13)_CNV@pid";
elif [ "@XVID.checked" == "1" ]; then
EXPAND="";
PARAM0="xvid -xvidencopts bitrate=$[VBIT]:turbo:threads=4";
if [ "@fill.checked" == "1" -a "@wide.checked" == "0" ]; then EXPAND=",expand=720:::::4/3 -force-avi-aspect 4/3";
elif [ "@fill.checked" == "0" -a "@wide.checked" == "1" ]; then EXPAND=",crop=720:406 -force-avi-aspect 16/9"; fi
PARAM1="-vf pp=linblenddeint,scale=$HF2:-2,harddup$EXPAND";
PARAM2="-of avi";
PARAM3="mp3lame -lameopts vbr=2:br=128:mode=1 -af resample=44100,volume=4";
FPS="24";
FOT="$($DDK cellText $PL $IN 14)/$($DDK cellText $PL $IN 13)_CNV@pid";
else
PARAM2="-of mpeg -mpegopts format=dvd:tsaf";
FOT="$($DDK cellText $PL $IN 14)/$($DDK cellText $PL $IN 13)_CNV@pid";
[ @high.checked == 1 ] && HQ=":trell:mbd=2:precmp=2:subcmp=2:cmp=2:dia=-10:predia=-10:cbp:mv0:vqmin=1:lmin=1:dc=10";
if [ @onlycopy.checked == 1 ]; then
PARAM3="copy";
PARAM0="copy";
PARAM1="";
else
PARAM3="lavc";
PARAM0="lavc";
PARAM1="-vf pp=linblenddeint,$EXPAND:0,harddup -srate $SRATE $CH -af resample=$SRATE,volnorm,volume=4,lavcresample=$SRATE -lavcopts vcodec=$VCOD$ILACE:vrc_buf_size=1835:vrc_maxrate=9800:vbitrate=$VBIT:keyint=$KEY$HQ:turbo:vstrict=0:acodec=$ACOD:abitrate=$ABIT:aspect=$ASP";
fi
fi
EXMP="mencoder -noautosub -idx -audio-delay $ADLAY -oac $PARAM3 -ovc $PARAM0$VP_PARAM $PARAM2 $PARAM1 -ofps $FPS -o";
EXDA="dvdauthor";
$DDK setGlobal L1 "A $($DDK text PP_2)";
$DDK execute Timer1;
if [ "@h264.checked" == "1" ]; then
case "$FILE" in
*.[wW][mM][vV] | *.[rR][mM][vV] | *.[rR][mM][vV][bB] | *.[rR][pP][mM] | *.[fF][lL][vV] | *.[oO][gG][mM])
echo -e "Convertendo: $FILE ... \t \c";
for n in $TWO_STEPS; do
if [ "$[n]" == "0" ]; then VP_PARAM=""; OU_PARAM="/tmp/video_tmp@pid.avi";
else echo -e "Pass $[n]...\t\c"; VP_PARAM=":vpass=$[n]"; if [ "$[n]" == "1" ]; then OU_PARAM="/dev/null"; else OU_PARAM="/tmp/video_tmp@pid.avi"; fi; fi
$EXMP "$OU_PARAM" "$FILE" -aid 0 -subfont-autoscale 2 2>/dev/null 2>&1 &>$DL;
END="$?";
[ "$END" != "0" ] && break; [ "$END" == "0" -a "$[n]" != "0" ] && $DDK setGlobal L2 "$($DDK text PP_1)";
done
matroska_packer "${FOT}.mkv";
;;
*.[mM][pP][eE][gG] | *.[mM][pP][gG4] | *.[aA][vV][iI] | *.[vV][oO][bB])
echo -e "Convertendo: $FILE ... \t \c";
for n in $TWO_STEPS; do
if [ "$[n]" == "0" ]; then VP_PARAM=""; OU_PARAM="/tmp/video_tmp@pid.avi";
else echo -e "Pass $[n]...\t\c"; VP_PARAM=":vpass=$[n]"; if [ "$[n]" == "1" ]; then OU_PARAM="/dev/null"; else OU_PARAM="/tmp/video_tmp@pid.avi"; fi; fi
$EXMP "$OU_PARAM" "$FILE" $ALANG $SLANG 2>/dev/null 2>&1 &>$DL;
END="$?";
[ "$END" != "0" ] && break; [ "$END" == "0" -a "$[n]" != "0" ] && $DDK setGlobal L2 "$($DDK text PP_1)";
done
matroska_packer "${FOT}.mkv";
;;
*.[mM][kK][vV])
echo -e "Convertendo: $FILE ... \t \c";
for n in $TWO_STEPS; do
if [ "$[n]" == "0" ]; then VP_PARAM=""; OU_PARAM="/tmp/video_tmp@pid.avi";
else echo -e "Pass $[n]...\t\c"; VP_PARAM=":vpass=$[n]"; if [ "$[n]" == "1" ]; then OU_PARAM="/dev/null"; else OU_PARAM="/tmp/video_tmp@pid.avi"; fi; fi
$EXMP "$OU_PARAM" "$FILE" -sid 0 -subfont-autoscale 2 2>/dev/null 2>&1 &>$DL;
END="$?";
[ "$END" != "0" ] && break; [ "$END" == "0" -a "$[n]" != "0" ] && $DDK setGlobal L2 "$($DDK text PP_1)";
done
matroska_packer "${FOT}.mkv";
;;
*)
case "$FNAME" in
*.[iI][sS][oO])
FILE="$ENDR/$FNAME";
;;
*)
mkdir -p $HOME/WORKDVD/ 2>/dev/null;
FILE="$ENDR";
FOT="$HOME/WORKDVD/${FNAME}_CNV@pid";
;;
esac;
TLE="$(lsdvd "$FILE" 2>/dev/null | awk '/Longest track:/{ print $3 }')";
if [ "@wide.checked" == "0" -a "@fill.checked" == "0" ]; then
DVDNCROP="$(mplayer -ss 100 -endpos 1 -vo null -ao null -vf cropdetect dvd://"$TLE" -dvd-device "$FILE" 2>/dev/null 2>&1 | tr -d '().' | awk '/Crop area/{ print $(NF-1) " " $NF }' | sort | uniq)";
fi
if [ "@chaponly.checked" == "1" ]; then
mkdir -p "$HOME/WORKDVD/${FNAME}/" 2>/dev/null;
endc=""; oldc=""; ON="1";
for c in `chaplin -d "$FILE" -t "$TLE" -c 2>/dev/null | awk '/chapter.*begin:/{ print $4 }'`; do
if [ -n "$oldc" ]; then
echo -e "Convertendo: $FILE [$TITLE] Chapter: $ON ... \t \c";
for n in $TWO_STEPS; do
if [ "$[n]" == "0" ]; then VP_PARAM=""; OU_PARAM="/tmp/video_tmp@pid.avi";
else echo -e "Pass $[n]...\t\c"; VP_PARAM=":vpass=$[n]"; if [ "$[n]" == "1" ]; then OU_PARAM="/dev/null"; else OU_PARAM="/tmp/video_tmp@pid.avi"; fi; fi
$EXMP "$OU_PARAM" dvd://"$TLE" -dvd-device "$FILE" $ALANG $DVDNCROP -ss $oldc -endpos `echo "$c-$oldc" | bc -l` 2>/dev/null 2>&1 &>$DL;
END="$?";
[ "$END" != "0" ] && break; [ "$END" == "0" -a "$[n]" != "0" ] && $DDK setGlobal L2 "$($DDK text PP_1)";
done
matroska_packer "$HOME/WORKDVD/${FNAME}/${FNAME}_CNV@pid$(echo $[10000+ON] | cut -c2-).mkv";
ON="$[ON+1]";
fi
oldc="$c";
done
else
echo -e "Convertendo: $FILE [$TITLE] ... \t \c";
for n in $TWO_STEPS; do
if [ "$[n]" == "0" ]; then VP_PARAM=""; OU_PARAM="/tmp/video_tmp@pid.avi";
else echo -e "Pass $[n]...\t\c"; VP_PARAM=":vpass=$[n]"; if [ "$[n]" == "1" ]; then OU_PARAM="/dev/null"; else OU_PARAM="/tmp/video_tmp@pid.avi"; fi; fi
$EXMP "$OU_PARAM" dvd://"$TLE" -dvd-device "$FILE" $ALANG $DVDNCROP 2>/dev/null 2>&1 &>$DL;
END="$?";
[ "$END" != "0" ] && break; [ "$END" == "0" -a "$[n]" != "0" ] && $DDK setGlobal L2 "$($DDK text PP_1)";
done
matroska_packer "${FOT}.mkv";
fi
;;
esac
elif [ "@XVID.checked" == "1" ]; then
case "$FILE" in
*.[wW][mM][vV] | *.[rR][mM][vV] | *.[rR][mM][vV][bB] | *.[rR][pP][mM] | *.[fF][lL][vV] | *.[oO][gG][mM])
echo -e "Convertendo: $FILE ... \t \c";
for n in $TWO_STEPS; do
if [ "$[n]" == "0" ]; then VP_PARAM=""; OU_PARAM="${FOT}.avi";
else echo -e "Pass $[n]...\t\c"; VP_PARAM=":vpass=$[n]"; if [ "$[n]" == "1" ]; then OU_PARAM="/dev/null"; else OU_PARAM="${FOT}.avi"; fi; fi
$EXMP "$OU_PARAM" "$FILE" $ALANG $SLANG 2>/dev/null 2>&1 &>$DL;
END="$?";
[ "$END" != "0" ] && break; [ "$END" == "0" -a "$[n]" != "0" ] && $DDK setGlobal L2 "$($DDK text PP_1)";
done
if [ "$END" == "0" ]; then echo "[Concluido]"; else echo "[Parado]"; $DDK cancel Timer1; break; fi;
;;
*.[mM][pP][eE][gG] | *.[mM][pP][gG4] | *.[aA][vV][iI] | *.[vV][oO][bB])
echo -e "Convertendo: $FILE ... \t \c";
for n in $TWO_STEPS; do
if [ "$[n]" == "0" ]; then VP_PARAM=""; OU_PARAM="${FOT}.avi";
else echo -e "Pass $[n]...\t\c"; VP_PARAM=":vpass=$[n]"; if [ "$[n]" == "1" ]; then OU_PARAM="/dev/null"; else OU_PARAM="${FOT}.avi"; fi; fi
$EXMP "$OU_PARAM" "$FILE" $ALANG $SLANG 2>/dev/null 2>&1 &>$DL;
END="$?";
[ "$END" != "0" ] && break; [ "$END" == "0" -a "$[n]" != "0" ] && $DDK setGlobal L2 "$($DDK text PP_1)";
done
if [ "$END" == "0" ]; then echo "[Concluido]"; else echo "[Parado]"; $DDK cancel Timer1; break; fi;
;;
*.[mM][kK][vV])
echo -e "Convertendo: $FILE ... \t \c";
for n in $TWO_STEPS; do
if [ "$[n]" == "0" ]; then VP_PARAM=""; OU_PARAM="${FOT}.avi";
else echo -e "Pass $[n]...\t\c"; VP_PARAM=":vpass=$[n]"; if [ "$[n]" == "1" ]; then OU_PARAM="/dev/null"; else OU_PARAM="${FOT}.avi"; fi; fi
$EXMP "$OU_PARAM" "$FILE" -sid 0 -subfont-autoscale 2 2>/dev/null 2>&1 &>$DL;
END="$?";
[ "$END" != "0" ] && break; [ "$END" == "0" -a "$[n]" != "0" ] && $DDK setGlobal L2 "$($DDK text PP_1)";
done
if [ "$END" == "0" ]; then echo "[Concluido]"; else echo "[Parado]"; $DDK cancel Timer1; break; fi;
;;
*)
case "$FNAME" in
*.[iI][sS][oO])
FILE="$ENDR/$FNAME";
;;
*)
mkdir -p $HOME/WORKDVD/ 2>/dev/null;
FILE="$ENDR";
FOT="$HOME/WORKDVD/${FNAME}_CNV@pid";
;;
esac;
TLE="$(lsdvd "$FILE" 2>/dev/null | awk '/Longest track:/{ print $3 }')";
if [ "@wide.checked" == "0" -a "@fill.checked" == "0" ]; then
DVDNCROP="$(mplayer -ss 100 -endpos 1 -vo null -ao null -vf cropdetect dvd://"$TLE" -dvd-device "$FILE" 2>/dev/null 2>&1 | tr -d '().' | awk '/Crop area/{ print $(NF-1) " " $NF }' | sort | uniq)";
fi
if [ "@chaponly.checked" == "1" ]; then
mkdir -p "$HOME/WORKDVD/${FNAME}/" 2>/dev/null;
endc=""; oldc=""; ON="1";
for c in `chaplin -d "$FILE" -t "$TLE" -c 2>/dev/null | awk '/chapter.*begin:/{ print $4 }'`; do
if [ -n "$oldc" ]; then
echo -e "Convertendo: $FILE [$TITLE] Chapter: $ON ... \t \c";
for n in $TWO_STEPS; do
if [ "$[n]" == "0" ]; then VP_PARAM=""; OU_PARAM="$HOME/WORKDVD/${FNAME}/${FNAME}_CNV@pid$(echo $[10000+ON] | cut -c2-).avi";
else echo -e "Pass $[n]...\t\c"; VP_PARAM=":vpass=$[n]"; if [ "$[n]" == "1" ]; then OU_PARAM="/dev/null"; else OU_PARAM="$HOME/WORKDVD/${FNAME}/${FNAME}_CNV@pid$(echo $[10000+ON] | cut -c2-).avi"; fi; fi
$EXMP "$OU_PARAM" dvd://"$TLE" -dvd-device "$FILE" $ALANG $DVDNCROP -ss $oldc -endpos `echo "$c-$oldc" | bc -l` 2>/dev/null 2>&1 &>$DL;
END="$?";
[ "$END" != "0" ] && break; [ "$END" == "0" -a "$[n]" != "0" ] && $DDK setGlobal L2 "$($DDK text PP_1)";
done
ON="$[ON+1]";
if [ "$END" == "0" ]; then echo "[Concluido]"; else echo "[Parado]"; $DDK cancel Timer1; break; fi;
fi
oldc="$c";
done
else
echo -e "Convertendo: $FILE [$TITLE] ... \t \c";
for n in $TWO_STEPS; do
if [ "$[n]" == "0" ]; then VP_PARAM=""; OU_PARAM="${FOT}.avi";
else echo -e "Pass $[n]...\t\c"; VP_PARAM=":vpass=$[n]"; if [ "$[n]" == "1" ]; then OU_PARAM="/dev/null"; else OU_PARAM="${FOT}.avi"; fi; fi
$EXMP "$OU_PARAM" dvd://"$TLE" -dvd-device "$FILE" $ALANG $DVDNCROP 2>/dev/null 2>&1 &>$DL;
END="$?";
[ "$END" != "0" ] && break; [ "$END" == "0" -a "$[n]" != "0" ] && $DDK setGlobal L2 "$($DDK text PP_1)";
done
if [ "$END" == "0" ]; then echo "[Concluido]"; else echo "[Parado]"; $DDK cancel Timer1; break; fi;
fi
;;
esac
else
case "$FILE" in
*.[wW][mM][vV] | *.[rR][mM][vV] | *.[rR][mM][vV][bB] | *.[rR][pP][mM] | *.[fF][lL][vV] | *.[oO][gG][mM])
echo -e "Convertendo: $FILE ... \t \c";
for n in $TWO_STEPS; do
if [ "$[n]" == "0" ]; then VP_PARAM=""; OU_PARAM="${FOT}.mpg";
else echo -e "Pass $[n]...\t\c"; VP_PARAM=":vpass=$[n]"; if [ "$[n]" == "1" ]; then OU_PARAM="/dev/null"; else OU_PARAM="${FOT}.mpg"; fi; fi
$EXMP "$OU_PARAM" "$FILE" $SLANG 2>/dev/null 2>&1 &>$DL;
END="$?";
[ "$END" != "0" ] && break; [ "$END" == "0" -a "$[n]" != "0" ] && $DDK setGlobal L2 "$($DDK text PP_1)";
done
result 1 $END;
if [ "$?" == "0" ]; then
if [ "@titles.checked" == "1" -a -n "$SPUMUX" -a ! -n "$MP3F" ]; then
e
Removendo carácter especial de arquivos recursivamente
Script para checagem de Ponto de Acesso.
Criação de Usuarios , Grupo e instalação do servidor de arquivos samba
Nenhum comentário foi encontrado.
Cirurgia para acelerar o openSUSE em HD externo via USB
Void Server como Domain Control
Modo Simples de Baixar e Usar o bash-completion
Monitorando o Preço do Bitcoin ou sua Cripto Favorita em Tempo Real com um Widget Flutuante
Como implementar Raid (0, 1, 5, 6, 10 e 50)
fusermount3 no Ubuntu 25.10 - mantenha o perfil do AppArmor
[Resolvido] dlopen(): error loading libfuse.so.2 AppImages require FUSE to run.
Criação de diretórios e aplicação de restrições de acesso no Linux
Como programar um sistema de controle para distribuições linux em c? (0)
Compartilhar ZEBRA ZD220 na rede (2)
Como programar um software que seja utilizado para coleta de dados em ... (1)









