[patch] abgebrochene Aufnahmen: Filenamen "wiederverwen

Das Original Benutzerinterface Neutrino-SD incl. zapit, sectionsd, yWeb etc...
seife
Developer
Beiträge: 4189
Registriert: Sonntag 2. November 2003, 12:36

[patch] abgebrochene Aufnahmen: Filenamen "wiederverwen

Beitrag von seife »

Mich stört, daß wenn aus irgendeinem Grund die Aufnahme abgebrochen wird (Netz zu langsam...), der dann aktuelle Sendungsname aus dem EPG verwendet wird.
Das ist besonders doof, wenn die Aufnahme beim Hochfahren der Platte abbricht, bevor die Sendung angefangen hat, so daß dann der Name der vorherigen Sendung verwandt wird.

Vielleicht hilft's ja jemand: neutrino-reuse-filename-on-aborted-recordings.diff
(Achtung, noch mit Debugausgaben etc...)

Das sieht dann so aus:

Code: Alles auswählen

server:/space2/capture/dbox # l *2007-12-26*
-rw-r--r-- 1 nobody nogroup  6670052 2007-12-26 15:47 ZDF_Alaska_2007-12-26_154651.001.ts
-rw-r--r-- 1 nobody nogroup 17985396 2007-12-26 15:47 ZDF_Alaska_2007-12-26_154651.002.ts
-rw-r--r-- 1 nobody nogroup     1501 2007-12-26 15:47 ZDF_Alaska_2007-12-26_154651.xml
XML-File wird nur eines erzeugt.
seife
Developer
Beiträge: 4189
Registriert: Sonntag 2. November 2003, 12:36

Beitrag von seife »

Und weil's so schön war:
neutrino-movieplayer-autoselect-next-file.diff
Selektiert dann automatisch alle Teile in eine Playlist, wenn der Erste Teil ausgewählt wird.

Also: wenn folgendes vorhanden ist:

Code: Alles auswählen

ZDF_Alaska_2007-12-26_154651.001.ts
ZDF_Alaska_2007-12-26_154651.002.ts
ZDF_Alaska_2007-12-26_154651.003.ts
und ...1.001.ts selektiert wird, werden alle 3 in eine Playlist getan, wenn .002.ts selektiert wird, werden 002.ts und 003.ts in die Playlist getan.
Achtung: der Dateiname vor dem ".001.ts" muß exakt gleich sein, alte mehrteilige Aufnahmen werden also nicht funktionieren.
Z80
Erleuchteter
Erleuchteter
Beiträge: 710
Registriert: Dienstag 3. September 2002, 12:54

Beitrag von Z80 »

coole Sache. Danke! :D
Einchecken? 8)
seife
Developer
Beiträge: 4189
Registriert: Sonntag 2. November 2003, 12:36

Beitrag von seife »

Von mir aus gern. Es ist aber eine Änderung im Verhalten, und da würde ich noch auf eine dritte Meinung warten :-).
Nicht, daß es, wie es bisher war meiner Meinung nach besser wäre, aber evtl. gibt es ja Tools, die sich drauf verlassen, daß das so ist.

Ein zusätzliches "Goodie" ist übrigens, daß man dann beim Aufnahmestart den sectionsd killen kann, da man ihn nicht dazu benötigt, bei einer evtl. abbrechenden Aufnahme das EPG zu liefern. Ich habe da auch noch einen Patch, der das einfacher und komfortabler macht... :-)
dbt
Administrator
Beiträge: 2675
Registriert: Donnerstag 28. September 2006, 19:18

Beitrag von dbt »

