Dans Google Chrome sous Linux, où est le flv si ce n'est dans / tmp?

37

J'aime garder des vidéos parce que

  1. J'aime les mettre en mémoire tampon, puis les lire dos à dos dans mon lecteur multimédia,
  2. Je veux pouvoir arrêter / redémarrer mon navigateur sans perdre toutes les vidéos en mémoire tampon, et
  3. Flash se bloque fréquemment et me donne les cases grises .

Pour de nombreux sites avec des vidéos Flash (y compris Youtube), je peux trouver le fichier flv /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 puisque toute la vidéo d'une heure peut être mise en mémoire tampon sans que ma mémoire vive ne soit affectée de manière notable.

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é stracetous les processus chrome pour tout ce qui ressemblait à l'écriture d'un fichier:

strace -p (pgrep chrome|xargs -I_ echo -p _)

mais regarder les appels write/ writev/ selectm'a seulement indiqué quelques FD qui se sont révélés /proc/_/fd/être des tuyaux / sockets (vraisemblablement pour que les processus se parlent). Aussi essayé la même chose sur le npviewer.binprocessus.

J'ai également essayé de simplement inspecter tous les fichiers pointés dans /proc/*/fd/( tous les processus) qui ont été 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 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 10.2.152.27. J'ai déjà essayé plusieurs boîtes Ubuntu. J'ai également essayé plusieurs boîtes Ubuntu, avec les mêmes résultats.

D'autres veulent-ils essayer?

Yang
la source
Cela pourrait aider si vous fournissiez le lien vers une page avec laquelle vous rencontrez des problèmes.
Sophie Alpert
@Ben: Oups, je voulais faire ça. Ajoutée!
Yang

Réponses:

31

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.

liori
la source
Votre article de blog très intéressant décrit comment faire cela avec Firefox, mais je me demande comment faire cela avec Chrome. J'ai examiné lsof et / proc, mais je n'ai trouvé aucun signe de fichiers non liés. Avez-vous eu du succès avec la vidéo d'exemple?
Yang
1
@Yang: La même méthode fonctionne avec le chrome, du moins sur mon ordinateur portable, qui vient d'être testé. Je pense que cela dépend plus de Flash Player que de navigateur Web. Quelle version du plugin Flash avez-vous?
Liori
Selon adobe.com/software/flash/about je suis en cours d' exécution 10.2.152.27, que je pense est le flash intégré à Chrome ( en utilisant dev Chrome 10.0.648.45). J'ai déjà essayé plusieurs boîtes Ubuntu.
Yang
2
A noter, il semble que bien qu’il fonctionne avec tous les lecteurs de films flash, ce n’est plus le cas. Cela semble fonctionner avec des sites moins connus, mais pas avec Youtube. Je peux seulement deviner que Youtube a trouvé un moyen de garder le fichier en dehors du système de fichiers…
liori
1
il fonctionne toujours pour moi avec la version Chrome 33.0.1750.152-1 (Debian Jessie) et la version FlashPlayer 11,2,202,346 (selon adobe.com/software/flash/about )
jopasserat
24

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 flashpar npviewer, remplacer vlcpar mplayer:

