![如何保存缓冲的 Flash 视频(在 Linux 上)?](https://linux22.com/image/1371458/%E5%A6%82%E4%BD%95%E4%BF%9D%E5%AD%98%E7%BC%93%E5%86%B2%E7%9A%84%20Flash%20%E8%A7%86%E9%A2%91%EF%BC%88%E5%9C%A8%20Linux%20%E4%B8%8A%EF%BC%89%EF%BC%9F.png)
曾经有一种在任何浏览器(如 Firefox、Chrome 等)中提取缓冲的 Flash 视频的方法,该方法利用命令ps
并监视fd
指向内存中临时文件的。不幸的是,这种方法不再有效。例如,fd
Chromium 使用的所有方法是:
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-chrome
,chro
并将要在文件名中查找的字符串更改为/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 书签。只需将网页上的按钮拖到书签栏即可。只需在观看视频时单击链接即可