[HOWTO] Ściąganie i konwersja (na avi) filmów z YouTube

Awatar użytkownika
vlogical
Serdeczny Borsuk
Serdeczny Borsuk
Posty: 120
Rejestracja: 07 mar 2009, 21:55
Płeć: Mężczyzna

[HOWTO] Ściąganie i konwersja (na avi) filmów z YouTube

Post autor: vlogical » 06 paź 2009, 14:58

Chciałbym się z wami podzielić prostym sposobem ściągania, a potem konwersji filmików z youtube. Mój sposób przedstawię w formie skryptu (napoisanego z resztą przeze mnie).

Do poprawnego działania skryptów potrzebne będą nam pakiety: mplayer, mencoder, zenity, youtube-dl

Skrypt przygotowałem w dwóch wersjach:
1.

Kod: Zaznacz cały

#!/bin/bash
name=$(/usr/bin/zenity --entry --title="Nazwa filmu" --height=100 --width=300 --text="Podaj nazwę swojego filmu ")
mkdir ~/tmp-"$name"
cp /tmp/Fla* ~/tmp-"$name"/movie-flash.flv

mplayer ~/tmp-"$name"/movie-flash.flv -vc null -ac null -dumpaudio -dumpfile ~/tmp-"$name"/audio-mp3.mp3
lame --decode ~/tmp-"$name"/audio-mp3.mp3 -b 128 -o ~/tmp-"$name"/audio-wav.wav
mencoder ~/tmp-"$name"/movie-flash.flv -o ~/tmp-"$name"/movie-avi.avi -ofps 22 -srate 44100 -ovc xvid -xvidencopts bitrate=1000 :max_bframes=0:quant_type=h263 : me_quality=4 -audiofile ~/tmp-"$name"/audio-wav.wav -oac lavc -lavcopts acodec=mp2:abitrate=128

cp ~/tmp-"$name"/movie-avi.avi ~/Wideo/Pobrane/"$name".avi

rm ~/tmp-"$name"/movie-flash.flv
rm ~/tmp-"$name"/movie-avi.avi
rm ~/tmp-"$name"/audio-mp3.mp3
rm ~/tmp-"$name"/audio-wav.wav
rm -r ~/tmp-"$name"

/usr/bin/zenity --info --title="Konwersja filmu" --height=100 --width=300 --text="Konwersja zakończona powodzeniem"
Ta wersja nie wymaga pakietu youtube-dl. Już piszę dlaczego... Otóż kiedy oglądamy jakiś filmik na youtube jest on ściągany na dysk i zapisywany do folderu /tmp - wystarczy go przekonwertować.


2.

Kod: Zaznacz cały

#!/bin/bash
url=$(/usr/bin/zenity --entry --title="Link do filmu" --height=100 --width=300 --text="Wklej tu link do filmu ")
name=$(/usr/bin/zenity --entry --title="Nazwa filmu" --height=100 --width=300 --text="Podaj nazwę swojego filmu ")

mkdir ~/tmp-"$name"

youtube-dl "$url" -b -o ~/tmp-"$name"/movie-flash.flv

mplayer ~/tmp-"$name"/movie-flash.flv -vc null -ac null -dumpaudio -dumpfile ~/tmp-"$name"/audio-mp3.mp3
lame --decode ~/tmp-"$name"/audio-mp3.mp3 -b 128 -o ~/tmp-"$name"/audio-wav.wav
mencoder ~/tmp-"$name"/movie-flash.flv -o ~/tmp-"$name"/movie-avi.avi -ofps 22 -srate 44100 -ovc xvid -xvidencopts bitrate=1000 :max_bframes=0:quant_type=h263 : me_quality=4 -audiofile ~/tmp-"$name"/audio-wav.wav -oac lavc -lavcopts acodec=mp2:abitrate=128

cp ~/tmp-"$name"/movie-avi.avi ~/Wideo/Pobrane/"$name".avi

rm ~/tmp-"$name"/movie-flash.flv
rm ~/tmp-"$name"/movie-avi.avi
rm ~/tmp-"$name"/audio-mp3.mp3
rm ~/tmp-"$name"/audio-wav.wav
rm -r ~/tmp-"$name"