FLASHPID=\`pgrep -f flash\`; vlc /proc/$FLASHPID/fd/\`ls -l /proc/$FLASHPID/fd | grep tmp | cut -d" " -f9\`
omab
la source
Cela ne fonctionne pas pour moi - j'ai mis à jour ma réponse avec des détails de ce que je vois. Savez-vous pourquoi cela pourrait ne pas fonctionner pour moi? J'ai essayé plusieurs machines maintenant.
Yang
BTW, vous pouvez enregistrer le flv avecmplayer 11 -dumpstream -dumpfile outputname
liewl
8
Vous pouvez simplement le copier cp 11 / ... / ...
omab
10

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), recherchez le délai le plus long 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

Doud
la source
Fantastique! Je suis tenté d’accepter votre réponse car cela a fonctionné pour moi, mais j’attendrai un peu plus longtemps pour voir si d’autres réponses traitent réellement de la localisation du fichier flv téléchargé.
Yang
s'il vous plaît ne l'acceptez pas, car c'est juste une astuce pour votre cas. Je veux vraiment savoir où diable flash stocke des fichiers vidéo temporaires.
Doud
Hé, d'accord. Je veux savoir aussi. Mon intuition est que cela soit stocké quelque part dans les fichiers data_ *, qui sont probablement des tas spécifiques au navigateur. Je ne pouvais cependant trouver aucun outil pour les fouiller, à moins de plonger dans la base de code Chrome.
Yang
9

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
jyap
la source
C'est intriguant, parce que ça ne marche pas pour moi. J'ai mis à jour ma réponse avec une pâte de ce que je vois. Cela fonctionne-t-il pour vous avec l'exemple d'URL blip.tv que j'ai donné? Peut-être est-ce dû à une version différente de Chrome - que utilisez-vous?
Yang
Oui, j'ai utilisé votre URL exacte. Jouiez-vous le fichier en exécutant les commandes? Essayez de vider votre cache, de lire le fichier, puis d’exécuter les commandes. Cela a fonctionné pour moi et je pouvais lire le fichier dans Mplayer, donc ça a fonctionné pour moi!
Jyap
Hélas, vider la cache n'a pas aidé. Oui, le fichier était en cours de lecture pendant l'exécution de ces commandes. Mis à jour ma réponse avec plus d'informations. Certains répondants ont déclaré que je devrais consulter le processus Flash, d'autres que je devrais consulter l'un des processus du navigateur, mais j'ai essayé les deux, même en examinant tous les processus. Des idées sur pourquoi c'est cassé pour moi? J'ai essayé plusieurs machines maintenant.
Yang
J'ai modifié ma réponse ci-dessus pour spécifier l'ID de processus de Google Chrome et exécuter la commande lsof. Essayez ça.
jyap
5

Utilisation de chrome 11.0.666.0 et du 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 ...

dino
la source
Cela ne fonctionne pas pour moi - j'ai mis à jour ma réponse avec des détails de ce que je vois. Savez-vous pourquoi cela pourrait ne pas fonctionner pour moi? J'ai essayé plusieurs machines maintenant.
Yang
3

Essayez de lister les fichiers ouverts.

lsof | grep Flash
jyap
la source
Cela a-t-il fonctionné pour vous? N'affiche rien pour moi - je ne le devinerais pas non plus, étant donné que les fichiers Flash * classiques ne s'affichent pas à leur emplacement habituel.
Yang
3

Certains des nouveaux joueurs tamponnent en mémoire pour rendre impossible l'utilisation de ces astuces. Vous ne pourrez rien obtenir dans ce cas.

geekosaur
la source
Bien que ces informations soient utiles et que, sachant que je ne sais pas comment analyser la mémoire vive (c'est seulement possible), je ne suis pas d'accord pour dire que vous "ne pourrez rien obtenir". Là où il y a une volonté, il y a un moyen.
user66001
3

J'ai résolu ce problème. Ici les étapes sont

  1. Goto installé des plugins sur: plugins en chrome / mozilla
  2. Cliquez sur Détails pour afficher plus d'informations. Désactiver le plugin Flash. L'emplacement du plugin serait “/usr/lib/adobe-flashplugin/libflashplayer.so”
  3. Téléchargez la version tar.gz de flash player à partir d’ici http://get.adobe.com/flashplayer/
  4. Extrayez ce fichier et copiez le fichier libflashplayer.so dans / usr / lib / chromium-browser / plugins. Puis activez ceci dans la page du plugin.
  5. Si vous visionnez une vidéo, elle sera téléchargée dans /home//.cache/chromium/Default/Cache ce dossier

jetez un coup d'oeil http://www.arulraj.net/2011/03/google-chrome-download-video.html

Arul
la source
2

Pour le dernier Chrome sur Linux:

  1. Identifiez le pid du plugin Flash utilisé par Chrome:

    ps ax | grep -i chrome | grep -i flash 
    

    à partir de maintenant, le plugin est appelé libgcflashplayer.

  2. 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.

  3. Copier le fichier de /proc/[pid]/fd/[fileno]àrecovered_file.flv

HKVC
la source
2

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
utilisateur733032
la source
2

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.

burkass
la source
2

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
verzonnen
la source
0

J'ai un autre moyen de le faire basé sur le descripteur de fichier fondé dans / proc (j'utilise le bash moderne 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
Gilles Quenot
la source