Capture video flow from firefox
今天讨论网页视频流抓取问题,针对Firefox浏览器,有两种方法。
- 直接从Firefox的缓存中获取;
- 利用flash流的进程号,在系统/proc下抓取缓存的数据流。
Firefox 缓存提取
Firefox的缓存保存在如下的路径中,其中f176xa6s.default
不同的用户会不同,其他路径成分基本相同。
进入缓存文件夹后,便可以根据时间和文件大小搜索缓存文件。因为文件名是16进制编码的,无法体现文件内容,所以不考虑。
其中-S
表示按文件大小排序,-t
表示按时间先后排序。
通常视频文件大小为MB
量级,所以一般排序在前的几个文件会是缓存的视频。
Firefox flash flow 抓取
从Firefox网页抓取flash插件播放的视频流的步骤分为三步,(1) 打开视频、(2) 获取flash播放进程ID、(3) 视频流转存。
Step1 打开视频
在浏览器播放视频,此处需要firefox支持flash,或者安装adobe flash插件。
Step2 获取flash播放进程ID
利用lsof
抓取正在运行的Flash
进程,如下
会输出如下类似的结果,其中31346
即为目标ID.
Step3 视频流转存
参考博客: Linux下的浏览器播放flv视频都是采用的Flash播放器,而Flash播放器在播放每个视频的时候都会在/tmp目录下创建以“Flash”字样开头做标识的缓存文件,但是如果我们进入到/tmp目录下察看所有文件,却找不到正在播放的缓存文件,因为这些视频缓存文件只有系统可见,对用户是隐藏的。因此,我们可以根据Flash进程的ID,进入系统进程文件/proc
下,获取缓存的视频流。
|
|
利用cat
和管道
,将数据流输入到.flv
文件中。
视频格式转换
利用mencoder
可以对视频文件进行格式转换,
其中参数含义如下,参考了此文
-ovc lavc:(output video codec)指定输出视频文件的视频编码类型,此处选择的是 Libavcodec 的视频编码;
-lavcopts vcodec=mpeg4:(Libavcodec options)指定视频编码的设置,由于 Libavcodec 包含了多种视频编码,所以用 vcodec=mpeg4 来指定具体的使用 MPEG-4 编码;
-oac mp3lame:(output audio codec)指定输出媒体文件的音频编码类型,此处选择的是 mp3lame;
References
[1] Linux下提取保存浏览器中的视频
[2] linux下视频格式转换工具