Weil ich grad dabei war, hab ich ein paar Images mit CVS 28.12.07 und dem Patch gebacken. So wie ich das gesehen habe, funktioniert das auch.:wink:
NovaTux_v2.2.6.99_1x.img
NovaTux_v2.2.6.99_2x.img
als Update (auch online):
NovaTux_v2.2.6.99_root.squashfs
@seife wenn Du den anderen Patch auch mal testen lassen willst, kannst du ihn ja mal posten. Hätte grad mal Zeit :wink:
edit:
Linkupdate wegen Update für nfs-utils1.1.1 Fix !
Zuletzt geändert von dbt am Freitag 28. Dezember 2007, 19:53, insgesamt 1-mal geändert.
seife
Developer
Beiträge: 4189
Registriert: Sonntag 2. November 2003, 12:36

Beitrag von seife »

Der ist aber eklig.
Was man dann bekommt ist ein

Code: Alles auswählen

sectionsdcontrol --restart
Was den sectionsd neu starten läßt (memleaks worked around :-), und zwar im "paused" modus. Das würde ich bei Beginn der Aufnahme machen, und dann nach ende der Aufnahme einfach ein "sectionsdcontrol --nopause", so daß er wieder weiterläuft.
Im Endstadium natürlich ohne "sectionsdcontrol", sondern direkt im Neutrino mit drin, aber ich denke, die Idee wird klar.

Eigentlich sollte man aber die leaks im sectionsd fixen... Dazu bin ich aber zu doof / bzw. nicht C++-affin genug.

Ich schau mal, ob ich den aus meinen anderen sectionsd-Änderungen rausgelöst bekomme.
dbt
Administrator
Beiträge: 2675
Registriert: Donnerstag 28. September 2006, 19:18

Beitrag von dbt »

Nur keine Hektik, lass den erst mal sacken! :wink:
seife
Developer
Beiträge: 4189
Registriert: Sonntag 2. November 2003, 12:36

Beitrag von seife »

sectionsd-restart-paused.diff
Ist nicht schön :-)
mb405
Tuxboxer
Tuxboxer
Beiträge: 2331
Registriert: Donnerstag 24. März 2005, 21:52

Beitrag von mb405 »

funktioniert auch das cutten der aufnahmen bei einstellbarer größe wieder ?
das funktioniert nähmlich schon lange nicht mehr :(
immer am cutpunkt kommt ne meldung, das die aufnahme abgebrochen wurde, dann wird zwar ne neue datei erstellt 002 aber er macht ne komplett neue aufnahme.
-rw-r--r-- 1 root root 10486452 Jan 1 10:47 DISNEY_CHANNEL_Wickie_und_die_starken_M_nner_2008-01-01_104621.001.ts
-rw-r--r-- 1 root root 0 Jan 1 10:47 DISNEY_CHANNEL_Wickie_und_die_starken_M_nner_2008-01-01_104621.002.ts
-rw-r--r-- 1 root root 1444 Jan 1 10:46 DISNEY_CHANNEL_Wickie_und_die_starken_M_nner_2008-01-01_104621.xml
-rw-r--r-- 1 root root 10486452 Jan 1 10:49 DDISNEY_CHANNEL_Wickie_und_die_starken_M_nner_2008-01-01_104803.001.ts
-rw-r--r-- 1 root root 0 Jan 1 10:48 DISNEY_CHANNEL_Wickie_und_die_starken_M_nner_2008-01-01_104803.002.ts
-rw-r--r-- 1 root root 956 Jan 1 10:48 DISNEY_CHANNEL_Wickie_und_die_starken_M_nner_2008-01-01_104803.xml
ich hab mal cut auf 10MB eingestellt. probier einfach mal.
vcrcontrol und stream2file sind cvs original.
seife
Developer
Beiträge: 4189
Registriert: Sonntag 2. November 2003, 12:36

Beitrag von seife »

Das wird vermutlich als "Nebenwirkung" dann wieder funktionieren. Nicht absichtlich, aber trotzdem :-)

Edit: funktioniert:

Code: Alles auswählen

start_recording: myfilename '/tmp/autofs/record/Test-R__2008-01-01_124023' filename '/tmp/autofs/record/Test-R__2008-01-01_124023'
nfs warning: mount version older than kernel
[stream2file]: using 20 ringbuffers
STREAM2FILE DMXTHREAD
[stream2file] filename: '/tmp/autofs/record/Test-R__2008-01-01_124023.001.ts' myfilename: '/tmp/autofs/record/Test-R__2008-01-01_124023'
[stream2file] filename: '/tmp/autofs/record/Test-R__2008-01-01_124023.002.ts' myfilename: '/tmp/autofs/record/Test-R__2008-01-01_124023'
[stream2file] filename: '/tmp/autofs/record/Test-R__2008-01-01_124023.003.ts' myfilename: '/tmp/autofs/record/Test-R__2008-01-01_124023'
[stream2file] filename: '/tmp/autofs/record/Test-R__2008-01-01_124023.004.ts' myfilename: '/tmp/autofs/record/Test-R__2008-01-01_124023'
[stream2file] filename: '/tmp/autofs/record/Test-R__2008-01-01_124023.005.ts' myfilename: '/tmp/autofs/record/Test-R__2008-01-01_124023'
[stream2file] filename: '/tmp/autofs/record/Test-R__2008-01-01_124023.006.ts' myfilename: '/tmp/autofs/record/Test-R__2008-01-01_124023'
Und das ganz ohne Meldungen über abgebrochene Aufnahmen etc.
mb405
Tuxboxer
Tuxboxer
Beiträge: 2331
Registriert: Donnerstag 24. März 2005, 21:52

Beitrag von mb405 »

