Как скачать видео с сайта: продолжение.

В своей предыдущей статье Как скачать видео с сайта я рассказал о 4-х способах сохранения видеофайлов с сайтов, и самый популярный из них – достать файл из кэша браузера. Однако сейчас ситуация изменилась, после обновления Flash Player стал себя вести по-другому. Он по-прежнему кэширует видеофайлы на диске в директории /tmp, однако невооруженным взглядом такие файлы не видны; команда ls ничего не покажет.

Однако, если начать загрузку интересующего нас видео ролика:

и в командной строке запустить:

$ lsof | grep Flash
plugin-co 12081 ed 16u REG 8,4 32839768 473170 /tmp/FlashXXqNVerC (deleted)

Интересное кино получается. Файл открыт, используется, и при этом удален! Ну и хрен с ним, все равно его можно будет «оживить» простой командой копирования из поддиректории /proc/

Не буду томить, вот оживляющий скрипт:

#!/bin/bash
pid=`pgrep -f flashplayer | tail -1`
file=`lsof -p $pid | grep '/tmp/Flash' | awk 'END{print "/proc/" $2 "/fd/" $4}' | sed 's/[rwu]$//'`
/bin/cp $file "/tmp/movie.flv"

после запуска скрипта интересующее нас видео будет лежать в /tmp/movie.flv

Как сделать видеоклип из фотографий

Дано: несколько фоток и подходящая музыка.
Требуется: сделать из них простенький клип.
Софт: mencoder (freeware)

Чтобы нормально все выглядело, нам надо знать продолжительность музыкального трека в секундах и количество фотографий. В моем случае трек был на 132 секунды, и у меня было 14 фоток. Получается, чтобы равномерно их показать, смена кадров должна происходить один раз в 9,43 секунды (132 / 14). Соответственно, FPS (Frames Per Second) для ролика составит (14 / 132) = 0,106

Ну и получить клип можно одной командой:

mencoder mf://*.jpg -mf fps=0.106 -ovc lavc -lavcopts vcodec=mpeg4 -audiofile theme.mp3 -oac mp3lame -lameopts abr:br=160 -srate 44100 -ofps 25 -o output.avi

Мне, как и любому программисту, лениво руками считать количество файлов и продолжительность музыкального трека. Поэтому я cваял простенький скрипт на Perl, который и делает за меня эту грязную работу:

#!/usr/bin/perl -w
use MP3::Info;
my $mask = "*.jpg";
my @pics = glob($mask);
my @sounds = glob("*.mp3");
my $a = get_mp3info($sounds[0]);
my $seconds = $a->{'SECS'};
my $pics_number = $#pics + 1;
my $FPS = $pics_number / $seconds;
my $cmd = "mencoder mf://".$mask." -mf fps=".$FPS." -ovc lavc -lavcopts vcodec=mpeg4 -audiofile ".$sounds[0]." -oac mp3lame -lameopts abr:br=160 -srate 44100 -ofps 25 -o output.avi";
my $res = system($cmd);

И вот что у меня получилось:

Копирайты: фотки мои, музыка The Dead Rocks, One Million Dollar Theme.

Еще по теме: Как пережать 3gp в avi, Как скачать видео с сайта, Мои путешествия – избранное

Как скачать видео с сайта

Есть как минимум 4 разных способа сграбить видео с дружественных сайтов. Итак:

1. Воспользоваться сторонним сервисом, вроде этого: keepvid.com.

Плюсы: удобно; дружественный сайт не увидит ваш IP адрес.

Минусы: Зависимость от стороннего сервиса; не все сайты с видео поддерживаются

2. Использовать плагин в браузере, для Firefox это могут быть Download Helper, Flash Video Resources Downloader или подобная приблуда.

Плюсы: легко настраивается; несложно скачивать

Минусы: Firefox от плагинов жрет больше памяти; работает с небольшим числом сайтов

3. Записать все, что происходит на экране, в видеофайл. Для линуксоидов это совсем не сложно, куча бесплатных програм позволяет это делать. Например, RecordMyDesktop.

Плюсы: Работает железобетонно всегда и везде; Можно отключить звук при записи, или наложить свой; Видео можно записывать не только целиком, но и частями, обрезая всяческие логотипы, бегущие строки и прочий мусор; Можно записывать не только видео, но и движения курсора мыши, например.

Минусы: Требуется мощный компьютер, чтобы одновременно проигрывать видео и записывать его, ресурсы кушаются совсем не кисло; Качество записанного изображения может быть хуже, если число кадров в секунду в записываемом видео не совпадает с тем же параметром в проигрываемом ролике (т.е. требуется дополнительная настройка).

И на закуску, мой любимый способ:
4. Вытащить видео из кэша браузера Работает оно примерно так. Открываем интересующее нас видео:

Ждем, когда видео полностью загрузится, и лезем в /tmp , т.к. там Firefox хранит свой кэш. Вот что я нашел у себя:

ed@notebook:/tmp> ls -l Flash*
-rw------- 1 ed users 14196852 Ноя 7 14:35 FlashZlG62O

Копируем его куда-нибудь, и переименовываем в “The Unforgiven cover with solo – Metallica.flv” . Все, ролик можно смотреть оффлайн.

Update: В комментариях к этому сообщению я узнал о более элегантном способе получить видеофайл из кэша. После того, как видео полностью загрузилось, надо в адресную строку Firefox вбить:
about:cache
Далее смотрим дисковый кэш (Disk cache device => List Cache Entries, и ищем файл по размеру (он совпадает байт в байт с временным файлом). И за пару кликов его легко можно сохранить в любое удобное место. По трудозатратам такой способ чуть сложнее копирования временного файла, но зато он работает под Windows и позволяет сохранять файл даже в том случае, когда копирование не получается (например, если винда ругается на то, что файл открыт).

Плюсы: Не надо ничего дополнительно ставить, все работает и так. На всех сайтах, что я проверял, этот способ работает на ура.

Минусы: Надо напрягаться, копировать и переименовывать файл. Иначе рано или поздно кэш очистится и видео придется качать заново. Но этот недостаток не такой уж и страшный.

Update 2: Если в /tmp не находятся файлы по команде

$ ls -l Flash*

это означает, что у вас используется обновленная версия Flash-плеера, и чтобы вы смогли достать файл из кэша, прочитайте статью Как скачать видео с сайта: продолжение.

Оффтопик: Nirvana, Rape Me. Интересные переделки известного хита

Если вам чуждо творчество группы Nirvana – проходите мимо, этот пост не для вас. Здесь я решил собрать самые интересные переделки легендарной песни Rape Me.

Например, некто Ричард Сыр, смог превратить эту серьезную песню в довольно веселую вещь:
Nirvana video synced with Richard Cheese cover

Никогда раньше не видел, как девушки исполняют эту песню. Этот ролик мне показался интересным:

Ну и на закуску:
The String Quartet Tribute To Nirvana – Rape Me

Piano Instrumental – Nirvana – Rape Me