En Google Chrome en Linux, ¿dónde está el flv si no está en / tmp?

37

Me gusta guardar videos porque

  1. Me gusta almacenarlos en búfer y luego reproducirlos de forma consecutiva en mi reproductor multimedia,
  2. Quiero poder detener / reiniciar mi navegador sin perder todo el video almacenado en el búfer, y
  3. Flash se bloquea con frecuencia y me da los cuadros grises .

Para muchos sitios con video Flash (incluido Youtube), puedo encontrar el archivo flv /tmp, generalmente llamado FlashXX.... Pero algunos sitios logran evitar que este archivo aparezca, por ejemplo, http://blip.tv/file/3627639 . Es posible que esto no esté en el disco, pero eso sería sorprendente ya que todo el video de una hora se puede almacenar sin que mi RAM se vea notablemente afectada.

En Firefox, puedo encontrar el flv dentro de su directorio de caché. Pero tengo curiosidad de cómo hacer esto en Chrome. Intenté buscar en ~ / .cache / google-chrome / pero no encontré nada que se viera bien. Por ejemplo:

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

Intenté mirar los archivos abiertos para el proceso de Flash, pero no vi ningún archivo Flash eliminado, que muchas de las respuestas a continuación dicen que debería existir:

$ 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

Intenté stracetodos los procesos de Chrome para cualquier cosa que pareciera que podría estar escribiendo un archivo:

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

pero mirar las llamadas write/ writev/ selectsolo me señaló algunos FD que /proc/_/fd/demostraron ser tuberías / enchufes (presumiblemente para que los procesos se comuniquen entre sí). También probé lo mismo en el npviewer.binproceso.