nee leider nicht :( hab mal auf 5 mb eingestellt den split.
-rw-r--r-- 1 root root 5243508 Jan 1 13:29 RTL_Television_Twins_-_Zwillinge_2008-01-01_132901.001.ts
-rw-r--r-- 1 root root 0 Jan 1 13:29 RTL_Television_Twins_-_Zwillinge_2008-01-01_132901.002.ts
-rw-r--r-- 1 root root 5243508 Jan 1 13:29 RTL_Television_Twins_-_Zwillinge_2008-01-01_132901.003.ts
-rw-r--r-- 1 root root 0 Jan 1 13:29 RTL_Television_Twins_-_Zwillinge_2008-01-01_132901.004.ts
-rw-r--r-- 1 root root 5243508 Jan 1 13:30 RTL_Television_Twins_-_Zwillinge_2008-01-01_132901.005.ts
-rw-r--r-- 1 root root 0 Jan 1 13:30 RTL_Television_Twins_-_Zwillinge_2008-01-01_132901.006.ts
-rw-r--r-- 1 root root 5243508 Jan 1 13:30 RTL_Television_Twins_-_Zwillinge_2008-01-01_132901.007.ts
-rw-r--r-- 1 root root 0 Jan 1 13:30 RTL_Television_Twins_-_Zwillinge_2008-01-01_132901.008.ts
-rw-r--r-- 1 root root 5243508 Jan 1 13:30 RTL_Television_Twins_-_Zwillinge_2008-01-01_132901.009.ts
-rw-r--r-- 1 root root 0 Jan 1 13:30 RTL_Television_Twins_-_Zwillinge_2008-01-01_132901.010.ts
-rw-r--r-- 1 root root 5243508 Jan 1 13:31 RTL_Television_Twins_-_Zwillinge_2008-01-01_132901.011.ts
-rw-r--r-- 1 root root 0 Jan 1 13:31 RTL_Television_Twins_-_Zwillinge_2008-01-01_132901.012.ts
-rw-r--r-- 1 root root 5243508 Jan 1 13:31 RTL_Television_Twins_-_Zwillinge_2008-01-01_132901.013.ts
-rw-r--r-- 1 root root 0 Jan 1 13:31 RTL_Television_Twins_-_Zwillinge_2008-01-01_132901.014.ts
-rw-r--r-- 1 root root 5243508 Jan 1 13:32 RTL_Television_Twins_-_Zwillinge_2008-01-01_132901.015.ts
-rw-r--r-- 1 root root 1224 Jan 1 13:29 RTL_Television_Twins_-_Zwillinge_2008-01-01_132901.xml
es kommt ne meldung das es einen fehler beim schreiben der daten gab.
CNeutrinoApp::doGuiRecord filename == NULL
Record channel_id: 44100012ee3 epg: 44100012ee300cf, apids 0x0 mode 1
fsk:0, Genre:20, Dauer: 115
start_recording: myfilename '/hdd/RTL_Television_Junior_2008-01-01_134431' filename '/hdd/RTL_Television_Junior_2008-01-01_134431'
[stream2file]: using 50 ringbuffers
Ringbuffers 50
STREAM2FILE DMXTHREAD
[stream2file] filename: '/hdd/RTL_Television_Junior_2008-01-01_134431.001.ts' myfilename: '/hdd/RTL_Television_Junior_2008-01-01_134431'
[neutrino] neutrino - recordmode on
[neutrino] doing channelsInit4Record
PANIC: not enough space in ringbuffer, available 17719, needed 118393
before pthread_join
[stream2file] filename: '/hdd/RTL_Television_Junior_2008-01-01_134431.002.ts' myfilename: '/hdd/RTL_Television_Junior_2008-01-01_134431'
[stream2file]: error in write: Bad file descriptor
after pthread_join
[stream2file]: pthreads exit code: -3, dir: '/hdd', filename: 'RTL_Television_Junior_2008-01-01_134431' myfilename: '/hdd'
CNeutrinoApp::doGuiRecord: filename == 'RTL_Television_Junior_2008-01-01_134431'
XXXXXX filename: RTL_Television_Junior_2008-01-01_134431
Record channel_id: 44100012ee3 epg: 0, apids 0x0 mode 1
start_recording: myfilename '/hdd/RTL_Television_Junior_2008-01-01_134431' filename '/hdd/RTL_Television_Junior_2008-01-01_134431'
[stream2file] INFO: /hdd/RTL_Television_Junior_2008-01-01_134431.xml already exists, not overwriting
[stream2file]: using 50 ringbuffers
Ringbuffers 50
[neutrino] neutrino - recordmode on
STREAM2FILE DMXTHREAD
[neutrino] doing channelsInit4Record
[stream2file] filename: '/hdd/RTL_Television_Junior_2008-01-01_134431.001.ts' myfilename: '/hdd/RTL_Television_Junior_2008-01-01_134431'
[stream2file] /hdd/RTL_Television_Junior_2008-01-01_134431.001.ts exists, retrying...
[stream2file] filename: '/hdd/RTL_Television_Junior_2008-01-01_134431.002.ts' myfilename: '/hdd/RTL_Television_Junior_2008-01-01_134431'
[stream2file] /hdd/RTL_Television_Junior_2008-01-01_134431.002.ts exists, retrying...
[stream2file] filename: '/hdd/RTL_Television_Junior_2008-01-01_134431.003.ts' myfilename: '/hdd/RTL_Television_Junior_2008-01-01_134431'
CNeutrinoApp::doGuiRecord filename == NULL
Stop
record time: 6
[mi] saveXml: /hdd/RTL_Television_Junior_2008-01-01_134431.xml
before pthread_join
after pthread_join
[stream2file]: pthreads exit code: 1, dir: '/hdd', filename: 'RTL_Television_Junior_2008-01-01_134431' myfilename: '/hdd'
[neutrino] executing /var/tuxbox/config/recording.end
[neutrino] neutrino - recordmode off
[neutrino] doing channelsInit
seife
Developer
Beiträge: 4189
Registriert: Sonntag 2. November 2003, 12:36

Beitrag von seife »

Das liegt dann daran, daß die dream schneller schreibt und / oder am anderen threading im 2.6er kernel.
mb405
Tuxboxer
Tuxboxer
Beiträge: 2331
Registriert: Donnerstag 24. März 2005, 21:52

Beitrag von mb405 »

naja nich so schlimm lösch ich eben immer die 0 dateien.
beim abbruch gehts ja einwandrei, und er schreibt auch richtig.
mit der splitsize blich ich eh nicht durch im code.
da wird splitsize zu remfile und remfile mit readsize verglichen. da geht bei mir die übersicht verloren :(

irgendwie muss der fehler in der funktion void * FileThread(void * v_arg) liegen in dem abschnitt

Code: Alles auswählen

// Do Splitting if necessary
			if (remfile == 0)
			{
				char filename[FILENAMEBUFFERSIZE];
retry:
				sprintf(filename, "%s.%3.3d.%s", myfilename, ++filecount, ((struct filenames_t *)v_arg)->extension);
printf("[stream2file] filename: '%s' myfilename: '%s'\n", filename, myfilename);
				if (fd2 != -1)
					close(fd2);
				if ((fd2 = open(filename, use_o_sync ? O_WRONLY | O_CREAT | O_EXCL | O_SYNC | O_TRUNC | O_LARGEFILE : O_WRONLY | O_CREAT | O_EXCL | O_TRUNC | O_LARGEFILE, S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH)) < 0)
				{
					if (errno == EEXIST) {
						printf("[stream2file] %s exists, retrying...\n", filename);
						goto retry;
					}
					perror("[stream2file]: error opening outfile");
					exit_flag = STREAM2FILE_STATUS_WRITE_OPEN_FAILURE;
					pthread_exit(NULL);
				}
				if( strstr(filename, ".ts") != NULL )
				{
					genpsi(fd2);
				}
				remfile = splitsize;
			}
es sollte ja keine fehlermeldung kommen, sondern der sollte nur einfah das file splitten
seife
Developer
Beiträge: 4189
Registriert: Sonntag 2. November 2003, 12:36

Beitrag von seife »

Nein. Bei dir dauert der Abbruch zu lange, dabei läuft der Puffer über. Zumindest verstehe ich das so.
mb405
Tuxboxer
Tuxboxer
Beiträge: 2331
Registriert: Donnerstag 24. März 2005, 21:52

Beitrag von mb405 »

also die beiden ersten diff's(ohne sectionsd) laufen sehr sauber(bis auf das splitproblem, was aber nicht an den diffs liegt).
datei bei abbruch wird sauber geschrieben, und movieplayer fasst die dann zu einer playliste zusammen.
[mp] start pos 0, 0 s Name: /hdd/RTL_CRIME_Magnum_2008-01-02_142730.001.ts
[mp] Startplay
[mp] PlayFileThread starts
[mp] auto-adding '/hdd/RTL_CRIME_Magnum_2008-01-02_142730.002.ts' to playlist
[mp] added /hdd/RTL_CRIME_Magnum_2008-01-02_142730.001.ts to playlist
[mp] added /hdd/RTL_CRIME_Magnum_2008-01-02_142730.002.ts to playlist
[mp] playlist with (2) entries generated
wenn jetzt bei solchen fällen im moviebrowser nur noch ein eintrag da wäre, dann wäre das perfekt(mit evtl. ner info, das es mehrere teile sind)
seife
Developer
Beiträge: 4189
Registriert: Sonntag 2. November 2003, 12:36

Beitrag von seife »

Aber ich _vermute_, daß die bookmarks nicht gehen werden.
Da ich das nicht benutze, ist mir das egal.... :-)
mb405
Tuxboxer
Tuxboxer
Beiträge: 2331
Registriert: Donnerstag 24. März 2005, 21:52

Re: [patch] abgebrochene Aufnahmen: Filenamen "wiederverwen

Beitrag von mb405 »

edit
ich dödel :dash: bin mit ok auf mein moviemount gegangen :) dann macht der natürlich ne playliste mit allen dateien :)

edit2
bookmarks gehen