Bash – avconv, konwersja mkv to avi.
Strona główna Ubuntu C++ Hardware HTML i javascript Java Software SQL

Bash – avconv, konwersja mkv to avi.

Dodano: 2013-01-23

W systemach z rodziny Linux, można napotkać na problemy z odtwarzaniem prawidłowym filmów w formacie „matroska” (mkv). Najczęściej jest to problem z prawidłowym zinterpretowaniem kodowania dźwięku, co w przypadku programu VLC 2.0.5 powoduje wyświetlenie komunikatu o braku możliwości odtworzenia prawidłowo pliku wideo. Jeżeli skorzystamy z innego programu do odtwarzania plików video np.: Totem Movie Player 3.0.1 to dźwięk będzie się zacinał jak człowiek w czasie golenia bardzo tępą brzytwą ;p

Z rozwojem oprogramowania problem ten zostanie na pewno rozwiązany, jednak jeżeli chcemy używać VLC to najlepiej przekonwertować plik video do formatu avi. Komenda poniżej wykonuje konwersję pliku mkv to avi, jakość wynikowego pliku jest zadowalająca:

Poniżej jest kod, który wyszukuje pliki w formacie mkv w danej lokalizacji i konwertuje je na pliki avi.

./mkv2avi.bash [destintionFolder]

#!/bin/bash

if [ "$1" = "--help" ]; then
	echo "The script convert mkv movie to avi.";
	echo "The script has one parameter";
	echo "	--help - description, what you can do,";
	echo "	[pathToDirectory] - the path of the folder, optional";
	exit 0;
fi;

if [ "$1" = ""  ]; then
	DEST=`pwd`"/";
else
	if [ ! -d $1 ]; then
		echo "";
		echo "The argument \""$1"\" is not directory!!!";
		echo "";
		exit 1;
	fi;
	DEST=$1"/";
fi;

echo "Start working in: \""$DEST"\"";

for FF in $DEST*; do
	rr=`file -bi "$FF"`;
	if [ "$rr" = "video/x-matroska; charset=binary" ]; then
		echo "\""`basename "$FF"`"\" is *.mkv.";
		avconv -i "$FF" -strict experimental -vcodec libx264 -preset fast -crf 20 -threads 2 -acodec libmp3lame -ab 128k "${FF%.*}"".avi";
	fi;
done;

exit 0;