También traté de inspeccionar simplemente todos los archivos apuntados en /proc/*/fd/( cualquier proceso) que se modificaron recientemente, pero no encontré nada que pareciera que contuviera un flv. También probé la misma verificación en los archivos modificados recientemente en ~/.cache/google-chrome/.

Si hace la diferencia, estoy usando el lanzamiento del canal de desarrollo de Chrome, que creo (¿siempre?) Usa su propia implementación segura de Flash. En el momento de esta actualización, estoy usando Chrome 10.0.648.45 dev. De acuerdo con http://www.adobe.com/software/flash/about/ Estoy ejecutando 10.2.152.27. He probado en varias cajas de Ubuntu ahora. También probé en varias cajas de Ubuntu ahora, con los mismos resultados.

¿Algún otro quiere apuñalar esto?

Yang
fuente
Podría ayudar si proporciona el enlace a una página con la que tiene problemas.
Sophie Alpert
@Ben: Vaya, quise hacer eso. ¡Adicional!
Yang

Respuestas:

31

Observé que los complementos Flash recientes almacenan archivos en / tmp, pero usan un truco para eliminarlos y mantener abierto un controlador de archivos para mantenerlos vivos. Esto significa que todavía se mantienen en la unidad (siempre que el controlador de archivos se abra con el complemento flash), pero no son visibles en la lista del directorio (porque el archivo se ha eliminado).

Escribí sobre esto hace algún tiempo: obteniendo videos flash de archivos casi eliminados

Pero todo depende de la versión del complemento Flash. Solía ​​almacenar películas en / tmp o en la memoria caché del navegador también.

liori
fuente
Su publicación de blog muy interesante describe cómo hacer esto con Firefox, pero me pregunto cómo hacerlo usando Chrome. He estado mirando lsof y / proc, pero no he encontrado ningún signo de archivos no vinculados. ¿Has tenido éxito con el video de ejemplo?
Yang
1
@Yang: La misma forma exacta funciona con Chrome, al menos en mi computadora portátil, recién probada. Creo que depende más del reproductor flash que del navegador web. ¿Qué versión de Flash tienes?
liori
De acuerdo con adobe.com/software/flash/about , estoy ejecutando 10.2.152.27, que creo que es el Flash integrado en Chrome (usando Chrome 10.0.648.45 dev). He probado en varias cajas de Ubuntu ahora.
Yang
2
Como nota, parece que si bien solía funcionar con todos los reproductores de películas flash, ya no es el caso. Parece funcionar con algunos sitios menos conocidos, pero no con Youtube. Solo puedo adivinar que Youtube encontró una manera de mantener el archivo fuera del sistema de archivos ...
liori
1
todavía funciona para mí con Chromium versión 33.0.1750.152-1 (Debian Jessie) y la versión flashplayer 11,2,202,346 (según adobe.com/software/flash/about )
jopasserat
24

Verificando / proc // fd / hizo el truco para mí:

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

El archivo 11 , el marcado como "(eliminado)", todavía apunta al archivo creado originalmente en / tmp /, por lo que no se elimina por completo:

$ file -L 11 
11: Macromedia Flash Video

haciendo un:

$ mplayer 11

reproducirá el archivo FLV.


Aquí hay una línea de comando bastante útil adaptada del procedimiento anterior. Puede requerir ajustes menores para su distribución / instalación y qué procesos está ejecutando generalmente.

Puede reemplazar flashcon npviewer, reemplazar vlccon mplayer:

FLASHPID=\`pgrep -f flash\`; vlc /proc/$FLASHPID/fd/\`ls -l /proc/$FLASHPID/fd | grep tmp | cut -d" " -f9\`
omab
fuente
Esto no funciona para mí: actualicé mi respuesta con detalles de lo que veo. ¿Sabes por qué podría no funcionar para mí? Intenté en varias máquinas ahora.
Yang
Por cierto, puedes guardar el flv conmplayer 11 -dumpstream -dumpfile outputname
liewl
8
Puede copiarlo cp 11 / ... / ...
omab
10

La mayoría de las veces, las transmisiones en Flash son archivos simples que se obtienen mediante una solicitud http.

Para tu video en http://blip.tv/file/3627639

En Google Chrome puede inspeccionar las solicitudes de red ( ctrl + shift + i), busque el tiempo más largo para finalizar en su caso:

Fosslc-..
/file/get

haga clic en él y copie / pegue la URL del campo 'Solicitar URL', a una nueva pestaña

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

Doud
fuente
¡Fantástico! Estoy tentado a aceptar su respuesta, ya que realmente funcionó para mí, pero esperaré un poco más para ver si alguna otra respuesta realmente aborda la ubicación del flv descargado.
Yang
por favor no lo acepte, ya que es solo un truco para su caso. Realmente quiero saber dónde diablos guardan los archivos de video temporales.
Doud
Je, está bien. Yo también quiero saberlo. Mi presentimiento es que se está almacenando en algún lugar de los archivos data_ *, que probablemente sean montones específicos del navegador. Sin embargo, no pude encontrar ninguna herramienta para rebuscar entre ellos, salvo por sumergirme en la base de código de Chrome.
Yang
9

Yang

Sí, está en ~ / .cache / google-chrome / Cache (bueno, tengo instalado Chromium, así que lo encontré en ~ / .cache / chromium / Cache).

Si mira el video y ordena por marca de tiempo:

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

Luego, si ejecuta el comando de archivo, verá cuáles son 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, instalé Google Chrome para verificarlo.

Parece que el directorio de Google Chrome es ligeramente diferente de Chromium.

Usando las mismas técnicas (aquí especificando la ID del proceso del navegador, la salida eliminó algunas columnas para mayor claridad):

$ 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
fuente
Eso es intrigante, porque no funciona para mí. Actualicé mi respuesta con una pasta de lo que veo. ¿Funciona para usted con la URL de ejemplo blip.tv que le di? Tal vez sea por una versión diferente de Chrome, ¿qué estás usando?
Yang
Sí, usé tu URL exacta. ¿Estaba reproduciendo el archivo mientras ejecutaba los comandos? Intente borrar su caché, reproducir el archivo y luego ejecutar los comandos. Funcionó para mí y pude reproducir el archivo en Mplayer, ¡así que funcionó para mí!
jyap
Por desgracia, limpiar el caché no ayudó. Sí, el archivo se estaba reproduciendo mientras ejecutaba estos comandos. Actualicé mi respuesta con más información. Algunos respondedores dicen que debería mirar el proceso de Flash, otros dicen que debería mirar uno de los procesos del navegador, pero he intentado ambos, incluso mirando todos los procesos. ¿Alguna idea de por qué está roto para mí? Lo he probado en varias máquinas ahora.
Yang
Edité mi respuesta anterior para especificar el ID de proceso de Google Chrome y ejecutar el comando lsof. Prueba eso.
jyap
5

usando chromium 11.0.666.0 y flash plug-in 10.2.152

grepping para npviewer no produjo ningún proceso flash para mí, pero grepping para flash sí:

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

básicamente lo mismo que jyap anterior sugirió con

lsof | grep Flash

y luego puedes proceder como se indica arriba ...

dino
fuente
Esto no funciona para mí: actualicé mi respuesta con detalles de lo que veo. ¿Sabes por qué podría no funcionar para mí? Intenté en varias máquinas ahora.
Yang
3

Intenta enumerar los archivos abiertos.

lsof | grep Flash
jyap
fuente
¿Funcionó esto para ti? No aparece nada para mí, no creo que tampoco, dado que los archivos Flash * típicos no se muestran en su ubicación habitual.
Yang
3

Algunos de los jugadores más nuevos almacenan en la memoria intermedia para tratar de hacer imposible que la gente use estos trucos. No podrá obtener nada en ese caso.

geekosaur
fuente
Si bien esta es información útil, y teniendo en cuenta que no sé cómo sondear la RAM (solo es posible), no estoy de acuerdo con que "no podrá obtener nada". Donde hay voluntad hay un camino.
user66001
3

Solucioné este problema. Aquí los pasos son

  1. Ir a complementos instalados sobre: ​​complementos en Chrome / Mozilla
  2. Haga clic en Detalles para ver con más información. Deshabilita el complemento de Flash. La ubicación del complemento sería "/usr/lib/adobe-flashplugin/libflashplayer.so"
  3. Descargue la versión tar.gz de Flash Player desde aquí http://get.adobe.com/flashplayer/
  4. Extraiga ese archivo y copie libflashplayer.so a / usr / lib / chromium-browser / plugins. Luego habilite esto en la página del complemento.
  5. Si ve algún video, descargará en /home//.cache/chromium/Default/Cache esta carpeta

echar un vistazo http://www.arulraj.net/2011/03/google-chrome-download-video.html

Arul
fuente
2

Para la última versión de Chrome en Linux:

  1. Identifique el pid del complemento Flash utilizado por Chrome:

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

    a partir de ahora se llama al complemento libgcflashplayer.

  2. Identifique el archivo Flash abierto por este proceso de complemento Flash:

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

    o

    lsof -p Flash_plugin_pid | grep -i deleted
    

    Busca archivos eliminados.

  3. Copie el archivo de /proc/[pid]/fd/[fileno]arecovered_file.flv

HKVC
fuente
2

Estoy usando Chrome 11.06 en Ubuntu 10.04. Encontré mis archivos flv en ~ / .cache / google-chrome / Default / Cache. Prueba un

file * | grep Flash\ Video
usuario733032
fuente
2

Un pequeño consejo de mi parte. Esto funciona en 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

Ahora puede programar este script con el crontab. Se podría optimizar para que no haya archivos FLV duplicados.

Burkass
fuente
2

Usando Firefox en 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
fuente
0

Tengo otra forma de hacerlo basada en el descriptor de archivo fundado en / proc (uso bash moderno en pocas líneas)

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