/usr/bin/zenity --info --title="Konwersja filmu" --height=100 --width=300 --text="Konwersja zakończona powodzeniem"

A teraz o co w tym wszystkim chodzi (na podstawie drugiego skryptu):
1.

Kod: Zaznacz cały

url=$(/usr/bin/zenity --entry --title="Link do filmu" --height=100 --width=300 --text="Wklej tu link do filmu ")
Wyświetlenie okienka z zapytaniem o link do filmu (przykładowy link: http://www.youtube.com/watch?v=UwpYDnwOSdA). Po czym link zapisywany jest do zmiennej

2.

Kod: Zaznacz cały

name=$(/usr/bin/zenity --entry --title="Nazwa filmu" --height=100 --width=300 --text="Podaj nazwę swojego filmu ")
Wyświetlenie okienka z zapytaniem o nazwę filmu (nazwę pliku docelowego). Po czym zapisanie nazwy do zmiennej.

3.

Kod: Zaznacz cały

mkdir ~/tmp-"$name"
Utworzenie katalogu tymczasowego w naszym katalogu domowym. Taka nazwa katalogu gwarantuje możliwość kilkukrotnego, jednoczesnego wykonywania skryptu.

4.

Kod: Zaznacz cały

youtube-dl "$url" -b -o ~/tmp-"$name"/movie-flash.flv
Ściągnięcie filmu (-b oznacza że zostanie ściągnięty film w możliwie najlepszej jakości) i zapisanie go do katalogu tymczasowego.

5.

Kod: Zaznacz cały

mplayer ~/tmp-"$name"/movie-flash.flv -vc null -ac null -dumpaudio -dumpfile ~/tmp-"$name"/audio-mp3.mp3
lame --decode ~/tmp-"$name"/audio-mp3.mp3 -b 128 -o ~/tmp-"$name"/audio-wav.wav
Krok, który wydaje się zupełnie niepotrzebny - wyodrębnienie ścieżki dźwiękowej z naszego filmiku i przekonwertowanie jej do formatu WAVE. Dlaczego właśnie tak? Odpowiedź jest prosta - przy konwersji flv to avi często występują problemy z synchronizacją dźwięku z obrazem... (Proste jak drut :) )

6.

Kod: Zaznacz cały

mencoder ~/tmp-"$name"/movie-flash.flv -o ~/tmp-"$name"/movie-avi.avi -ofps 22 -srate 44100 -ovc xvid -xvidencopts bitrate=1000 :max_bframes=0:quant_type=h263 : me_quality=4 -audiofile ~/tmp-"$name"/audio-wav.wav -oac lavc -lavcopts acodec=mp2:abitrate=128
Konwersja naszego filmu i dołączenie wyodrębnionej w poprzednim kroku ścieżki dźwiękowej.

7.

Kod: Zaznacz cały

cp ~/tmp-"$name"/movie-avi.avi ~/Wideo/Pobrane/"$name".avi
Skopiowanie naszego pliku do katalogu ~/Wideo/Pobrane (katalog ten należy uprzednio stworzyć)

8.

Kod: Zaznacz cały

rm ~/tmp-"$name"/movie-flash.flv
rm ~/tmp-"$name"/movie-avi.avi
rm ~/tmp-"$name"/audio-mp3.mp3
rm ~/tmp-"$name"/audio-wav.wav
rm -r ~/tmp-"$name"
Usunięcie plików tymczasowych

9.

Kod: Zaznacz cały

/usr/bin/zenity --info --title="Konwersja filmu" --height=100 --width=300 --text="Konwersja zakończona powodzeniem"
Wyświetlenie informacji o zakończeniu konwersji.

Skrypt należy wkleić do edytora tekstu, zapisać jako plik z rozszerzeniem .sh i nadać prawa do wykonywania.

UWAGA!!!
* pamiętaj o utworzeniu katalogu ~/Wideo/Pobrane
** Skrypt nie jest "głupotoodporny", więc nie wpisuj do pól tekstowych informacji o które nie jesteś proszony i nie zostawiaj niewypełnionych pól
*** upewnij się, że masz wszystkie potrzebne pakiety

Życzę miłej zabawy :)
ODPOWIEDZ

Wróć do „Software-Multimedia”