Di Google Chrome di Linux, di mana flv jika tidak di / tmp?


37

Saya suka menyimpan video karena

  1. Saya suka buffering dan kemudian memainkannya secara bergantian di media player saya,
  2. Saya ingin dapat menghentikan / memulai ulang browser saya tanpa kehilangan semua video yang di-buffer, dan
  3. Flash sering macet dan memberi saya kotak abu - abu .

Untuk banyak situs dengan video Flash (termasuk Youtube), saya dapat menemukan file flv di /tmp, biasanya dinamai FlashXX.... Tetapi beberapa situs berhasil mencegah file ini muncul, misalnya http://blip.tv/file/3627639 . Mungkin ini tidak tergulung ke disk sama sekali, tapi itu akan mengejutkan karena seluruh video berdurasi satu jam dapat disangga tanpa RAM saya terkena dampaknya.

Di Firefox, saya dapat menemukan flv di dalam direktori cache-nya. Tapi saya ingin tahu bagaimana melakukan ini di Chrome. Saya mencoba mencari di bawah ~ / .cache / google-chrome / tetapi tidak menemukan apa pun yang tampak benar. Contohnya:

$ 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)

Saya mencoba melihat file yang terbuka untuk proses Flash, tetapi tidak melihat ada file Flash yang dihapus, yang seharusnya ada di bawah ini:

$ 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

Saya mencoba stracesemua proses chrome untuk apa pun yang tampak seperti menulis file:

strace -p (pgrep chrome|xargs -I_ echo -p _)

tetapi melihat write/ writev/ selectpanggilan hanya menunjuk saya ke beberapa FD yang /proc/_/fd/menunjukkan pipa / soket (mungkin untuk proses berbicara satu sama lain). Juga mencoba hal yang sama pada npviewer.binprosesnya.

