web-dev-qa-db-fra.com

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

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 zones grises .

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é straceing 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?

37
Yang

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.

31
liori

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\`
24
omab

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

10
Doud

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
9
jyap

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

5
dino

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. Ensuite, activez cette page 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

3
Arul

Essayez de lister les fichiers ouverts.

lsof | grep Flash
3
jyap

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

3
geekosaur

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.

2
burkass

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

Pour le dernier Chrome sur Linux:

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

  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. Copiez le fichier de /proc/[pid]/fd/[fileno] dans recovered_file.flv

2
HKVC

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

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
0
Gilles Quenot