在 Linux 上的 Google Chrome 中,如果 flv 不在 /tmp 中,它在哪里?

在 Linux 上的 Google Chrome 中,如果 flv 不在 /tmp 中,它在哪里?

我喜欢保存视频,因为

  1. 我喜欢先缓冲它们,然后在媒体播放器中连续播放它们,
  2. 我希望能够停止/重新启动浏览器而不丢失所有缓冲的视频,并且
  3. Flash 经常崩溃,并给我灰色盒子

对于许多包含 Flash 视频的网站(包括 Youtube),我可以在 中找到 flv 文件/tmp,通常名为FlashXX...。但有些网站设法阻止此文件显示,例如http://blip.tv/file/3627639。这可能根本没有被缓存到磁盘,但这会令人惊讶,因为整个长达一小时的视频都可以缓冲,而我的 RAM 不会受到明显影响。

在 Firefox 中,我可以在其缓存目录中找到 flv。但我很好奇如何在 Chrome 中做到这一点。我尝试在 ~/.cache/google-chrome/ 下查找,但没有找到任何看起来正确的东西。例如:

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

我尝试查看 Flash 进程的打开文件,但没有看到任何已删除的 Flash 文件,下面的许多答案都说这些文件应该存在:

$ 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

我尝试strace检查所有的 chrome 进程,看它们是否看起来可能正在写入文件:

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

但查看write/ writev/select调用仅向我指出了几个/proc/_/fd/显示为管道/套接字的 FD(大概是用于进程之间相互通信)。还在进程上尝试了同样的事情npviewer.bin

我还尝试简单地检查指向的所有文件/proc/*/fd/任何进程)进行检查,但没有发现任何看起来包含 flv 的内容。我还尝试对 下最近修改的文件进行同样的检查~/.cache/google-chrome/

如果有什么不同的话,我使用的是 Chrome 的开发版,我相信(总是?)它使用自己的安全 Flash 实现。在这次更新时,我使用的是 Chrome 10.0.648.45 dev。根据http://www.adobe.com/software/flash/about/我正在运行 10.2.152.27。我现在已经尝试过几个 Ubuntu 盒子。我也已经在几个 Ubuntu 盒子上尝试过,结果相同。

还有其他人想尝试一下吗?

答案1

我观察到最近的 Flash 插件确实将文件存储在 /tmp 中,但它们使用了一种技巧,即删除文件并保持文件句柄打开以保持文件活动。这意味着它们仍然保留在驱动器上(只要文件句柄由 flash 插件打开),但它们在目录列表中不可见(因为文件已被删除)。

我以前写过一篇文章:从几乎被删除的文件中获取 Flash 视频

但这一切都取决于 Flash 插件的版本。它过去也将电影存储在 /tmp 或浏览器的缓存中。

答案2

检查 /proc//fd/ 对我来说很有帮助:

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

文件11标记为“(已删除)”的文件仍然指向最初在 /tmp/ 上创建的文件,因此并未完全删除:

$ file -L 11 
11: Macromedia Flash Video

正在做:

$ mplayer 11

将重现 FLV 文件。


这是根据上述过程改编的非常方便的命令行。它可能需要根据您的发行版/安装以及您通常运行的进程进行微小调整。

您可以替换flashnpviewer,替换vlcmplayer

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

答案3

Flash 流大多数时候都是通过 http 请求获取的简单文件。

您的视频请见:http://blip.tv/file/3627639

在 Google Chrome 中,您可以检查网络请求(ctrl + shift + i)并查找在您的情况下需要完成的最长请求:

Fosslc-..
/file/get

单击它并将 URL 从“请求 URL”字段复制/粘贴到新选项卡

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

答案4

使用 chromium 11.0.666.0,以及 flash 插件 10.2.152

对我而言,对 npviewer 进行 grepping 没有产生任何 flash 进程,但对 flash 进行 grepping 却产生了:

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

基本上和上面的 jyap 建议的一样

lsof | grep Flash

然后您可以按上述操作...

相关内容