Saya juga mencoba untuk hanya memeriksa semua file yang ditunjukkan /proc/*/fd/( proses apa pun ) yang baru-baru ini dimodifikasi, tetapi tidak menemukan apa pun yang tampak seperti mengandung flv. Saya juga mencoba pemeriksaan yang sama pada file yang baru dimodifikasi di bawah ~/.cache/google-chrome/.

Jika itu membuat perbedaan, saya menggunakan rilis saluran dev Chrome, yang saya percaya (selalu?) Menggunakan implementasi Flash aman sendiri. Pada saat pembaruan ini, saya menggunakan dev Chrome 10.0.648.45. Menurut http://www.adobe.com/software/flash/about/ Saya menjalankan 10.2.152.27. Saya sudah mencoba beberapa kotak Ubuntu sekarang. Saya juga sudah mencoba beberapa kotak Ubuntu sekarang, dengan hasil yang sama.

Adakah yang ingin menusuk ini?


Mungkin membantu jika Anda memberikan tautan ke halaman yang bermasalah.
Sophie Alpert

@ Ben: Ups, saya bermaksud melakukan itu. Ditambahkan!
Yang

Jawaban:


31

Saya mengamati bahwa plugin Flash baru-baru ini menyimpan file di / tmp, tetapi mereka menggunakan trik menghapusnya dan menjaga filehandle terbuka untuk menjaga mereka tetap hidup. Ini berarti mereka masih disimpan di drive (selama filehandle dibuka oleh plugin flash), tetapi mereka tidak terlihat dalam daftar direktori (karena file telah dihapus).

Saya menulis tentang ini beberapa waktu: mendapatkan video flash dari file yang hampir dihapus

Tetapi itu semua tergantung pada versi plugin Flash. Ini digunakan untuk menyimpan film di / tmp atau di cache browser juga.


Posting blog Anda yang sangat menarik menjelaskan melakukan hal ini dengan Firefox, tetapi saya ingin tahu bagaimana melakukan ini menggunakan Chrome. Saya telah melihat lsof dan / proc, tetapi belum menemukan tanda-tanda file yang tidak terhubung. Sudahkah Anda sukses dengan contoh video?
Yang

1
@Yang: Cara persis yang sama berfungsi dengan chrome, setidaknya di notebook saya - baru saja diuji. Saya pikir ini lebih tergantung pada flash player daripada pada webbrowser. Apa versi plugin Flash yang Anda miliki?
liori

Menurut adobe.com/software/flash/about saya menjalankan 10.2.152.27, yang saya pikir adalah Flash yang terpasang di dalam Chrome (menggunakan Chrome 10.0.648.45 dev). Saya sudah mencoba beberapa kotak Ubuntu sekarang.
Yang

2
Sebagai catatan, tampaknya sementara ini digunakan untuk bekerja dengan semua pemain film flash, itu tidak terjadi lagi. Tampaknya berfungsi dengan beberapa situs yang kurang dikenal, tetapi tidak Youtube. Saya hanya bisa menebak bahwa Youtube menemukan cara untuk menjaga file dari sistem file ...
liori

1
itu masih berfungsi untuk saya dengan Chromium versi 33.0.1750.152-1 (Debian Jessie) dan versi flashplayer 11.2.202.346 (menurut adobe.com/software/flash/about )
jopasserat

24

Memeriksa / proc // fd / melakukan trik untuk saya:

$ 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]
...

File 11 , yang ditandai sebagai "(dihapus)", masih menunjuk ke file yang awalnya dibuat di / tmp /, jadi itu tidak sepenuhnya dihapus:

$ file -L 11 
11: Macromedia Flash Video

melakukan:

$ mplayer 11

akan mereproduksi file FLV.


Berikut ini adalah baris perintah yang cukup praktis yang diadaptasi dari prosedur di atas. Mungkin memerlukan sedikit penyesuaian untuk distribusi / instalasi Anda dan proses apa yang biasanya Anda jalankan.

Anda dapat mengganti flashdengan npviewer, ganti vlcdengan mplayer:

FLASHPID=\`pgrep -f flash\`; vlc /proc/$FLASHPID/fd/\`ls -l /proc/$FLASHPID/fd | grep tmp | cut -d" " -f9\`

Ini tidak berfungsi untuk saya - saya memperbarui jawaban saya dengan detail apa yang saya lihat. Apakah Anda tahu mengapa itu mungkin tidak berhasil untuk saya? Saya mencoba beberapa mesin sekarang.
Yang

BTW, Anda bisa menyimpan flv denganmplayer 11 -dumpstream -dumpfile outputname
liewl

8
Anda bisa menyalinnya cp 11 / ... / ...
omab

10

Streaming flash sebagian besar waktu adalah file sederhana didapat dengan permintaan http.

Untuk video Anda di http://blip.tv/file/3627639

Di Google Chrome Anda dapat memeriksa permintaan jaringan ( ctrl + shift + i) mencari yang terlama untuk diselesaikan dalam kasus Anda:

Fosslc-..
/file/get

klik dan salin / tempel url dari bidang 'Minta URL', ke tab baru

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


Fantastis! Saya tergoda untuk menerima jawaban Anda karena itu benar-benar berfungsi untuk saya, tetapi saya akan menunggu sedikit lebih lama untuk melihat apakah ada jawaban lain yang benar-benar menemukan lokasi flv yang diunduh.
Yang

tolong jangan menerimanya, karena itu hanya tipuan untuk kasus Anda. Saya benar-benar ingin tahu di mana sih flash menyimpan file video sementara.
Doud

Heh, baiklah. Saya juga ingin tahu. Firasat saya adalah bahwa itu disimpan di suatu tempat di file data_ *, yang mungkin tumpukan browser khusus. Saya tidak dapat menemukan alat untuk mencari-cari di dalamnya, meskipun, singkat menyelam ke basis kode Chrome.
Yang

9

Yang,

Ya, ada di ~ / .cache / google-chrome / Cache (well, saya sudah menginstal Chromium jadi saya menemukannya di ~ / .cache / chromium / Cache).

Jika Anda menonton video dan urutkan berdasarkan stempel waktu:

$ ls -rt | tail
f_00003a
f_00003b
f_00003c
f_00003d
data_2
data_3
index
data_1
f_000040
data_0

Kemudian jika Anda menjalankan perintah file Anda akan melihat mana yang 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

Oke, saya menginstal Google Chrome untuk memeriksanya.

Sepertinya direktori untuk Google Chrome sedikit berbeda dari Chromium.

Menggunakan teknik yang sama (di sini menentukan ID proses browser, output menghapus beberapa kolom untuk kejelasan):

$ 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

Itu menarik, karena itu tidak berhasil untuk saya. Saya memperbarui jawaban saya dengan menempelkan apa yang saya lihat. Apakah ini berfungsi untuk Anda dengan contoh URL blip.tv yang saya berikan? Mungkin karena versi Chrome yang berbeda - mana yang Anda gunakan?
Yang

Ya saya menggunakan URL persis Anda. Apakah Anda memutar file saat menjalankan perintah? Coba bersihkan cache Anda, mainkan file dan kemudian jalankan perintah. Itu bekerja untuk saya dan saya bisa memutar file di Mplayer sehingga itu bekerja untuk saya!
jyap

Sayangnya, membersihkan cache tidak membantu. Ya, file sedang diputar saat saya menjalankan perintah ini. Memperbarui jawaban saya dengan informasi lebih lanjut. Beberapa penjawab mengatakan saya harus melihat proses Flash, yang lain mengatakan saya harus melihat salah satu proses browser, tetapi saya sudah mencoba keduanya, bahkan melihat semua proses. Ada gagasan tentang mengapa itu rusak bagi saya? Saya sudah mencoba beberapa mesin sekarang.
Yang

Saya mengedit jawaban saya di atas untuk menentukan ID proses Google Chrome dan menjalankan perintah lsof. Cobalah itu.
jyap

5

menggunakan chromium 11.0.666.0, dan plug-in flash 10.2.152

grepping for npviewer tidak menghasilkan proses flash untuk saya, tetapi grepping untuk flash tidak:

$ ps x | grep flash
11005 ?        Rl     2:30 /usr/lib/chromium-browser/chromium-browser ... 

pada dasarnya hal yang sama seperti jyap di atas disarankan dengan

lsof | grep Flash

dan Anda dapat melanjutkan seperti di atas ...


Ini tidak berfungsi untuk saya - saya memperbarui jawaban saya dengan detail apa yang saya lihat. Apakah Anda tahu mengapa itu mungkin tidak berhasil untuk saya? Saya mencoba beberapa mesin sekarang.
Yang

3

Coba daftar file yang terbuka.

lsof | grep Flash

Apakah ini berhasil untuk Anda? Tidak muncul apa-apa untuk saya - saya tidak akan menebak itu baik, mengingat bahwa file Flash * khas tidak muncul di lokasi mereka yang biasa.
Yang

3

Beberapa pemain yang lebih baru buffer dalam memori untuk mencoba membuatnya tidak mungkin bagi orang untuk menggunakan trik ini. Anda tidak akan bisa mendapatkan apa pun dalam hal itu.


Walaupun ini adalah info yang membantu, dan mengingat saya tidak tahu bagaimana cara menyelidiki RAM (hanya itu mungkin), saya tidak setuju bahwa Anda "tidak akan bisa mendapatkan apa-apa". Dimana ada kemauan disitu ada jalan.
user66001

3

Saya memperbaiki masalah ini. Inilah langkah-langkahnya

  1. Goto menginstal plugin about: plugins in chrome / mozilla
  2. Klik Detail untuk melihat dengan informasi lebih lanjut. Nonaktifkan Plugin Flash. Lokasi plugin adalah “/usr/lib/adobe-flashplugin/libflashplayer.so”
  3. Unduh versi flash player tar.gz dari sini http://get.adobe.com/flashplayer/
  4. Ekstrak file itu dan salin libflashplayer.so ke / usr / lib / chromium-browser / plugins. Kemudian Aktifkan ini di halaman plugin.
  5. Jika Anda melihat video apa pun, itu akan diunduh di /home//.cache/chromium/Default/Cache folder ini

lihat http://www.arulraj.net/2011/03/google-chrome-download-video.html


2

Untuk Chrome terbaru di Linux:

  1. Identifikasi pid dari plugin Flash yang digunakan oleh Chrome:

    ps ax | grep -i chrome | grep -i flash 
    

    seperti yang sekarang disebut plugin libgcflashplayer.

  2. Identifikasi file Flash yang dibuka oleh proses plugin Flash ini:

    file /proc/Flash_Plugin_PID/fd/* | grep -i deleted
    

    atau

    lsof -p Flash_plugin_pid | grep -i deleted
    

    Cari file yang dihapus.

  3. Salin file dari /proc/[pid]/fd/[fileno]kerecovered_file.flv


2

Saya menggunakan chrome 11.06 di Ubuntu 10.04. Saya menemukan file flv saya di ~ / .cache / google-chrome / Default / Cache. Coba a

file * | grep Flash\ Video

2

Sedikit tip dari saya. Ini berfungsi di Ubuntu 10.04.

#!/bin/bash
viewer=`ps x|grep npviewer|grep -v grep |awk '{print $1}'`
echo $viewer
cd /proc/${viewer}/fd
jef=(`ls -l|awk '{print $8 " " $10}'|grep Flash|awk '{print $1}'`)
echo $jef
jef1=${#jef}
ext=`date +'%d_%m_%k_%M_%S'`
i=0
while [ "$i" -lt "$jef1" ]
do 
cp ${jef[${i}]} /fun/${jef[${i}]}"(${ext})".flv
i=`expr $i + 1`
done

Sekarang Anda dapat menjadwalkan skrip ini dengan crontab. Ini bisa dioptimalkan sehingga tidak ada file FLV duplikat.


2

Menggunakan Firefox di Kubuntu:

export COUNT=0
export FILENAME=$1
export FILENAME=${FILENAME:=test}

PID=`ps ax | grep -i flashplugi[n] | awk '{print $1}'`
FLASH=`ls -l /proc/$PID/fd| grep Flash | awk '{print $8}'`

for N in $FLASH ; do
  COUNT=$(($COUNT+1))
  cp /proc/$PID/fd/$N ${FILENAME}_${COUNT}.flv
done

0

Saya punya cara lain untuk melakukannya berdasarkan pada deskriptor file yang ditemukan di / proc (saya menggunakan bash modern dalam beberapa baris)

#!/bin/bash

process="flash"
filename="flash"

readlink -f /proc/$$/exe | fgrep -q bash || {
    echo >&2 "Hey dude ! You must call $0 with bash !"
    exit 2
}

. ~/.bashrc || . /etc/profile

count=1
for pid in $(pgrep -f $process); do
    fds=$(file /proc/$pid/fd/[0-9]* | fgrep Flash | cut -d: -f1)
    for fd in $fds; do
        cp -v $fd ${filename}_${count}.flv
        ((count++))
    done
done

# vim:ts=4:sw=4
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.