如何保存缓冲的 Flash 视频(在 Linux 上)?

如何保存缓冲的 Flash 视频(在 Linux 上)?

曾经有一种在任何浏览器(如 Firefox、Chrome 等)中提取缓冲的 Flash 视频的方法,该方法利用命令ps并监视fd指向内存中临时文件的。不幸的是,这种方法不再有效。例如,fdChromium 使用的所有方法是:

chrome    19412  ymf   69u   REG   0,14   470364     0  270129 /dev/shm/.org.chromium.Chromium.1fzPuo (deleted)
chrome    19412  ymf   77u   REG   0,14   131060     0  270141 /dev/shm/.org.chromium.Chromium.94K6Di (deleted)
chrome    19412  ymf  103u   REG    8,5     2052     0 4230990 /var/tmp/etilqs_01QDHFotJcLOpBS (deleted)
chrome    19412  ymf  112u   REG    8,5    24600     0 4232788 /var/tmp/etilqs_tFao7GamL5cslaZ (deleted)
chrome    19412  ymf  188u   REG    8,6    16384     0 1310851 /home/ymf/.config/chromium/Default/History Index 2013-07-journal (deleted)
chrome    19412  ymf  189u   REG    8,5    16400     0 4232787 /var/tmp/etilqs_D5p3BT7rtTSWLsy (deleted)

它们都不包含媒体内容。

而且我坚信我们可以通过某种方式控制播放视频(在 Linux 上),因为无论何时播放视频,视频都是从服务器流式传输的(无需任何特定于浏览器的插件的帮助)。

答案1

您说“chromium 使用的所有 fd 是:... 它们都不包含媒体内容。”但您列出的打开文件非常少,看起来都属于一个进程。这与 chrome 的运行方式不同。您是如何获得这些信息的?

在我的计算机上(Linux Mint 和 Chrome 28.0.1500.95),我可以在您要查找的位置检索流式 Flash 文件。我怀疑您在这个过程中遗漏了某些内容。

首先,您需要识别正在运行的进程胡椒并找到与您的文件相对应的文件描述符 id。

这得益于/proc每个进程的fd目录

在浏览器窗口中打开视频后,运行以下命令:

for ID in $( pgrep chrome ) ; do ( sudo ls -l /proc/$ID/fd|grep Pepper ) && echo /proc/$ID/fd; done

输出类似于:

lrwx------ 1 root root 64 ago  2 12:52 29 -> /home/me/.chromecache/Default/Pepper Data/Shockwave Flash/.com.google.Chrome.ulDLo0 (deleted)
/proc/1196/fd

忽略其指向的链接路径:它已被删除。您需要通过以下方式访问该文件/proc/$PROCID/fd/$FDID

在上面的例子中,您将运行:

sudo cat /proc/1196/fd/29 > my_video.flv

[编辑]

要对 Chromium 执行相同操作,请将进程名称从 更改为google-chromechro并将要在文件名中查找的字符串更改为/tmp/Flash如下形式:

for ID in $( pgrep chro ) ; do ( sudo ls -l /proc/$ID/fd|grep /tmp/Flash ) && echo /proc/$ID/fd; done

[编辑](再次)

这条命令应该可以与 chrome 和 chromium 一起使用(至少在我的计算机上是这样):

for ID in $( pgrep -f chro ) ; do ( sudo ls -l /proc/$ID/fd|egrep "(/tmp/Flash|Pepper)" ) && echo /proc/$ID/fd; done

答案2

您还可以在脚本中使用@silviot 的方法:

#!/bin/bash
#
# Show all chrome cached video files!
#
for ID in $( pgrep chrom ) ; do 
    sudo ls -l /proc/$ID/fd|grep Pepper|cut -d' ' -f9|sed "s/\(.*\)/\/proc\/$ID\/\1/g"
done | grep -v '^$'

我还没有测试过同时运行 1 个以上的视频,但它应该可以工作。

答案3

我尝试了所有被禁止的扩展,然后你必须一直更新。然后偶然发现了这个:使用 KeepVid.com 书签。只需将网页上的按钮拖到书签栏即可。只需在观看视频时单击链接即可

相关内容