Skocz do zawartości

Witaj!

Zaloguj lub Zarejestruj się aby uzyskać pełny dostęp do forum.

- - - - -

Czynność katalogu, pomija niektóre pliki


  • Zaloguj się, aby dodać odpowiedź
Brak odpowiedzi do tego tematu

#1 Gość_oneghost_*

Gość_oneghost_*

Napisano 11 maja 2013 - 21:39

Chcę zrobić akcję, która będzie mi automatycznie konwertować filmy pobierane do katalogu. Napisałem sobie skrypt w bashu i chcę to połączyć z automatorem. Problem jest taki, że jak np. kopiuję kilka filmów do katalogu to akcja działa ale nie zawsze. Czasem pomija kilka plików. Jaka może być tego przyczyna? Dodaję zdjęcia z automatora i skrypt w bashu.
[ATTACH=CONFIG]15005[/ATTACH]

ConvertMovieToMP4.sh
filename=$1

echo "$filename" >> ~/Inne/Aplikacje\ i\ skrypty/ConvertMovieToMP4.txt

fileinfo=$(~/Inne/Aplikacje\ i\ skrypty/ffmpeg/ffmpeg -i "$filename" 2>&1 > /dev/null)

# Pobieranie informacji o Video
videoinfo=$(echo "$fileinfo" | grep Stream.*Video:.*)
h264=$(echo $videoinfo | grep h264)
if [ ! -z "$h264" ]
then
	if echo $videoinfo | grep "High 10"
	then
		unset h264
	fi
fi
videolang=${videoinfo:16:3}
videostreamid=$(echo $videoinfo | cut -d ":" -f 2 | cut -d "(" -f 1)

# Pobieranie informacji o Audio
audioinfo=$(echo "$fileinfo" | grep Stream.*Audio:.*)
audios=()
if [ ! -z "$audioinfo" ]
then
	while read audio
	do
		aac=$(echo $audio | grep aac)
		if [ ! -z "$aac" ]
		then
			aac="aac"
		else
			aac="other"
		fi
		chs=1
		stereo=$(echo $audio | grep stereo)
		a51=$(echo $audio | grep "5.1")
		if [ ! -z "$a51" ]
		then
			chs=6
		elif [ ! -z "$stereo" ]
		then
			chs=2
		fi
		audiolang=${audio:12:3}
		streamid=$(echo $audio | cut -d ":" -f 2 | cut -d "(" -f 1)
		audios+=("$streamid|$aac|$chs|$audiolang")
	done <<< "$audioinfo"
fi

# Pobieranie informacji o Napisach
subtitleinfo=$(echo "$fileinfo" | grep Stream.*Subtitle:.*)
subtitles=()
if [ ! -z "$subtitleinfo" ]
then
	while read subtitle
	do
		movtext=$(echo $subtitle | grep mov_text)
		if [ ! -z "$movtext" ]
		then
			movtext="mov_text"
		else
			movtext="other"
		fi
		subtitlelang=${subtitle:12:3}
		streamid=$(echo $subtitle | cut -d ":" -f 2 | cut -d "(" -f 1)
		subtitles+=("$streamid|$movtext|$subtitlelang")
	done <<< "$subtitleinfo"
fi

# Utwórz komendę do wykonania
if [ ! -z "$h264" ]
then
	videocommand="-map 0:$videostreamid -codec:v copy"
else
	videocommand="-map 0:$videostreamid -codec:v libx264 -qmax 25"
fi

i=0
k="k"
for audio in "${audios[@]}"
do
	streamid=$(echo $audio | cut -d "|" -f 1)
	aac=$(echo $audio | cut -d "|" -f 2)
	chs=$(echo $audio | cut -d "|" -f 3)
	lang=$(echo $audio | cut -d "|" -f 4)
	if [ aac=="aac" ]
	then
		audiocommand="$audiocommand -map 0:$streamid -codec:a:$i copy"
	else
		br=$((chs*256))
		audiocommand="$audiocommand -map 0:$streamid -codec:a:$i aac -b:a:$i $br$k"
	fi
	i=$((i+1))
done

i=0
for subtitle in "${subtitles[@]}"
do
	streamid=$(echo $subtitle | cut -d "|" -f 1)
	movtext=$(echo $subtitle | cut -d "|" -f 2)
	lang=$(echo $subtitle | cut -d "|" -f 3)
	if [ movtext=="mov_text" ]
	then
		subtitlescommand="$subtitlescommand -map 0:$streamid -codec:s:$i copy"
	else
		subtitlescommand="$subtitlescommand -map 0:$streamid -codec:s:$i mov_text"
	fi
	i=$((i+1))
done

command="-movflags faststart $videocommand $audiocommand $subtitlescommand"
echo $command

# Wykonaj
date >> ~/Inne/Aplikacje\ i\ skrypty/ConvertMovieToMP4.txt
echo "$1" >> ~/Inne/Aplikacje\ i\ skrypty/ConvertMovieToMP4.txt
echo "~/Inne/Aplikacje\ i\ skrypty/ffmpeg/ffmpeg -i \"$filename\" $command \"$filename.mp4\"" >> ~/Inne/Aplikacje\ i\ skrypty/ConvertMovieToMP4.txt
~/Inne/Aplikacje\ i\ skrypty/ffmpeg/ffmpeg -i "$filename" $command "$filename.mp4" 2>> ~/Inne/Aplikacje\ i\ skrypty/ConvertMovieToMP4.txt
echo "------------------------------------------------" >> ~/Inne/Aplikacje\ i\ skrypty/ConvertMovieToMP4.txt

AutoConvertMovieToMP4.sh
i=1
while true
do
	if [ $i -gt 1000 ]
	then
		break
	fi

	wait=`lsof -f -- "$1"|wc -l`
	if [ $wait -lt 1 ]
	then
		~/Inne/Aplikacje\ i\ skrypty/ConvertMovieToMP4.sh "$1"
		break
	else
		sleep 6
		i=$((i+1))
	fi
done





Użytkownicy przeglądający ten temat: 1

0 użytkowników, 1 gości, 0 anonimowych