Solution pour: Flash Square 10.2 ne stocke plus les vidéos chargées dans /tmp

La dernière version de Flash, square ou 10.2, apporte enfin une version 64 bits sur Linux (Ubuntu dans mon cas). J’ai donc vite sauté sur l’occasion et installé cette version, histoire de voir si elle serait plus clémente avec mon processeur (un Q6600 figurez vous) et si elle ne planterait pas toutes les 5 minutes.

J’étais habitué à laisser charger une vidéo flash dans un onglet après avoir coupé son son, et une fois chargée, j’allais dans le dossier /tmp pour récupérer son fichier flv (ou mp4) et le regarder avec VLC, histoire de bénéficier d’une lecture fluide et en plein écran. Plus avec cette dernière de flash car on voyait plus aucun fichier dans /tmp.

Après un peu de googling, je suis tombé sur un blog en russe (merci Google translate) qui en parle et qui propose une solution. Il s’est avéré que le plugin flash créait bien un fichier dans /tmp, mais le supprimait par la suite tout en gardant son handle ouvert, de sorte qu’il arrive toujours à lire/écrire de et dans ce fichier sans qu’il ne soit visible dans le système de fichiers.

Voici donc une adaptation de la solution proposée dans le blog russe qui gère en plus:

  • Plusieurs vidéos plutôt qu’une seule
  • Assure un nom unique pour le fichier de la vidéo
  • Corrige une erreur dans l’expression régulière passé à sed

Il s’agit d’un script bash à mettre dans un fichier (saveflash.sh par exemple) qu’il suffirait d’éxécuter pour récupérer les vidéos flash chargées.

Pensez à modifier la variable DEST (2ième ligne) pour l’adapter à votre cas:

#!/bin/bash
DEST="/media/temp/vids/"
PID=`ps x | grep flashplayer.so | grep -v grep | awk '{print $1}'`
FD=`lsof -p $PID | grep Flash | awk '{print $4}' | sed 's/[a-z]$//'`

while IFS=' ' read -ra ADDR; do
      for x in "${ADDR[@]}"; do
          # process "$x"
            FN=`mktemp --tmpdir="$DEST"` # create a temp file
            cp "/proc/$PID/fd/$x" "$FN" # copy video to the temp file
            S=`du -h "$FN" | awk '{print $1}'` # get its size
            echo "copied video $x to $FN ($S)" # print info
      done
done <<< "$FD"
About these ads

9 Responses to Solution pour: Flash Square 10.2 ne stocke plus les vidéos chargées dans /tmp

  1. Pingback: Twitted by jawher

  2. tgio says:

    Exactement ce que je cherchais.
    J’avais trouvé ça http://cclive.sourceforge.net/ mais ça ne marche pas avec tout les sites comportant du flash, avec youtube et dailymotion c’est ce qu’il y a de mieux par contre.

  3. vince says:

    salut, cette solution a l’air élégante mais malheureusement elle ne marche pas pour moi :/ (Fedora 13 i686)
    Déjà le lsof avec un PID à plusieurs champs donne une erreur :
    $echo $PID
    1234
    5678
    lsof -p $PID ne marche pas, il faudrait faire lsof -p 1234 -p 5678.

    Ensuite le awk print 4 imprime “mem” et le sed derrière donne “me” … est-ce normal ça ??
    Et j’ai du mal avec la suite.
    Si tu pouvais aider c cool :) Tu crois que mon pb est spécifique à Fedora ? qd même …

    • jawher says:

      Salut,

      Pour le lsof, effectivement, ce script ne gère pas le cas où plusieurs processus flash sont lancés.

      Pour le rest, ça a l’air de venir du fait que tu utilises Fedora. Rapidement, je dirais que lsof n’affiche pas son résultat au même format qu’avec Ubuntu.

  4. vince says:

    Ok, je verrais si je pourrais faire une boucle pour gérer plusieurs processus; (mais du coup pourquoi dis-tu que le script gère “plusieurs vidéos plutôt qu’une seule” ?)
    sinon tu pourrais m’expliquer rapidement ce qu’on va chercher dans /proc/$PID/ stp ?
    et me donner des exemples de ce qu’est $FD et $x.
    Merci !

    • jawher says:

      Ce script gère plusieurs vidéos dans un même processus, genre quand on ouvre plusieurs vidéos dans des tabs d’une même instance du navigateur.

      Pour le lsof, essais de de poster ici son résultat quand il est exécuté sur ta machine.

      • vince says:

        Voilà voilà : (en ayant récupéré le PID du “ps x” filtré)

        [vinced@vince ~]$ lsof -p 21718|grep Flash
        npviewer. 21718 vinced mem REG 253,0 12127284 393334 /usr/lib/flash-plugin/libflashplayer.so
        npviewer. 21718 vinced 11u REG 253,0 61338520 40671 /tmp/FlashXXwgtMaN (deleted)

        • jawher says:

          D’accord. Essaies en remplaçant la ligne 4 du script par ceci:

          FD=`lsof -p $PID | grep /tmp/Flash | awk '{print $4}' | sed 's/[a-z]$//'`
          
          • vince says:

            ÇA MARCHE !!! BRAVO ET MERCI BEAUCOUP !

            (remarque : j’ai essayé avec midori et conkeror (le emacs-like) et ça n’a pas marché)

Leave a Reply

Please log in using one of these methods to post your comment:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

Follow

Get every new post delivered to your Inbox.

%d bloggers like this: