In Google Chrome su Linux, where è il flv se non in / tmp?

Mi piace tenere i video perché

  1. Mi piace tamponarli e poi riprodurli indietro nel mio lettore multimediale,
  2. Vorrei poter fermare / riavviare il mio browser senza perdere tutto il video bufferizzato e
  3. Flash frequentemente si blocca e mi dà le caselle grigie .

Per molti siti con video Flash (tra cui Youtube) posso trovare il file flv in /tmp , di solito denominato FlashXX... Alcuni siti sono in grado di impedire che questo file venga visualizzato, ad esempio http://blip.tv/file/3627639 . È ansible che questo non sia affatto spoolato sul disco, ma questo sarebbe sorprendente poiché l'integer video di un'ora può essere tamponato senza che la RAM sia notevolmente impattata.

In Firefox, posso trovare il flv nella sua directory di cache. Ma sono curioso di come farlo in Chrome. Ho provato a guardare sotto ~ / .cache / google-chrome / ma non ho trovato niente che sembrava proprio. Per esempio:

 $ 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) 

Ho provato a guardare i file aperti per il process Flash, ma non ho visto alcun file Flash eliminato, che un gruppo di risposte sottostanti dovrebbe dire:

 $ 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 

Ho provato a strace tutti i processi cromati per qualsiasi cosa che sembrava che potrebbe scrivere un file:

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

ma guardando le chiamate di write / writev / select mi hanno indicato solo alcuni FD che /proc/_/fd/ hanno mostrato di essere tubi / socket (presumibilmente per i processi per parlare l'uno con l'altro). Ha anche provato la stessa cosa sul process npviewer.bin .

Ho anche cercato di controllare semplicemente tutti i file indicati in /proc/*/fd/ ( tutti i processi) che sono stati recentemente modificati ma non hanno trovato niente che sembrava contenere un flv. Ho anche provato lo stesso controllo sui file modificati di recente in ~/.cache/google-chrome/ .

Se fa la differenza, sto usando la release di canale dev di Chrome, che credo (sempre?) Utilizza la propria implementazione sicura di Flash. Al momento dell'aggiornamento, sto utilizzando Chrome 10.0.648.45 dev. Secondo http://www.adobe.com/software/flash/about/ Sono in esecuzione 10.2.152.27. Ho provato adesso su più caselle di Ubuntu. Ho anche provato su diverse caselle di Ubuntu, con gli stessi risultati.

Qualsiasi altro vuole prendere un pugnalato a questo?

Ho osservato che i recenti plug-in flash memorizzano i file in / tmp, ma usano un trucco per rimuoverli e mantenendo un filehandle aperto per mantenerli vivi. Ciò significa che sono ancora tenuti sull'unità (finché il filehandle viene aperto dal plugin flash), ma non sono visibili nell'elenco delle directory (perché il file è stato eliminato).

Ho scritto di questo un po 'di tempo: get video flash da file quasi eliminati

Ma tutto dipende dalla versione del plugin Flash. Ha usato per memorizzare i film in / tmp o nella cache del browser troppo.

Controllo / proc // fd / ha fatto il trucco per me:

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

Il file 11 , quello contrassegnato come "(eliminato)", fa ancora riferimento al file originariamente creato in / tmp /, quindi non è completamente eliminato:

 $ file -L 11 11: Macromedia Flash Video 

facendo una:

 $ mplayer 11 

riprodurrà il file FLV.


Ecco una row comandi abbastanza comoda adattata dalla procedura di cui sopra. Può richiedere piccoli aggiustamenti per la distribuzione / installazione e quali processi in genere si eseguono.

Puoi sostituire il flash con npviewer , sostituire vlc con mplayer :

 FLASHPID=\`pgrep -f flash\`; vlc /proc/$FLASHPID/fd/\`ls -l /proc/$FLASHPID/fd | grep tmp | cut -d" " -f9\` 

I flussi Flash sono per la maggior parte del tempo file semplici ottenuti da una richiesta http.

Per il tuo video all'indirizzo http://blip.tv/file/3627639

In Google Chrome puoi controllare le richieste di networking ( ctrl + shift + i ) cercare il più lungo termine per il tuo caso:

 Fosslc-.. /file/get 

fare clic su di esso e copiare / incollare url dal field 'Richiesta URL', in una nuova scheda

http://blip.tv/file/get/Fosslc-2…to823.flv?showplayer=20110401114509&source=1

Yang,

Sì, è in ~ / .cache / google-chrome / Cache (beh, ho installato Chromium in modo che l'ho trovato in ~ / .cache / cromium / Cache).

Se si guarda il video e ordina per timestamp:

 $ ls -rt | tail f_00003a f_00003b f_00003c f_00003d data_2 data_3 index data_1 f_000040 data_0 

Quindi se si esegue il command di file vedrai quali sono 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, ho installato Google Chrome per verificarlo.

Sembra che la directory per Google Chrome è leggermente diversa da Chromium.

Utilizzando le stesse tecniche (qui specificando l'ID process del browser, l'output ha rimosso alcune colonne per chiarezza):

 $ 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 

utilizzando il cromo 11.0.666.0 e il plug-in flash 10.2.152

grappolo per npviewer non ha prodotto alcun process flash per me, ma grappolo per il flash fa:

 $ ps x | grep flash 11005 ? Rl 2:30 /usr/lib/chromium-browser/chromium-browser ... 

fondamentalmente la stessa cosa di jyap sopra suggerita

 lsof | grep Flash 

e puoi procedere come sopra …

Prova ad elencare i file aperti.

 lsof | grep Flash 

Alcuni dei giocatori più recenti tamponano in memory per cercare di rendere imansible per le persone utilizzare questi trucchi. In questo caso non sarai in grado di get nulla.

Ho risolto questo problema. Qui i passi sono

  1. Goto installato plugin circa: plugin in cromo / mozilla
  2. Fare clic su Dettagli per visualizzare con ulteriori informazioni. Disabilita il plugin Flash. La posizione del plugin sarebbe "/usr/lib/adobe-flashplugin/libflashplayer.so"
  3. Scarica la versione tar.gz del flash player da qui http://get.adobe.com/flashplayer/
  4. Estrarre quel file e copiare il libflashplayer.so su / usr / lib / browser / plugin per cromo. Allora abilita questa pagina nella pagina plugin.
  5. Se si visualizza qualsiasi video scaricherà in /home/cache/chromium/Default/Cache questa cartella

guarda http://www.arulraj.net/2011/03/google-chrome-download-video.html

Per l'ultima versione di Chrome su Linux:

  1. Identificare il pid del plugin Flash utilizzato da Chrome:

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

    da ora il plugin è chiamato libgcflashplayer .

  2. Identificare il file Flash aperto da questo process di plugin Flash:

     file /proc/Flash_Plugin_PID/fd/* | grep -i deleted 

    o

     lsof -p Flash_plugin_pid | grep -i deleted 

    Cercare i file eliminati.

  3. Copiare il file da /proc/[pid]/fd/[fileno] a recovered_file.flv

Sto utilizzando il cromo 11.06 su Ubuntu 10.04. Ho trovato i miei file flv in ~ / .cache / google-chrome / Default / Cache. Prova a

 file * | grep Flash\ Video 

Una piccola punta da me. Questo funziona in 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 

Ora puoi programmare questo script con il crontab. Può essere ottimizzato in modo che non ci siano duplicati file FLV.

Utilizzo di Firefox su 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 

Ho un altro modo per farlo basato sul descrittore di file fondato in / proc (utilizzo bash moderno in poche righe)

 #!/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