Как сохранить буферизованное флэш-видео (в Linux)?
Раньше был метод для извлечения буферизованного флэш-видео в любых браузерах (например, Firefox, Chrome и т. Д.), Который использует команду ps
и шпионит fd
это указывает на временный файл в памяти. К сожалению, этот метод больше не работает. Например, все fd
Используется хром это:
chrome 19412 ymf 69u REG 0,14 470364 0 270129 /dev/shm/.org.chromium.Chromium.1fzPuo (deleted)
chrome 19412 ymf 77u REG 0,14 131060 0 270141 /dev/shm/.org.chromium.Chromium.94K6Di (deleted)
chrome 19412 ymf 103u REG 8,5 2052 0 4230990 /var/tmp/etilqs_01QDHFotJcLOpBS (deleted)
chrome 19412 ymf 112u REG 8,5 24600 0 4232788 /var/tmp/etilqs_tFao7GamL5cslaZ (deleted)
chrome 19412 ymf 188u REG 8,6 16384 0 1310851 /home/ymf/.config/chromium/Default/History Index 2013-07-journal (deleted)
chrome 19412 ymf 189u REG 8,5 16400 0 4232787 /var/tmp/etilqs_D5p3BT7rtTSWLsy (deleted)
Ни один из них не содержит медиа-контента.
И я твердо верю, что каким-то образом мы можем захватить воспроизводимое видео (в Linux), поскольку видео транслируется с сервера всякий раз, когда мы его воспроизводим (без помощи каких-либо специфических для браузера плагинов).
3 ответа
Вы говорите: "Все, что использует хром, это:... Ни один из них не содержит медиа-контента". но вы перечисляете очень мало открытых файлов, которые выглядят как принадлежащие одному процессу. Не так, как обычно работает хром. Как ты получил эту информацию?
На моей машине (Linux Mint и Chrome 28.0.1500.95) я мог получить потоковый флэш-файл прямо в том месте, где вы его искали. Я подозреваю, что вы что-то упустили в процессе.
Во-первых, вам нужно определить процесс, который запускает Pepper, и найти идентификатор дескриптора файла, соответствующий вашему файлу.
Это возможно благодаря /proc
и за процесс fd
каталог
С видео, открытым в окне браузера, выполните эту команду:
for ID in $( pgrep chrome ) ; do ( sudo ls -l /proc/$ID/fd|grep Pepper ) && echo /proc/$ID/fd; done
Вывод будет похож на:
lrwx------ 1 root root 64 ago 2 12:52 29 -> /home/me/.chromecache/Default/Pepper Data/Shockwave Flash/.com.google.Chrome.ulDLo0 (deleted)
/proc/1196/fd
Не обращайте внимания на путь, на который указывает ссылка: он удален. Вам нужно получить доступ к файлу через /proc/$PROCID/fd/$FDID
В приведенном выше примере вы запустите:
sudo cat /proc/1196/fd/29 > my_video.flv
[РЕДАКТИРОВАТЬ]
Чтобы сделать то же самое для хрома, измените имя процесса с google-chrome
в chro
и строка для поиска в имени файла /tmp/Flash
вот так:
for ID in $( pgrep chro ) ; do ( sudo ls -l /proc/$ID/fd|grep /tmp/Flash ) && echo /proc/$ID/fd; done
[РЕДАКТИРОВАТЬ] (снова)
Эта однострочная строка должна работать как с хромом, так и с хромом (по крайней мере, на моей машине):
for ID in $( pgrep -f chro ) ; do ( sudo ls -l /proc/$ID/fd|egrep "(/tmp/Flash|Pepper)" ) && echo /proc/$ID/fd; done
Вы также можете использовать метод @silviot в скрипте:
#!/bin/bash
#
# Show all chrome cached video files!
#
for ID in $( pgrep chrom ) ; do
sudo ls -l /proc/$ID/fd|grep Pepper|cut -d' ' -f9|sed "s/\(.*\)/\/proc\/$ID\/\1/g"
done | grep -v '^$'
Я не проверял это с более чем 1 видео, но оно должно работать.
Я перепробовал все расширения, которые запрещены, а затем вы должны все время обновляться. Тогда наткнулся на это: Используйте букмарклет KeepVid.com. Просто перетащите кнопку на веб-странице на панель закладок. Просто нажмите на ссылку во время просмотра видео