Instalujemy potrzebne programy:
sudo apt-get install mplayer2 ffmpeg
Upewniamy się, że program youtube-dl mamy w najnowszej wersji:
sudo apt-get remove -y youtube-dl
sudo wget https://yt-dl.org/latest/youtube-dl -O /usr/local/bin/youtube-dl
sudo chmod a+x /usr/local/bin/youtube-dl
hash -r
Jeśli polecenie:
youtube-dl -g "https://www.youtube.com/watch?v=youtube_video_code"
zwróci błąd: ERROR: Signature extraction failed, to najprawdopodobniej mamy zainstalowaną
starszą wersję programu youtube-dl. Jeśli jednak mamy najnowszą wersję, to filmu z Yutube
nie ściągniemy (do czasu aż autor programu nie dostosuje go do zmian na Youtubie).
Teraz utwórzmy w katalogu /usr/local/bin plik grab.sh o następującej zawartości:
#!/bin/bash
rm -rf video.mov video.url
rm -rf audio.mov audio.url
for url in $(youtube-dl -g "http://www.youtube.com/watch?v=$1"); do
if [ ! -r video.mov ]; then
echo $url > video.url
cat video.url | xargs curl -L > video.mov
continue
fi
if [ ! -r audio.mov ]; then
echo $url > audio.url
cat audio.url | xargs curl -L > audio.mov
break
fi
done;
ffmpeg -i video.mov -i audio.mov -vcodec copy -acodec copy "$1.mov"
if [ -r "$1.mov" ]; then
rm -rf video.mov video.url
rm -rf audio.mov audio.url
fi
ls -al
Nadajmy mu uprawnienia do wykonywania:
sudo chmod 755 /usr/local/bin/grab.sh
Od teraz film ściągniemy wydając polecenie:
grab.sh youtube_video_code
Powyższy skrypt ściąga video w dwóch plikach, oddzielnie dla video oraz audio. Po ściągnięciu powyższych plików
są one scalane w jeden plik audio-video.
Skrypt ten czasami zwraca błąd:
moov atom not found
Oznacza to, że jeden z tych plików albo oba nie ściągnęły się poprawnie. W przeważającej liczbie przypadków
wystarczy jeszcze raz odpalić ten skrypt i film ściągnie się poprawnie. Jeśli pomimo kilkukrotnego wywołania
skryptu cały czas pluje on powyższym błędem, to filmu nie da się ściągnąć. W tym przypadku w bieżącym katalogu
pozostaną pliki: audio.mov, video.mov, oraz audio.url i video.url, które można wykorzystać to zbadania przyczyny
niepowodzenia.
audio.mov: Invalid data found when processing input
Instalujemy potrzebne programy:
sudo apt-get install mplayer2
Jeśli plik video, który chcemy pobrać znajduje się na stronie dostępnej przez protokół http, to do
jego pobrania wystarczy wywołać poniższe polecenie:
mplayer http://url-strony-z-filmem -dumpstream -dumpfile nazwa-pliku-wyjsciowego.flv
Dla wygody, poniżej znajduje się krótki skrypt, który wystarczy wywołać z parametrem będącym pełnym urlem do strony z filmem. Odetnie on ostatni człon urla i utworzy z niego nazwę pliku docelowego. Jeśli plik taki nie istnieje w bieżącym katalogu, to nastąpi pobranie filmu:
#!/bin/bash
url="$1"
fname=${url##http*/}.flv
if [ ! -r "./$fname" ]; then
mplayer $url -dumpstream -dumpfile $fname
fi