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

Yan*_*ang 37 video linux flash google-chrome ubuntu

我喜欢保留视频,因为

  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)
Run Code Online (Sandbox Code Playgroud)

我尝试查看 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
Run Code Online (Sandbox Code Playgroud)

我尝试将strace所有 chrome 进程用于任何看起来可能正在写入文件的内容:

strace -p (pgrep chrome|xargs -I_ echo -p _)
Run Code Online (Sandbox Code Playgroud)

但是看一下write/ writev/select通话只向我指出了几个FDS获得/proc/_/fd/证实是管道/插座(大概为进程相互交谈)。在npviewer.bin过程中也尝试了同样的事情。

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

如果它有所作为,我正在使用 Chrome 的开发频道版本,我相信它(总是?)使用它自己的安全 Flash 实现。在此更新时,我使用的是 Chrome 10.0.648.45 dev。根据http://www.adobe.com/software/flash/about/我正在运行 10.2.152.27。我现在已经尝试了几个 Ubuntu 机器。我现在也尝试了几个 Ubuntu 机器,结果相同。

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

lio*_*ori 31

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

我写了一段时间:从几乎删除的文件中获取 Flash 视频

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

  • 需要注意的是,虽然它曾经适用于所有 Flash 电影播放器​​,但现在不再如此。它似乎适用于一些鲜为人知的网站,但不适用于 Youtube。我只能猜测 Youtube 找到了一种方法可以让文件远离文件系统...... (2认同)

oma*_*mab 24

检查 /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]
...
Run Code Online (Sandbox Code Playgroud)

文件11,标记为“(deleted)”的那个,仍然指向最初在 /tmp/ 上创建的文件,所以它没有被完全删除:

$ file -L 11 
11: Macromedia Flash Video
Run Code Online (Sandbox Code Playgroud)

做一个:

$ mplayer 11
Run Code Online (Sandbox Code Playgroud)

将重现 FLV 文件。


这是一个从上述过程改编的非常方便的命令行。它可能需要对您的分发/安装以及您通常运行的进程进行细微调整。

您可以替换flashnpviewer,替换vlcmplayer

FLASHPID=\`pgrep -f flash\`; vlc /proc/$FLASHPID/fd/\`ls -l /proc/$FLASHPID/fd | grep tmp | cut -d" " -f9\`
Run Code Online (Sandbox Code Playgroud)

  • 你可以复制它 cp 11 /.../... (8认同)

小智 10

大多数情况下,Flash 流都是通过 http 请求获取的简单文件。

对于您的视频 http://blip.tv/file/3627639

在谷歌浏览器中,您可以检查网络请求 ( ctrl + shift + i) 寻找最长的完成情况:

Fosslc-..
/file/get
Run Code Online (Sandbox Code Playgroud)

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

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


jya*_*yap 9

杨,

是的,它在 ~/.cache/google-chrome/Cache 中(嗯,我安装了 Chromium,所以我在 ~/.cache/chromium/Cache 中找到了它)。

如果您观看视频并按时间戳排序:

$ ls -rt | tail
f_00003a
f_00003b
f_00003c
f_00003d
data_2
data_3
index
data_1
f_000040
data_0
Run Code Online (Sandbox Code Playgroud)

然后,如果您运行 file 命令,您将看到哪些是 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
Run Code Online (Sandbox Code Playgroud)

好的,我安装了谷歌浏览器来检查一下。

看起来 Google Chrome 的目录与 Chromium 略有不同。

使用相同的技术(此处指定浏览器的进程 ID,为清晰起见,输出删除了一些列):

$ 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
Run Code Online (Sandbox Code Playgroud)


小智 5

使用 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 ... 
Run Code Online (Sandbox Code Playgroud)

与上面建议的 jyap 基本相同

lsof | grep Flash
Run Code Online (Sandbox Code Playgroud)

然后你可以按照上面的方法继续......


jya*_*yap 3

尝试列出打开的文件。

lsof | grep Flash
Run Code Online (Sandbox Code Playgroud)