如何从流媒体网站访问Flash文件?


30

在Maverick中,可以选择从YouTube,Vimeo等网站下载Flash视频,方法是在关闭窗口之前将目录中的flashxx**文件复制/tmp到另一个位置。但是在Natty的Firefox 4中,此功能不再起作用。为什么?


如果您只想下载视频,我建议您使用Clipgrab:clipgrab.de/en。他们有一个PPA:launchpad.net/~clipgrab-team
Martin Thoma 2012年

Answers:


26

Flash插件的更新将位置从/tmpFirefox缓存目录(例如~/.mozilla/firefox/bq95m4w1.default/Cache)更改了。不幸的是,缓存的闪存文件不像以前那样容易找到,但是有可能。

以下命令列出了Firefox缓存中的所有Flash文件。

find ~/.mozilla/firefox/*.default/Cache -type f -exec file {} \;  | grep Flash

在较新版本的ubuntu上尝试

find ~/.cache/mozilla/firefox/*.default/Cache -type f -exec file {} \;  | grep Flash

1
为什么不file ~/.mozilla/firefox/*.default/Cache/* | grep Flash呢?缓存目录似乎没有子目录,可以证明使用合理find
enzotib

不起作用。可能以前工作过。
dumb906 2011年

FLV文件仍位于/ tmp中,但是您需要特殊的技巧才能访问它。
user4124 2011年

请参阅下面的我的回复,其中讨论了使用/ proc文件系统恢复FLV文件的方法。不过,您仍然可以使用Firefox插件之一来执行相同的任务。
user4124 2011年

28

您可以使用多个Firefox插件来从许多网站(例如Youtube)中提取FLV文件。

我将在下面显示如何使用最新版本的Flash插件手动执行此操作。

  1. 访问YouTube视频并等待其完全下载。
  2. 然后,从命令行运行命令

    $ lsof -n | grep Flash

    会显示文件(甚至是内存文件!),并过滤Flash名称相同的文件。

  3. 你得到类似的东西

    plugin-co 2461 user 17u REG 8,5 1693301 524370 /tmp/FlashXXVkHEM6 (deleted)

    现在,有一个/tmp/FlashXXVkHEM6但已被删除。

  4. 在Linux中,如果删除了文件,则只有在关闭了先前打开该文件的所有程序后,该文件实际上才消失。也就是说,Flash插件正在使用技巧来隐藏/ tmp / FlashXXVkHEM6文件。它会立即创建deletes它。但是由于Flash插件可以继续运行,因此它显然仍然可以使用它。

  5. 从上面的行中,我们注意到了数字2461,这是进程ID。您的情况可能会有所不同。然后跑

    $ cd /proc/2461/fd

    最后执行

    $ ls -l

    这将向您显示内存文件,特别是

    lrwx------ 1 user user 64 2011-09-16 10:23 17 -> /tmp/FlashXXVkHEM6 (deleted)

    数字“ 17”(在我的情况下)是可用于访问已删除 文件的文件名/tmp/FlashXXVkHEM6。因此,只需运行

    $ cp 17 /tmp/myyoutubevideo.flv

    然后您恢复了YouTube视频!

而已!您手动恢复了YouTube视频!


7

如果导航到/ proc文件夹,则会看到一堆文件夹,所有文件夹均以数字命名,其中包括与第二个字段中的数字匹配的文件夹。

现在导航到该文件夹​​,然后浏览其子文件夹“ fd”。在此文件夹中,您将看到整个数字选择。这些与文件描述符本身有关。

ls -l在此文件夹中运行,您将看到每个数字都链接到管道,套接字或文件。

其中,第四个字段中的数字将符号链接到我们之前找到的/ tmp / Flash *文件。

要测试这是正确的文件,可以通过mplayer或vlc(mplayer filedescriptornumber/ vlc filedescriptornumber)运行它。如果找不到文件名,请尝试ls -l | grep Flash

为方便起见,请在控制台中尝试以下命令:

stat -c %N /proc/*/fd/* 2>&1|awk -F[\`\'] '/Flash/{print$2}'

输出将是这样的:

/proc/4691/fd/17
/proc/4691/fd/18

这将列出您所有下载的Flash流。对于该示例,我的firefox 4浏览器中有2个Flash视频。如果要复制它,只需使用以下命令:

cp /proc/4691/fd/17 ~/Videos/Flash/sample.flv

来源:http : //n00bsys0p.wordpress.com/2011/02/10/how-to-download-flash-10-2-video-streams-in-linux/


5

这个小脚本会将您下载的Flash文件保存到自定义目录。

  1. 制作要保存文件的目录,例如〜/ Videos / flvs

    mkdir ~/Videos/flvs
    
  2. 打开gedit并复制并粘贴此脚本。

    #!/bin/bash
    # flvcache script
    
    CACHE=~/.mozilla/firefox/*.default/Cache
    OUTPUTDIR=~/Videos/flvs
    MINFILESIZE=2M
    
    for f in `find $CACHE -size +$MINFILESIZE`
    do
        cp "$f" "$OUTPUTDIR/$o"
    done
    
    nautilus  "$OUTPUTDIR"&
    
  3. 将文件另存为saveflashall.sh,然后向文件添加可执行权限

    chmod +x saveflashall.sh
    
  4. 然后运行它。

    ./saveflashall.sh
    

然后它将打开上面创建的第一个文件夹中的文件。自定义为包括所有文件(适用于mpeg和mp4),而不是仅包括flvs。

点数可浏览http://desdecode.blogspot.com/2011/04/saving-watched-online-videos-linux.html


我尝试了此。.一些我很久很久以前看过的视频现在都在此文件夹中,但是我现在没有看过。为什么?
avi

4

据我所知这不是由于Firefox或natty,而是由于Flash更新...

您可以使用wireshark或使用诸如youtube-dl获取电影文件之类的工具来捕获http流。

但是请记住,这可能不合法,因此请检查您当地的法规...


绝招与Wireshark的,但我想这可能是累人的,因为视频是相当大的规模(超过10MB),而软件包中包含有一小片数据的:)
拉法尔Cieślak


3

Ubuntu 12.04(Precise)-Firefox 11说明 chlumma1的bash脚本的修改版本。

使用文本编辑器,将下面的代码保存到名为“ getvids.sh”的文件中。将其移至您要保存视频的位置。右键单击该文件,转到“属性”,将“权限”更改为“允许作为程序执行”。

您所要做的就是单击脚本,选择“在终端中运行”,它将所有视频文件保存到该目录。要保存整个视频,必须先将其加载到浏览器中。它将保存几乎所有网站上的视频,包括youtube,vimeo,dailymotion,metacafe,liveleak,facebook。只需删除不需要的任何视频文件即可。

(如果您想要的视频没有被保存,那么该网站可能正在使用一种专有的流格式,任何缓存检索程序都无法保存该格式。例如:Hulu,netflix,一些youtube视频?)另外,VLC播放器是非常适合观看Flash视频。

#!/usr/bin/env bash
# getvids.sh [save_folder]

SAVE_FOLDER="$HOME" # User editable

# If the below option is used, then this script should be run in a terminal.
#CPMOD="-i" # Uncomment to prevent file overwrites

PATERN="libflashplayer"
ALL_PID=`pgrep -f $PATERN`

if [ $? -eq 1 ]; then
  echo ERROR: Flashplayer not running
  exit 1
fi

if [ ! -z $1 ]; then
  echo "Setting save location: $1"
  SAVE_FOLDER="$1"
fi

if [ ! -d "$SAVE_FOLDER" ]; then
  echo "Save location doesn't exist: $SAVE_FOLDER"
  exit 1
fi

for PID in $ALL_PID; do
  declare -a OUTFILES=($(ls -lt1 /proc/$PID/fd | grep '/tmp/Flash' | sed 's/^.*\/tmp\///' | sed 's/\ .*$//'))
  declare -a FDS=($(ls -lt1 /proc/$PID/fd | grep '/tmp/Flash' | awk '{ print $9 }' ))
  for ((i=0; i<${#FDS[@]}; i++)); do
    saveas="$SAVE_FOLDER/${OUTFILES[i]}.flv"
    echo "Copying video ${FDS[i]} to $saveas"
    cp $CPMOD "/proc/$PID/fd/${FDS[i]}" "$saveas"
  done
done

那些了解终端的人可以编辑前两个变量并获得一些额外的功能。或者,要实时查看文件,可以在终端中键入此文件以找出它们的位置for i in $(pgrep -f libflash); do find /proc/$i/fd/ -ls | grep "/tmp/Flash" | awk '{ print $11 }'; done

PS。同样,出色的作品chlumma1,但是裁员了C编程风格的循环;)


2

Flash插件的最新版本通过将临时文件标记为已删除来隐藏该临时文件。实际上,视频流被下载到“已删除文件”。但是,即使文件被删除,如果文件被某个进程打开,则可以找到其文件描述符,并因此找到文件内容。

这个简单的脚本可以打印出打开的Flash视频的文件描述符:

file /proc/*/fd/* 2>/dev/null | grep Flash | cut -f1 -d:

并且,您可能想从文件描述符中创建一个常规文件,例如:

cp $(file /proc/*/fd/* 2>/dev/null | grep Flash | cut -f1 -d: | head -n 1) video.avi

否则文件描述符不是很方便(请记住,它是一个已删除的文件!)

无论您使用哪种浏览器,该方法均应起作用。


1

嘿,这个问题在10.10中已经存在。因此,为了解决它,请尝试以下操作:

None of the methods described by previous posters are as convenient as just copying the flash file from the tmp directory.

Therefore, what I did was downgrade my Flash to 10.1.102.64

The download link for older versions of flash is http://kb2.adobe.com/cps/142/tn_14266.html

Download the (large) file named "Flash Player 10.1.102.64 and 9.0.289.0".
After downloading, extract the file named flashplayer10_1r102_64_linux.tar.gz

From this file extract libflashplayer.so and overwrite the file at /usr/lib/flashplugin-installer (you will need root privileges, try gksudo nautilus)

Restart Firefox and your flash videos will land up in the /tmp directory as before! This won't work for Google Chrome, it will continue to use the latest version of Flash.

Note: For the above steps to work, a version of Adobe Flash should have been previously installed.

[引自本网站:由chetancrasta查看帖子 ]

我希望这能帮到您。让我知道这是否有效。


我认为您误解了这个问题。原始海报已经安装了Flash Player并且可以正常工作。他只是想知道Flash在哪里存储其临时文件。
Jeremy Bicha

嗯 对。但是我认为他想知道闪存文件在哪里。使用新的Adobe Flash Player版本时,它们的存储方式已经提到过@Woozy。@Woozy还提到“缓存的Flash文件不像以前那样容易找到”。因此,如果您希望Flash文件再次“轻松”,则可以将Flash Player降级。因此,闪存文件将再次存储在/ tmp中...希望您现在理解我的观点!?还是我错了?
维托

1

对于适用于chrome或firefox的通用方法,请尝试使用此名为flashcache的小程序。它将当前正在播放的Flash视频复制到当前目录。

我的补丁程序添加了-p使脚本使用mplayer而不是复制文件的方式播放视频的选项。


1

尽管没有直接回答问题,但我遇到了同样的问题,经过一番搜索发现,Clipgrab更易于使用。


1

您可以在终端中尝试此命令

cp \`file /proc/\*/fd/* | grep tmp/Flash | awk -F":" '{print$1}'` dirname/

1

点击此链接(~/.mozilla/firefox/ewzggcll.default/Cache

除非我真的很困惑(不要这么认为),否则“ ewzggcll”将不会出现在您的计算机中。您会发现有一个随机的字母集合(可能还有数字?),这很可能对于您的Linux和Firefox安装是唯一的。尽管如此,这种看起来很奇怪的随机集合还是很重要的,因为这对于获取缓存至关重要。

希望这可以帮助!(HTH)


1

我使用SMplayer YouTube。您随ubuntu软件中心一起安装了Smplayer。它录制YouTube视频。非常简单易用。


我可以确认这项工作。Ubuntu 14.04。我不敢相信我会浪费时间在互联网上无处不在的所有地方尝试所有答案,直到我来到这里。以我选择的格式和大小...:D
PFROLIM 2014年

1

我使用的minitube是一个YouTube客户端,该客户端可以存储Flash文件/tmp


1

该脚本将执行以下操作:

#!/bin/bash
PATERN="libflashplayer"
ALL_PID=`pgrep -f $PATERN`

if [ $? -eq 1 ]
then
echo ERROR: Flashplayer not runnig
exit 1
 fi


 for PID in $ALL_PID
 do

OUTFILES=`ls -lt1 /proc/$PID/fd | grep '/tmp' | sed 's/^.*\/tmp\///' | sed 's/\ .*$//'`
INFD=`ls -lt1 /proc/$PID/fd | grep '/tmp' | cut -f 9 -d \ `


# nazev souboru do pole
i=0;
for out in $OUTFILES
do
    i=`expr $i + 1`
    NAMEFILE[$i]=$out

done

# nazev file desktiptoru do pole
i=0;
for out in $INFD
do
    i=`expr $i + 1`
    NAMEFD[$i]=$out
done



# ulozeni video dat
i=0;
for outfd in $OUTFILES
do
    i=`expr $i + 1`
    #echo ${NAMEFILE[$i]} ${NAMEFD[$i]}

    cat /proc/$PID/fd/${NAMEFD[$i]} > ${NAMEFILE[$i]}.flv
done

done

0

Mozilla似乎过于频繁地更改位置。此外,缓冲区的名称与视频的名称不同,因此从堆中查找相应的缓冲区也是困难的。因此,保存缓存文件不是一个一致的解决方案。如果可以安装桌面程序,那么ClipGrab是最好的工具。您可以

  1. 搜索视频。
  2. 选择要下载的youtube视频的质量。
  3. 选择要下载的视频格式。
  4. 您只需提供一个YouTube视频URL,它将下载文件。

ClipGrab在Ubuntu中下载youtube视频


0

您也可以将keepvid.com用于许多视频流网站。它确实需要将Java安装在您的计算机上。安装完成后,只需粘贴url链接,然后将其保存为多种格式,包括mp4或WebM


0

最简单的方法是将“ CacheViewer Continued 0.8”插件用于Firefox

安装完成后,按ctrl + shift + c打开,然后按show all,然后在您可以搜索特定的缓存(如jpeg,flv任何内容)后……在该项目上单击鼠标左键,即可为您提供保存,保存的选项通过提供所需的扩展名(例如,用于Flash视频的.flv和用于jpeg的.jpeg)进行扩展,反之亦然 在此处输入图片说明

插件的链接https://addons.mozilla.org/zh-CN/firefox/addon/cacheviewer-continued/?src=api



By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.