Hallo,
auch du darfst den Artikel korrigieren. ☺
Gruß, noisefloor
Anmeldungsdatum: Beiträge: 29567 |
Hallo, auch du darfst den Artikel korrigieren. ☺ Gruß, noisefloor |
||
Wikiteam
![]() Anmeldungsdatum: Beiträge: 11335 Wohnort: Bremen |
Hi! habe jetzt noch ein wenig an dem Skript herumgebastelt, sodass ich jetzt eine Version hinbekommen habe, die die Aufnahme über MPlayer als .TS-Datei abspeichert. Damit kommt es nicht mehr (wie anscheinend bei etlichen TV-Karten der Fall) zu asynchronem Ton. Hier die derzeitige Version:
Auch hier gilt: Der Speicherort kann bei Filename natürlich den eigenen Bedürfnissen angepasst werden; die Startzeit für die "Sofort-Aufnahme" habe ich um 30 Sekunden verzögert, damit genügend Zeit bleibt, das Ende anzugeben - sonst kommt es ggf. zu Meldungen, dass cron-Jobs in der Vergangenheit nicht angenommen werden können, oder die Ausführung des Jobs wird gleich auf den nächsten Tag verschoben... Vielleicht geht das aber noch etwas eleganter? Leider ist "zeitversetztes" Fernsehen mit MPlayer nicht (oder nur solange die Aufnahme noch läuft) möglich,spätestens mit dem Ausführen des "killall $MCD"-Befehls ist erstmal Schluss. Ich habe es nicht hinbekommen, die Routine mit der Dauer der Aufnahme wie im "Original"-Skript zu regeln; ggf. geht das nur mit Mencoder (da bin ich noch nicht firm drin...Weiß jemand, wie auch mit Mplayer hinhauen könnte?). Das führt auch dazu, dass jetzt zwei "jobs" pro Aufnahme in der atq-Ausgabe auftauchen; der erste für den Aufnahme-Start, der zweite für den Zeitpunkt der "killall-$MCD"-Befehls. Auch die Berechnung der Anzahl der Frames fällt flach, aber das ist vielleicht zu verschmerzen. Wenn man z.B. gxine oder Kaffeine verwenden, kann man die entstehende Datei gleichzeitig "zeitversetzt" anschauen; leider hab' ich aber immer wieder Probleme mit xine-basierten Anwendungen. VLC erkennt leider das Format nicht (oder ich bin noch nicht dahinter, wie das funktioniert - jedenfalls werden die .TS-Dateien zwar aufgerufen, aber nicht abgespielt; Totem kann das Format - trotz extra installiertem MPEG2-Demuxer-plugin auch nicht erkennen.) Ich weiß nicht, was passiert, wenn der Endpunkt für frühmorgens am nächsten Tag angegeben wird, werde das bei Zeiten mal austesten. Aber immerhin verschwindet der Bild-Ton-Zeit-Versatz ohne das Ganze weiterverarbeiten zu müssen, und die Bedienung ist etwas komfortabler als mit der im Artikel bisher aufgeführten Alternative. Ich verlinke das Skript erstmal bei der Alternative; ggf. kann es aber auch in den Artikel selbst aufgenommen werden. Rückmeldungen, Tests, Verbesserungsvorschläge etc. herzlich willkommen! so long EDIT: Es funktioniert auch, die Aufnahme erst am "nächsten Tag" enden zu lassen; hab's gerade noch ausprobiert! |
||
Wikiteam
![]() Anmeldungsdatum: Beiträge: 11335 Wohnort: Bremen |
Hi! Habe noch etwas weiter gebastelt: Jetzt fragt das Skript explizit das Datum des Aufnahmeendes ab, denn sonst klappt zwar eine Aufnahme, die in den nächsten Tag reicht, aber eine zeitgesteuerte Aufnahme, die für späteren Zeitpunkt angegeben wird, würde mit der vorherigen Version nicht beendet werden: Der Im letzten Info-Fenster werden jetzt sowohl Zeitpunkt des Aufnahme-Starts als auch des Endes mit jeweils dazugehöriger jobnr. ausgegeben; ich habe noch einen Hinweis auf die Überprüfbarkeit mit Um "Timeshift" mit Mplayer hinzubekommen, hab' ich einen kleinen Trick verwendet: Das Skript verwendet jetzt eine "Kopie" von MPlayer; es ruft /usr/bin/tvmplayer auf. Dieses Programm muss natürlich erst erstellt werden, indem man /usr/bin/mplayer kopiert und als /usr/bin/tvmplayer wieder abspeichert... Damit wird bei Beenden der Aufnahme nicht MPlayer gekillt, sondern nur tvmplayer, und MPlayer kann ungestört weiter laufen - noch komfortabler ist zur Wiedergabe der SMPlayer, der "merkt" sich nämlich auch noch, wo man ggf. stoppt, und fängt bei Neustart an der Stelle wieder an, wo man aufgehört hat zu schauen (greift allerdings auch auf /usr/bin/mplayer zurück, deshalb auch da der "Umweg" mit dem tvmplayer). Die Dateien werden standardmäßig in /home/"user"/Videos/ abgelegt; das kann natürlich auch angepasst werden; gleich in der 5. Zeile das gewünschte Verzeichnis angeben.
Schön wäre natürlich, wenn für die zeitgesteuerte Aufnahme auch für spätere Tage gleich der "richtige" Kalendereintrag verwendet würde, damit könnte die Abfrage des Aufnahme-Ende-Datums wegfallen; vielleicht finde ich ja auch noch irgendwie heraus, ob und wie das geht... so long |
||
Anmeldungsdatum: Beiträge: 1050 |
Mal naiv gefragt...Kann man die Kennung (Screenshot) nicht auslesen und somit mehrere Instanzen laufen lassen und unterschiedlich beenden? |
||
Wikiteam
![]() Anmeldungsdatum: Beiträge: 11335 Wohnort: Bremen |
Hi! Keine Ahnung... theoretisch vielleicht schon, und dann könnte der "kill"-Befehl sich nur auf die ensprechende Instanz beziehen, darauf willst du hinaus, oder? Eine Instanz zum Aufnehmen, eine zum Anschauen, deswegen ja der Umweg über "verschiedene" Player. Aber wie das geht, da bin ich zumindest überfragt... (das Skript hab' ich auch nur "übernommen", und im "Try-and-error"-Verfahren an meine Bedürfnisse angepasst...) so long |
||
Anmeldungsdatum: Beiträge: 1050 |
Ja! Ich werde mich auch mal schlau machen, das werden wir schon raus bekommen, wie das funktioniert,.. wenn es denn funktioniert. ☺ |
||
Anmeldungsdatum: Beiträge: 1050 |
Habe schon mal was gefunden Schau mal hier 8.5.1 Einen Prozess killen/beenden Verwenden Sie kill zum Killen eines Prozesses mittels der Prozess-ID-Nummer |
||
Wikiteam
![]() Anmeldungsdatum: Beiträge: 11335 Wohnort: Bremen |
Hi! Naja, soweit wär ich wohl auch schon... Nur wie bringe ich dem Skript bei, die Prozess-ID des "richtigen" Mplayers auszulesen? Ihn dann per "kill pid xxxx" zu beenden zu lassen, dürfte weniger schwierig sein 😉 so long |
||
Anmeldungsdatum: Beiträge: 1050 |
Na toll und ich suche das halbe Web ab ☺
Wenn es irgendwo beschrieben steht, dann werden wir es auch finden. |
||
Anmeldungsdatum: Beiträge: 29567 |
Hallo,
Das dürfte sehr sehr schwierig sein - denke ich. Beim Suchen sollte ihr IMHO etwas abstrakter vorgehen - es soll ein einzelnes Fenster (=Instanz eines Progs mit eigener ID) beendet werden, richtig? Dabei ist es ja egal, ob es der MPlayer, der Firefox oder sonst wer ist. Manuell sollte es gehen. In dem man jedes Mal, wenn man eine neue Instanz startet z.B. via Gruß, noisefloor |
||
Wikiteam
![]() Anmeldungsdatum: Beiträge: 11335 Wohnort: Bremen |
Hi! Ja, deswegen hab' ich ja auch den weg über den "fake"-mplayer gewählt; da brauch ich keine extra pid, killall reicht 😉 Aber theoretisch müsste es ja möglich sein, beim Start der Aufnahme gleich die Prozessnr. des Players mit abzugreifen, um ihn dann im Kill-Befehl zu verwenden (naja, theoretisch, nur wie in der Praxis umsetzen? Direkt ins script eine pid-Abfrage mit einbauen, und den höchsten Wert der auftaucht, speichert... geht aber nur, wenn das tatsächlich die höchste pid-Nr wäre...) Der Weg über so long |
||
Anmeldungsdatum: Beiträge: 29567 |
Hallo, da war doch was... → Shell/Prozesssteuerung. Könnte mit dem Befehl Gruß, noisefloor |
||
Wikiteam
![]() Anmeldungsdatum: Beiträge: 11335 Wohnort: Bremen |
Hi! Ja, hab' ich eben auch ausprobiert, aber bei laufender Aufnahme wird mir der Job nicht angezeigt, warum auch immer...- ansonsten wär' das ein Ansatz. so long EDIT Alternative: ps aux | grep tvmplayer heinrich 14575 0.7 0.6 51124 6728 ? SN 19:51 0:01 /usr/bin/tvmplayer dvb://DasErste -dumpstream -dumpfile //home/heinrich/Videos/DasErste-05.05.2009-19.51-19.57.TS heinrich 14590 0.0 0.0 3344 808 pts/7 S+ 19:54 0:00 grep tvmplayer Nur hab' ich damit ggf. bei zwei tvmplayern (oder welchem programm auch immer) auch zwei Ausgaben, und je nach dem, welchen ich zuerst gestartet hab, (den abspielenden oder den aufnehmenden) hab ich eine höhere oder niedrigere pid, die ich killen muss, wenn der aufnehmende ausgestellt werden soll. (der zweite Prozess in diesem Beispiel ist die Suche nach dem tvmplayer...) |
||
Anmeldungsdatum: Beiträge: 17 |
Hallo, es ist zwar schon einige Zeit vergangen, aber ich würde den kill-Befehl nach Ende der Aufnahme einfach durch einen sleep-Befehl anschieben. Damit wäre dann auch das Problem bei Aufnahmen, die über die 00:00 Uhr - Grenze hinweggehen gelöst. Hier der entsprechende Code-Ausschnitt: # AUFNAHME STARTEN while ! [ -f "$DATA_PATH/$NAME $DATE.ts" ] do $TVREC dvb://"$SENDER" -dumpstream -dumpfile "$DATA_PATH/$NAME $DATE.ts" & $ECHO 'Start der TV-Aufnahme von '$Name'' $SLEEP 3 done # AUFNAHME BEENDEN $SLEEP $DAUER $KILL $TVREC Die Dauer muss allerdings in Sekunden angegeben werden (oder man muss min in s umrechnen 😉). Ansonsten @ Heinrich Schwietering: Vielen Dank für das tolle Skript |
||
Wikiteam
![]() Anmeldungsdatum: Beiträge: 11335 Wohnort: Bremen |
Hi! Danke für den Hinweis! Die Dauer in Sekunden umzurechnen müsste eigentlich auch "automatisierbar" sein; im "ersten" Skript ist das ganz gut gelöst. Leider kann ich es momentan nicht umsetzen, da meine TV-Karte letzte Woche den Geist aufgegeben hat, und ich noch keinen Ersatz habe. Aber: Kommt Zeit, kommt Karte, kommt Versuch der Umsetzung... so long |