ubuntuusers.de

Video-Puffer (flash) aus "deleted" extrahieren und speichern

Status: Ungelöst | Ubuntu-Version: Ubuntu 11.04 (Natty Narwhal)
Antworten |

Acer54

Avatar von Acer54

Anmeldungsdatum:
6. Juli 2011

Beiträge: 700

Wohnort: Bayern

Hallo liebes Forum,

auch auf die Gefahr hin, dass soetwas schon 100x da war und es bestimmt auch galantere Lösungen gibt, wollte ich nichts desto trotz mal mein (selbstgeschriebenes 🤓 ) Script zu einem Thema posten, an dem ich selbst mehrere Stunden unter Schweiß und Tränen gerungen habe. 😢

Hier die (meine) Lösung auf folgende Frage:

Wie kann ich flash-Videos aus div. Quellen, schnell und einfach als (z.B.) FLV Datei lokal speichern ?

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
#! /bin/bash
###########################################################################################
#################################Get_FLV###################################################
###########################################################################################
#########################         Acer54       ############################################
###########################################################################################

# Variablen erstellen

MELDUNG="FLV Dateien speichern by Acer54 (C) "			#Startmeldung
PRID=									#ProzessID
PD=									#Video Nummer
ZIEL="Arbeitsfläche"							#Zielordner
############################################################################################
echo $MELDUNG								#Programmstart durch Ausgabe bestätigen
############################################################################################
PRID=$(ps x | grep ? | grep flashplugin-installer | cut -b 1-5)		# Initiale Abfrage PRID

echo ProzessID ist $PRID						#Ausgabe der PRID zum debuggen

############################################################################################
if [ $PRID -lt 10000 ] ; then						#Wenn PRID 4stellig ist dann
	
	echo "die PRID ist 4stellig"

	#ProzessID abfragen (4 Stellig)
	PRID=$(ps x | grep ? | grep flashplugin-installer | cut -b 2-5)  # Ausgabe von ps x in variable schreiben
	#echo ProzessID ist $PRID

	#Video Nummer abfragen (2 Stellig)
	PD=$(ls -l /proc/$PRID/fd | grep deleted | cut -b 52-53)    	# ProzessID2 abfragen
	
	if [ $PD -gt 9 ] ; then	
		echo Temporäre Datei ist $PD

								#Video anhand der PRID und der Videonummer speichern
		cp /proc/$PRID/fd/$PD ~/$ZIEL
		
		play /usr/share/sounds/ubuntu/stereo/service-login.ogg
		clear		
		echo "Datei wurde nach $ZIEL exportiert"
		read -t 2 DUMMY	
	else
		
		play /usr/share/sounds/ubuntu/stereo/service-logout.ogg
		clear
		echo "Keine Videodatei im Puffer gefunden"
		read -t 2 DUMMY
	fi
#############################################################################################
elif [ $PRID -gt 10000 ] ; then 					#wenn PRID 5stellig

	echo "die PRID ist 5stellig"

	#ProzessID abfragen (5 Stellig)
	PRID=$(ps x | grep ? | grep flashplugin-installer | cut -b 1-5)  # Ausgabe von ps x in variable schreiben
	#echo ProzessID ist $PRID

	#Video Nummer abfragen (2 Stellig)
	PD=$(ls -l /proc/$PRID/fd | grep deleted | cut -b 52-53)    	# ProzessID2 abfragen
	
	if [ $PD -gt 9 ] ; then	
		echo Temporäre Datei ist $PD

							#Video anhand der PRID und der Videonummer speichern
		cp /proc/$PRID/fd/$PD ~/$ZIEL
		
		play /usr/share/sounds/ubuntu/stereo/service-login.ogg
		clear		
		echo "Datei wurde nach $ZIEL exportiert"
		read -t 2 DUMMY
	else
	
		
		play /usr/share/sounds/ubuntu/stereo/service-logout.ogg
		clear 
		echo "Keine Videodatei im Puffer gefunden"
		read -t 2 DUMMY
	fi
#############################################################################################
else
	play /usr/share/sounds/ubuntu/stereo/service-logout.ogg		# Wenn PRID 0000 ist ABBRUCH mit Fail-sound
	clear	
	echo "keine gültige ProzessID gefunden"
	read -t 2 DUMMY
	exit


fi

Anleitung:

* o.g. Code in eine leere Textdatei speichern und z.B. unter ~/ ablegen.
* die erstellte Textdatei über "Rechtsklick, Eigenschaften, Zugriffsrechte" als "Ausführbar" markieren.
* z.B. einen "Starter" am Desktop anlegen bei dem man als "Befehl" den Pfad zum Ort angibt wo das Script liegt...

Das wars auch schon...

Ab jetzt kann man folgendes tun:

- Egal ob auf youtube oder irgend einer anderen Quelle, bei der in flash-video abgespielt wird
- Warten bis das Video komplett "geladen" wurde... d.h. solange bis der (meist) dunkelgraue Streifen in der Laufzeitanzeige komplett bis zum Schluss gelaufen ist.
- den o.a. "Starter" ausführen (bzw. das Script, für Terminal-Freaks) ... und siehe da, es wird eine Datei (meist mit dem Namen "22" oder "17") auf dem Desktop angelegt.
- diese FLV kann nun mit (z.B.) ffmpeg bzw. WinFF (grafische Oberfläche für ffmpeg in den Packetquellen) beliebig konvertiert werden (z.B. in MP3 oder MPG4... oder was ihr wollt)

