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


37

Mi piace tenere video perché

  1. Mi piace bufferli e poi riprodurli uno contro l'altro nel mio lettore multimediale,
  2. Voglio essere in grado di arrestare / riavviare il mio browser senza perdere tutto il video bufferizzato e
  3. Flash si blocca spesso e mi dà le caselle grigie .

Per molti siti con video Flash (incluso Youtube), posso trovare il file flv in /tmp, di solito chiamato FlashXX.... Ma alcuni siti riescono a impedire la visualizzazione di questo file, ad esempio http://blip.tv/file/3627639 . È possibile che questo non sia affatto inviato in spooling su disco, ma sarebbe sorprendente dal momento che l'intero video di un'ora può essere bufferizzato senza che la mia RAM sia notevolmente influenzata.

In Firefox, posso trovare il flv nella sua directory della cache. Ma sono curioso di sapere come farlo in Chrome. Ho provato a cercare sotto ~ / .cache / google-chrome / ma non ho trovato nulla di simile. 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 processo Flash, ma non ho visto alcun file Flash eliminato, che dovrebbe esistere un gruppo di risposte qui sotto:

$ 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 stracetutti i processi di Chrome per tutto ciò che sembrava potesse scrivere un file:

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

ma guardare le chiamate write/ writev/ selectmi ha indicato solo alcuni FD che /proc/_/fd/hanno mostrato di essere tubi / prese (presumibilmente per i processi di parlare tra loro). Ho anche provato la stessa cosa sul npviewer.binprocesso.

Ho anche cercato di ispezionare semplicemente tutti i file indicati in /proc/*/fd/( qualsiasi processo) che sono stati modificati di recente, ma non ho trovato nulla che sembrasse contenere un file FLV. Ho anche provato lo stesso controllo sui file modificati di recente in ~/.cache/google-chrome/.

Se fa la differenza, sto usando la versione del canale dev di Chrome, che credo (sempre?) Usa la sua implementazione Flash sicura. Al momento di questo aggiornamento, sto usando Chrome 10.0.648.45 dev. Secondo http://www.adobe.com/software/flash/about/ sto eseguendo il 10.2.152.27. Ho provato diverse scatole di Ubuntu ora. Ho anche provato diverse scatole di Ubuntu ora, con gli stessi risultati.

Qualcuno vuole prenderlo a pugni in questo?


Potrebbe essere utile se hai fornito il link a una pagina con cui hai problemi.
Sophie Alpert,

@Ben: Oops, intendevo farlo. Aggiunto!
Yang,

Risposte:


31

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

Ne ho scritto un po 'di tempo: ottenere video flash da file quasi cancellati

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


Il tuo post sul blog molto interessante descrive come farlo con Firefox, ma mi chiedo come farlo usando Chrome. Ho esaminato lsof e / proc, ma non ho trovato alcun segno di file non collegati. Hai avuto successo con il video di esempio?
Yang,

1
@Yang: lo stesso modo esatto funziona con Chrome, almeno sul mio notebook - appena testato. Penso che dipenda più dal flash player che dal browser web. Quale versione del plugin Flash hai?
liori,

Secondo adobe.com/software/flash/about sto eseguendo il 10.2.152.27, che penso sia il Flash incorporato in Chrome (usando Chrome 10.0.648.45 dev). Ho provato diverse scatole di Ubuntu ora.
Yang,

2
Come nota, sembra che mentre funzionava con tutti i lettori di film in flash, non è più così. Sembra funzionare con alcuni siti meno conosciuti, ma non con Youtube. Posso solo immaginare che Youtube abbia trovato un modo per tenere il file lontano dal filesystem ...
liori,

1
si lavora ancora per me con cromo versione 33.0.1750.152-1 (Debian Jessie) e FlashPlayer versione 11,2,202,346 (secondo adobe.com/software/flash/about )
jopasserat

24

Controllando / proc // fd / ho 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)", punta ancora al file originariamente creato su / tmp /, quindi non è completamente eliminato:

$ file -L 11 
11: Macromedia Flash Video

facendo un:

$ mplayer 11

riprodurrà il file FLV.


Ecco una riga di comando abbastanza utile adattata dalla procedura sopra. Potrebbe richiedere piccoli aggiustamenti per la tua distribuzione / installazione e quali processi stai eseguendo di solito.

È possibile sostituire flashcon npviewer, sostituire vlccon mplayer:

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

Questo non funziona per me - ho aggiornato la mia risposta con i dettagli di ciò che vedo. Sai perché potrebbe non funzionare per me? Ho provato diverse macchine ora.
Yang,

A proposito, puoi salvare il flv conmplayer 11 -dumpstream -dumpfile outputname
liewl

8
Puoi semplicemente copiarlo cp 11 / ... / ...
omab

10

I flussi Flash la maggior parte delle volte sono semplici file ottenuti da una richiesta http.

Per il tuo video su http://blip.tv/file/3627639

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

Fosslc-..
/file/get

fai clic su di esso e copia / incolla l'URL dal campo "Richiedi URL", in una nuova scheda

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


Fantastico! Sono tentato di accettare la tua risposta dal momento che ha funzionato per me, ma aspetterò un po 'di più per vedere se ci sono altre risposte che indirizzano effettivamente l'individuazione del flv scaricato.
Yang,

per favore non accettarlo, dal momento che è solo un trucco per il tuo caso. Voglio davvero sapere dove diavolo memorizzano i file video temporanei.
Doud,

Heh, va bene. Voglio sapere anche io. La mia impressione è che venga memorizzato da qualche parte nei file data_ *, che sono probabilmente cumuli specifici del browser. Non sono riuscito a trovare alcuno strumento per rovistarli, tuttavia, a meno di immergermi nella base di codice di Chrome.
Yang,

9

Yang,

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

Se guardi 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 esegui il comando 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 di Google Chrome sia leggermente diversa da Chromium.

Utilizzando le stesse tecniche (qui specificando l'ID di processo 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

È intrigante, perché non funziona per me. Ho aggiornato la mia risposta con una copia di ciò che vedo. Funziona per te con l'URL di esempio blip.tv che ho fornito? Forse è a causa di una versione diversa di Chrome - quale stai usando?
Yang,

Sì, ho usato il tuo URL esatto. Stavi riproducendo il file mentre eseguivi i comandi? Prova a svuotare la cache, a riprodurre il file, quindi esegui i comandi. Ha funzionato per me e ho potuto riprodurre il file in Mplayer, quindi ha funzionato per me!
jyap

Purtroppo, svuotare la cache non ha aiutato. Sì, il file veniva riprodotto mentre eseguivo questi comandi. Aggiornato la mia risposta con ulteriori informazioni. Alcuni risponditori dicono che dovrei guardare il processo Flash, altri dicono che dovrei guardare uno dei processi del browser, ma ho provato entrambi, anche guardando tutti i processi. Qualche idea sul perché è rotto per me? Ho provato diverse macchine ora.
Yang,

Ho modificato la mia risposta sopra per specificare l'ID del processo di Google Chrome ed eseguire il comando lsof. Provalo.
jap

5

utilizzando il cromo 11.0.666.0 e il plug-in flash 10.2.152

grepping per npviewer non ha prodotto alcun processo flash per me, ma grepping per flash fa:

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

sostanzialmente la stessa cosa di jyap sopra suggerita

lsof | grep Flash

e puoi quindi procedere come sopra ...


Questo non funziona per me - ho aggiornato la mia risposta con i dettagli di ciò che vedo. Sai perché potrebbe non funzionare per me? Ho provato diverse macchine ora.
Yang,

3

Prova a elencare i file aperti.

lsof | grep Flash

Ha funzionato per te? Non presenta nulla per me - non immagino che lo sia, dato che i tipici file Flash * non vengono visualizzati nella loro posizione normale.
Yang,

3

Alcuni dei giocatori più recenti bufferano in memoria per provare a rendere impossibile per le persone usare questi trucchi. Non sarai in grado di ottenere nulla in quel caso.


Sebbene queste siano informazioni utili e tenendo presente che non so come sondare la RAM (solo che è possibile), non sono d'accordo sul fatto che "non sarai in grado di ottenere nulla". Dove c'è una volontà, c'è un modo.
user66001

3

Ho risolto questo problema. Ecco i passaggi

  1. Vai a plugin installati circa: plugin in chrome / mozilla
  2. Fai clic su Dettagli per visualizzare con ulteriori informazioni. Disabilita il plug-in Flash. La posizione del plugin sarebbe “/usr/lib/adobe-flashplugin/libflashplayer.so”
  3. Scarica la versione tar.gz di Flash Player da qui http://get.adobe.com/flashplayer/
  4. Estrai quel file e copia libflashplayer.so in / usr / lib / chromium-browser / plugins. Quindi abilita questo nella pagina dei plugin.
  5. Se visualizzi qualche video, questo verrà scaricato in /home//.cache/chromium/Default/Cache questa cartella

Dai un'occhiata a http://www.arulraj.net/2011/03/google-chrome-download-video.html


2

Per l'ultimo Chrome su Linux:

  1. Identifica il pid del plug-in Flash utilizzato da Chrome:

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

    a partire da ora viene chiamato il plugin libgcflashplayer.

  2. Identifica il file Flash aperto da questo processo di plugin Flash:

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

    o

    lsof -p Flash_plugin_pid | grep -i deleted
    

    Cerca i file eliminati.

  3. Copia il file da /proc/[pid]/fd/[fileno]arecovered_file.flv


2

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

file * | grep Flash\ Video

2

Un piccolo consiglio da parte mia. Funziona con 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 crontab. Potrebbe essere ottimizzato in modo che non vi siano file FLV duplicati.


2

Utilizzando 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

0

Ho un altro modo per farlo basato sul descrittore di file fondato in / proc (io uso 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
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.