J'aime garder des vidéos parce que
Pour de nombreux sites contenant de la vidéo Flash (y compris Youtube), je peux trouver le fichier flv dans /tmp
, généralement nommé FlashXX...
. Cependant, certains sites empêchent l’affichage de ce fichier, par exemple. http://blip.tv/file/3627639 . Il est possible que cela ne soit pas du tout spoulé sur le disque, mais ce serait surprenant, car la vidéo entière peut être mise en mémoire tampon sans que ma RAM ne soit sensiblement impactée.
Dans Firefox, je peux trouver le flv dans son répertoire de cache. Mais je suis curieux de savoir comment faire cela dans Chrome. J'ai essayé de regarder sous ~/.cache/google-chrome/mais je n'ai rien trouvé qui me convienne. Par exemple:
$ ls -lt .cache/google-chrome/Cache/ | head
total 261492
-rw------- 1 yang yang 16621568 2010-12-05 03:41 data_1
-rw------- 1 yang yang 966656 2010-12-05 03:40 data_0
-rw------- 1 yang yang 23076864 2010-12-05 03:40 data_2
-rw------- 1 yang yang 262512 2010-12-05 03:40 index
-rw------- 1 yang yang 108412 2010-12-05 03:35 f_005603
-rw------- 1 yang yang 62607 2010-12-05 03:32 f_005602
-rw------- 1 yang yang 54998 2010-12-05 03:32 f_005601
-rw------- 1 yang yang 31127 2010-12-05 03:32 f_005600
-rw------- 1 yang yang 799389 2010-12-05 03:32 f_0055ff
$ ls -1t ~/.cache/google-chrome/Cache/* | head | xargs file
/home/yang/.cache/google-chrome/Cache/data_1: data
/home/yang/.cache/google-chrome/Cache/data_0: data
/home/yang/.cache/google-chrome/Cache/data_2: data
/home/yang/.cache/google-chrome/Cache/index: data
/home/yang/.cache/google-chrome/Cache/f_005603: GIF image data, version 89a, 600 x 471
/home/yang/.cache/google-chrome/Cache/f_005602: PNG image, 600 x 746, 8-bit colormap, non-interlaced
/home/yang/.cache/google-chrome/Cache/f_005601: PNG image, 140 x 342, 8-bit/color RGB, non-interlaced
/home/yang/.cache/google-chrome/Cache/f_005600: JPEG image data, JFIF standard 1.02
/home/yang/.cache/google-chrome/Cache/f_0055ff: JPEG image data, JFIF standard 1.02
/home/yang/.cache/google-chrome/Cache/f_0055fe: gzip compressed data, from FAT filesystem (MS-DOS, OS/2, NT)
J'ai essayé de regarder les fichiers ouverts pour le processus Flash, mais je n'ai vu aucun fichier Flash supprimé, ce qui devrait figurer dans les réponses ci-dessous:
$ ps x | grep npviewer
27148 ? Rl 0:24 /usr/lib/nspluginwrapper/i386/linux/npviewer.bin --plugin /usr/lib/flashplugin-installer/libflashplayer.so --connection /org/wrapper/NSPlugins/libflashplayer.so/27135-2
27504 pts/2 S+ 0:00 grep --color=auto npviewer
$ ls -l /proc/27148/fd/
total 0
lr-x------ 1 yang yang 64 2011-02-16 13:48 0 -> /dev/null
lrwx------ 1 yang yang 64 2011-02-16 13:48 1 -> /home/yang/.xsession-errors
l-wx------ 1 yang yang 64 2011-02-16 13:48 10 -> /home/yang/.mozilla/firefox/8wy5j0z2.default/key3.db
lrwx------ 1 yang yang 64 2011-02-16 13:48 11 -> pipe:[5500575]
lrwx------ 1 yang yang 64 2011-02-16 13:48 12 -> /home/yang/.Adobe/Flash_Player/cert8.db (deleted)
lrwx------ 1 yang yang 64 2011-02-16 13:48 13 -> /home/yang/.Adobe/Flash_Player/key3.db (deleted)
lr-x------ 1 yang yang 64 2011-02-16 13:48 14 -> /home/yang/.Adobe/Flash_Player/cert8.db (deleted)
l-wx------ 1 yang yang 64 2011-02-16 13:48 15 -> /home/yang/.Adobe/Flash_Player/key3.db (deleted)
lrwx------ 1 yang yang 64 2011-02-16 13:48 16 -> /home/yang/.Adobe/Flash_Player/cert8.db (deleted)
lrwx------ 1 yang yang 64 2011-02-16 13:48 17 -> /home/yang/.Adobe/Flash_Player/key3.db (deleted)
lr-x------ 1 yang yang 64 2011-02-16 13:48 18 -> /home/yang/.Adobe/Flash_Player/cert8.db (deleted)
l-wx------ 1 yang yang 64 2011-02-16 13:48 19 -> /home/yang/.Adobe/Flash_Player/key3.db (deleted)
lrwx------ 1 yang yang 64 2011-02-16 13:48 2 -> /home/yang/.xsession-errors
lrwx------ 1 yang yang 64 2011-02-16 13:48 20 -> /home/yang/.Adobe/Flash_Player/cert8.db (deleted)
lr-x------ 1 yang yang 64 2011-02-16 13:48 21 -> /home/yang/.Adobe/Flash_Player/key3.db (deleted)
lrwx------ 1 yang yang 64 2011-02-16 13:51 22 -> /home/yang/.Adobe/Flash_Player/cert8.db (deleted)
lrwx------ 1 yang yang 64 2011-02-16 13:51 23 -> /home/yang/.Adobe/Flash_Player/key3.db (deleted)
lrwx------ 1 yang yang 64 2011-02-16 13:51 24 -> /home/yang/.Adobe/Flash_Player/cert8.db (deleted)
lrwx------ 1 yang yang 64 2011-02-16 13:51 25 -> /home/yang/.Adobe/Flash_Player/key3.db (deleted)
lrwx------ 1 yang yang 64 2011-02-16 13:51 26 -> /home/yang/.Adobe/Flash_Player/cert8.db (deleted)
lrwx------ 1 yang yang 64 2011-02-16 13:51 27 -> /home/yang/.Adobe/Flash_Player/key3.db (deleted)
lrwx------ 1 yang yang 64 2011-02-16 13:51 28 -> /home/yang/.Adobe/Flash_Player/cert8.db (deleted)
lrwx------ 1 yang yang 64 2011-02-16 13:51 29 -> /home/yang/.Adobe/Flash_Player/key3.db (deleted)
lrwx------ 1 yang yang 64 2011-02-16 13:48 3 -> socket:[5496032]
lrwx------ 1 yang yang 64 2011-02-16 13:51 30 -> /home/yang/.Adobe/Flash_Player/cert8.db (deleted)
lrwx------ 1 yang yang 64 2011-02-16 13:51 31 -> /home/yang/.Adobe/Flash_Player/key3.db (deleted)
lrwx------ 1 yang yang 64 2011-02-16 13:51 32 -> /home/yang/.Adobe/Flash_Player/cert8.db (deleted)
lrwx------ 1 yang yang 64 2011-02-16 13:51 33 -> /home/yang/.Adobe/Flash_Player/key3.db (deleted)
lrwx------ 1 yang yang 64 2011-02-16 13:51 34 -> /home/yang/.Adobe/Flash_Player/cert8.db (deleted)
lrwx------ 1 yang yang 64 2011-02-16 13:51 35 -> /home/yang/.Adobe/Flash_Player/key3.db (deleted)
l-wx------ 1 yang yang 64 2011-02-16 13:53 36 -> pipe:[5500575]
lr-x------ 1 yang yang 64 2011-02-16 13:53 37 -> pipe:[5500576]
l-wx------ 1 yang yang 64 2011-02-16 13:53 38 -> pipe:[5500576]
lrwx------ 1 yang yang 64 2011-02-16 13:53 39 -> socket:[5500580]
lrwx------ 1 yang yang 64 2011-02-16 13:48 4 -> socket:[5496131]
lr-x------ 1 yang yang 64 2011-02-16 13:48 5 -> pipe:[5496139]
l-wx------ 1 yang yang 64 2011-02-16 13:48 6 -> pipe:[5496139]
lr-x------ 1 yang yang 64 2011-02-16 13:48 7 -> socket:[5496140]
l-wx------ 1 yang yang 64 2011-02-16 13:48 8 -> socket:[5496141]
lr-x------ 1 yang yang 64 2011-02-16 13:48 9 -> /home/yang/.mozilla/firefox/8wy5j0z2.default/cert8.db
J'ai essayé strace
ing tous les processus de chrome pour tout ce qui pourrait ressembler à l'écriture d'un fichier:
strace -p (pgrep chrome|xargs -I_ echo -p _)
mais regarder les appels write
/writev
/select
m'a seulement indiqué quelques FD que /proc/_/fd/
s'est avéré être des tuyaux/sockets (vraisemblablement pour que les processus se parlent). Aussi essayé la même chose sur le processus npviewer.bin
.
J'ai également essayé de simplement inspecter tous les fichiers pointés dans /proc/*/fd/
( tous les processus ) récemment modifiés, mais je n'ai rien trouvé qui contenait un flv. J'ai également essayé la même vérification sur les fichiers récemment modifiés sous ~/.cache/google-chrome/
.
Si cela fait une différence, j'utilise la version de canal du canal de développement de Chrome, qui, je crois, utilise (toujours?) Sa propre implémentation Flash sécurisée. Au moment de cette mise à jour, j'utilise Chrome 10.0.648.45 dev. Selon http://www.Adobe.com/software/flash/about/ , j'utilise le logiciel 10.2.152.27. J'ai déjà essayé plusieurs boîtes Ubuntu. J'ai également essayé plusieurs boîtiers Ubuntu, avec les mêmes résultats.
D'autres veulent-ils essayer?
J'ai remarqué que les récents plugins Flash stockent des fichiers dans/tmp, mais ils utilisent une astuce consistant à les supprimer et à garder un descripteur de fichier ouvert pour les maintenir en vie. Cela signifie qu'ils sont toujours conservés sur le lecteur (tant que le descripteur de fichier est ouvert par le plugin flash), mais ils ne sont pas visibles dans la liste des répertoires (car le fichier a été supprimé).
J'ai écrit à ce sujet depuis un certain temps: obtenir des vidéos flash à partir de fichiers presque supprimés
Mais tout dépend de la version du plugin Flash. Il permettait également de stocker des films dans/tmp ou dans le cache du navigateur.
Vérifier/proc // fd/a fait le tour pour moi:
$ ps x | grep npviewer
24657 ? Sl 12:33 /usr/lib/nspluginwrapper/i386/linux/npviewer.bin ...
$ cd /proc/24657/fd
$ ls -l
total 0
lr-x------ 1 omab omab 64 2011-02-11 02:13 0 -> /dev/null
lrwx------ 1 omab omab 64 2011-02-11 02:13 1 -> /home/omab/.xsession-errors
lr-x------ 1 omab omab 64 2011-02-11 02:13 10 -> /home/omab/.mozilla/firefox/og3emjry.default/key3.db
lrwx------ 1 omab omab 64 2011-02-11 02:13 11 -> /tmp/FlashXX0WG0J5 (deleted)
lr-x------ 1 omab omab 64 2011-02-11 02:13 12 -> pipe:[9004372]
...
Le fichier 11 , celui marqué "(supprimé)", pointe toujours sur le fichier créé à l'origine sur/tmp /, il n'est donc pas complètement supprimé:
$ file -L 11
11: Macromedia Flash Video
faire un:
$ mplayer 11
reproduira le fichier FLV.
Voici une ligne de commande assez pratique adaptée de la procédure ci-dessus. Cela peut nécessiter des ajustements mineurs pour votre distribution/installation et les processus que vous utilisez habituellement.
Vous pouvez remplacer flash
par npviewer
, remplacer vlc
par mplayer
:
FLASHPID=\`pgrep -f flash\`; vlc /proc/$FLASHPID/fd/\`ls -l /proc/$FLASHPID/fd | grep tmp | cut -d" " -f9\`
Les flux Flash sont la plupart du temps de simples fichiers, obtenus par une requête http.
Pour votre vidéo à http://blip.tv/file/3627639
Dans Google Chrome, vous pouvez inspecter les requêtes réseau (ctrl + shift + i
) afin de déterminer la plus longue étape dans votre cas:
Fosslc-..
/file/get
cliquez dessus et copiez/collez l'URL du champ "URL de la requête" vers un nouvel onglet
http://blip.tv/file/get/Fosslc-2...to823.flv?showplayer=20110401114509&source=1
Yang,
Oui, c'est dans ~/.cache/google-chrome/Cache (enfin, Chromium est installé, je l'ai donc trouvé dans ~/.cache/chromium/Cache).
Si vous regardez la vidéo et que vous triez par horodatage:
$ ls -rt | tail
f_00003a
f_00003b
f_00003c
f_00003d
data_2
data_3
index
data_1
f_000040
data_0
Ensuite, si vous exécutez la commande de fichier, vous verrez quels sont les fichiers Flash:
$ file $(ls -rt | tail)
f_00003a: Macromedia Flash data (compressed), version 9
f_00003b: Macromedia Flash data (compressed), version 9
f_00003c: Macromedia Flash data (compressed), version 10
f_00003d: PNG image data, 1024 x 768, 8-bit/color RGBA, non-interlaced
data_2: data
data_3: data
index: data
data_1: data
f_000040: Macromedia Flash Video
data_0: data
OK, j'ai installé Google Chrome pour le vérifier.
On dirait que le répertoire de Google Chrome est légèrement différent de Chromium.
En utilisant les mêmes techniques (en spécifiant ici l'ID de processus du navigateur, certaines colonnes ont été supprimées pour plus de clarté):
$ lsof -p 27922 | grep Cache
chrome 27922 mem ~/.cache/google-chrome/Default/Cache/index
chrome 27922 mem ~/.cache/google-chrome/Default/Cache/data_3
chrome 27922 mem ~/.cache/google-chrome/Default/Cache/data_2
chrome 27922 mem ~/.cache/google-chrome/Default/Cache/data_1
chrome 27922 mem ~/.cache/google-chrome/Default/Cache/data_0
chrome 27922 71u ~/.cache/google-chrome/Default/Cache/index
chrome 27922 72u ~/.cache/google-chrome/Default/Cache/data_0
chrome 27922 73u ~/.cache/google-chrome/Default/Cache/data_1
chrome 27922 74u ~/.cache/google-chrome/Default/Cache/data_2
chrome 27922 75u ~/.cache/google-chrome/Default/Cache/data_3
chrome 27922 111u ~/.cache/google-chrome/Default/Cache/f_00001a
utilisant du chrome 11.0.666.0 et un plug-in flash 10.2.152
grepping for npviewer n'a produit aucun processus flash pour moi, mais grepping for flash:
$ ps x | grep flash
11005 ? Rl 2:30 /usr/lib/chromium-browser/chromium-browser ...
fondamentalement la même chose que jyap ci-dessus suggéré avec
lsof | grep Flash
et vous pouvez alors procéder comme ci-dessus ...
J'ai résolu ce problème. Ici les étapes sont
jetez un coup d'oeil http://www.arulraj.net/2011/03/google-chrome-download-video.html
Essayez de lister les fichiers ouverts.
lsof | grep Flash
Certains des nouveaux joueurs tamponnent en mémoire pour rendre impossible l'utilisation de ces astuces. Vous ne pourrez rien obtenir dans ce cas.
Un petit pourboire de moi. Cela fonctionne dans Ubuntu 10.04.
#!/bin/bash
viewer=`ps x|grep npviewer|grep -v grep |awk '{print $1}'`
echo $viewer
cd /proc/${viewer}/fd
jef=(`ls -l|awk '{print $8 " " $10}'|grep Flash|awk '{print $1}'`)
echo $jef
jef1=${#jef}
ext=`date +'%d_%m_%k_%M_%S'`
i=0
while [ "$i" -lt "$jef1" ]
do
cp ${jef[${i}]} /fun/${jef[${i}]}"(${ext})".flv
i=`expr $i + 1`
done
Vous pouvez maintenant planifier ce script avec la crontab. Il pourrait être optimisé pour qu'il n'y ait pas de fichiers FLV en double.
J'utilise chrome 11.06 sur Ubuntu 10.04. J'ai trouvé mes fichiers flv dans ~/.cache/google-chrome/Default/Cache. Essayer un
file * | grep Flash\ Video
Pour le dernier Chrome sur Linux:
Identifiez le pid du plugin Flash utilisé par Chrome:
ps ax | grep -i chrome | grep -i flash
pour l'instant, le plugin s'appelle libgcflashplayer
.
Identifiez le fichier Flash ouvert par ce processus de plugin Flash:
file /proc/Flash_Plugin_PID/fd/* | grep -i deleted
ou
lsof -p Flash_plugin_pid | grep -i deleted
Rechercher des fichiers supprimés.
Copiez le fichier de /proc/[pid]/fd/[fileno]
dans recovered_file.flv
Utiliser Firefox sur Kubuntu:
export COUNT=0
export FILENAME=$1
export FILENAME=${FILENAME:=test}
PID=`ps ax | grep -i flashplugi[n] | awk '{print $1}'`
FLASH=`ls -l /proc/$PID/fd| grep Flash | awk '{print $8}'`
for N in $FLASH ; do
COUNT=$(($COUNT+1))
cp /proc/$PID/fd/$N ${FILENAME}_${COUNT}.flv
done
J'ai une autre façon de le faire en utilisant le descripteur de fichier fondé dans/proc (j'utilise modern bash en quelques lignes)
#!/bin/bash
process="flash"
filename="flash"
readlink -f /proc/$$/exe | fgrep -q bash || {
echo >&2 "Hey dude ! You must call $0 with bash !"
exit 2
}
. ~/.bashrc || . /etc/profile
count=1
for pid in $(pgrep -f $process); do
fds=$(file /proc/$pid/fd/[0-9]* | fgrep Flash | cut -d: -f1)
for fd in $fds; do
cp -v $fd ${filename}_${count}.flv
((count++))
done
done
# vim:ts=4:sw=4