Ich hatte bis jetzt noch keine Fehlfunktion dieses Scriptes...es funktioniert mit Chromium genauso wie mit Firefox... es kann nur sein, dass ihr evtl. die Variable "ZIEL" (Zeile 13) anpassen müsst...(z.B. wenn Ihr keine "Arbeitsfläche" sondern einen "Desktop" habt ☺ ) Ansonsten sollte es quasi ootB funktionieren. Getestet (und sinnig) ist es nur unter 11.04, da hier der Video-puffer des flashplugins bereits wärend des herunterladens als "deleted" deklariert ist und daher nicht mehr "händisch" aus dem Ordner gezogen werden kann.

Viel Spass beim um-coden, drüber lächeln oder wieder löschen 😈

PS.: ist natürlich mein aller erster Versuch etwas "Programmähnliches" auf die Beine zu stellen... bin quasi totaler noob. Also nicht schimpfen wenn es recht "dreckig" geschrieben scheint. Ich lern ja noch 😉

noisefloor Team-Icon

Anmeldungsdatum:
6. Juni 2006

Beiträge: 29567

Hallo,

zum dem Thema gibt es einen Wikiartikel: Versteckte Flashdateien speichern.

Gruß, noisefloor

Acer54

(Themenstarter)
Avatar von Acer54

Anmeldungsdatum:
6. Juli 2011

Beiträge: 700

Wohnort: Bayern

Hallo Noisefloor,

danke für den Hinweis 😀

Das "Problem" für den Ubuntu Neuling ist hier glaube ich die starke Terminallastigkeit.
Man muss erst einmal die ProzessID ausfindigmachen und dann die Datei eben händisch kopieren.

Meine Vorgehensweise war vorher immer diese:

ps x | grep firefox 

4stellige Zahlencombi von "plugincontainer" merken

cd /proc/zweite_Prozess_ID/fd/ && ls -l | grep deleted 

ID des Videos merken (2stellig)

cp XX $HOME 

Video kopieren ...

Mein Problem (und vll auch das von anderen Neueinsteigern/Umsteigern) wird sein sich die Befehlfolge nicht merken zu können.

Das Script oben basiert übrigens größtenteils auf diesem Wiki-Artikel 👍

Vll. kann das Script ja dennoch für den einen oder anderen von Nutzen sein...

track

Avatar von track

Anmeldungsdatum:
26. Juni 2008

Beiträge: 7174

Wohnort: Wolfen (S-A)

Ok, jetzt weiß ich auch, warum ich unter /tmp/* die Flash-Filmchen nicht mehr finde ...

Das ganze habe ich jetzt mal etwas zusammengefasst, und mir einen Starter mit Video-Player auf die Startleiste gelegt, mit dem ich ohne den blöden Adobe-Overhead einen Flash-Film abspielen kann:

  1. Kopiere den Starter des [Anwendungen] - Multimedia - "Video-Player" per Rechtsklick "Als Starter zum Panel hinzufügen"

  2. Ändere in dem neuen Starter unter "Eigenschaften" den Namen in "Flash-Player" und den Kommentar in "spielt den aktuellen Flash-Film ab"

  3. Ändere dort den "Befehl" in

    bash -c "totem $(ls -l /proc/$(ps x | awk '/libflashplayer.so\ /{print $1}')/fd/* | awk '/\/tmp\/Flash/{print $8}')"

Dann wertet der Starter brav wie im Wiki die Einträge unter /proc/* aus und startet den totem-Player mit dem aktuellen Flash-Film als Parameter.

So eine Befehlszeile bietet sich natürlich auch als Ausgangspunkt für andere Funktionen in einem Starter an.

LG,

track

Edit:
Acer54: diese Zeile enthält auch die Kompaktfassung von dem, was du in Deinem Skript machst.

Acer54

(Themenstarter)
Avatar von Acer54

Anmeldungsdatum:
6. Juli 2011

Beiträge: 700

Wohnort: Bayern

Super !

Funktioniert soweit... kann man die Videos mit totem anschließend auch irgendwie abspeichern ?

track

Avatar von track

Anmeldungsdatum:
26. Juni 2008

Beiträge: 7174

Wohnort: Wolfen (S-A)

Keine Ahnung, ich glaube nicht. (jedenfalls finde ich im Menü nichts derartiges)

Aber Du kannst Dir ja einen 2. Starter machen, der das Ding abspeichert. Den drückst Du wenn Dir der Film gefällt, und er ist gerettet.

Allerdings empfehle ich Dir bei dem cp- Befehl den Parameter --backup=numbered. (siehe → man cp)
Dann werden alte Dateien nicht überschrieben, sondern als numerierte Backups festgehalten: datei.~1~ , datei.~2~ , datei.~3~ ...
z.B. so:

bash -c "cp --backup=numbered  $(ls -l /proc/$(ps x | awk '/libflashplayer.so\ /{print $1}')/fd/* | awk '/\/tmp\/Flash/{print $8}')  ~/Download/film.flv"

track

Antworten |