audiorecorder version 0.1.0-pre6

  • so nachdem ich jetzt mal wieder zeit hatte wollte ich wieder den audiorecorder installieren...


    verwende eine mehr oder minder unveränderte slackware 11 (neuer mplayer,ffmpeg,lame,xvid usw)


    vdr 1.4.6 rennt wunderbar.. audiorecorder 1pre6 compiliert wunderbar.. beim start mit -p"audiorecorder -r /music/vdr" kommt folgendes:
    vdr: /usr/src/vdr/PLUGINS/lib/libvdr-audiorecorder.so.1.4.5: undefined symbol: av_realloc


    hat jemand eine ahnung wos da klemmt??


    hab versucht static zu linken... dann kompilierts nicht...


    73

  • Frankman


    mit ein wenig guesswork läuft es jetzt
    wenn ich das richtig habe dann kann man eine sender auswählen und die aufzeichnung läuft dann im vordergrund parallel zum live ton, nochmal ok und die aufnahme stoppt - ab hier komme ich nicht mehr mit back raus, ein menu aufruf beendet vdr
    danach den runcutter.sh


    > Und im plugin-Verzechnis dann ein gezieltes Make aufrufen


    hat bei mir kein passendes plugin erzeugt, habe aber einfach im vdr verz. ein make plugins abgesetzt, das hat funktioniert
    im cutter verzeichnis mußte ich "make cutter" aufrufen um ihn zu erzeugen



    die vom cutter erzeugten mp2 files lassen sich ansonsten ohne problme mit media player classic oder winamp unter windows abspielen (mplayer/mp3 plugin kanns natürlich auch)



    mir sind da noch ein paar dinge aufgefallen


    1. der mechanismus mit dem das conf file gelesen wird funktionier nicht - habe den pfad /etc/vdr/plugins fest in den qeullcode eingetragen
    außerdem wird beim plugin start ein verzeichnis im vdr-quell verzeichnis angelegt (meine vdr- und plugin-binaries werden von da benutzt) name des verzeichnisses ist (null)/plugins


    2. die permissions der vom cutter erzeugten verzeichnisse ist 4 0 0 0 0, müßte wohl sowas wie 4 0 7 7 1 sein


    3. fast immer ist am anfang etwa 2-3 sekunden zuviel, am ende sind meist 1-2 sekunden zuviel
    beim live hören ist zwischen den titeln immer ein ~1s pause die man deutlich erkenne kann, beim vom cutter erzeugten mp2 file ist die viel kürzer bzw garnicht vorhanden


    4. die informationen zu den mp2 files werden nur in verzeichnisnamen codiert, leider werden keine id3 tags gesetzt (u.a. liegt ja auch jahr und label vor, die gehen verloren)
    unter windows konnte ich dem mp2 manuell ein id3 tag verpassen - prizipiell geht das also



    aber man sieht deutlich das es geht, es fehlt nur noch ein wenig feinschliff - tolle arbeit, bleib dran!!!
    da bekommt man richtig lust mitzucoden - nur leider habe ich das letzt mal vor fast 20 jahren was in basic geschrieben (das bischen 8 bit assembler damals zum "patchen" zählt nicht als coden)

  • Zitat

    Original von IG88
    Frankman


    mit ein wenig guesswork läuft es jetzt
    wenn ich das richtig habe dann kann man eine sender auswählen und die aufzeichnung läuft dann im vordergrund parallel zum live ton, nochmal ok und die aufnahme stoppt - ab hier komme ich nicht mehr mit back raus, ein menu aufruf beendet vdr
    danach den runcutter.sh


    Eigentlich sollte das Menu mit OK geschlossen werden. Macht es aber noch nicht, obwohl ich osEnd zurückliefere?!?


    Zitat

    Original von IG88
    1. der mechanismus mit dem das conf file gelesen wird funktionier nicht - habe den pfad /etc/vdr/plugins fest in den qeullcode eingetragen
    außerdem wird beim plugin start ein verzeichnis im vdr-quell verzeichnis angelegt (meine vdr- und plugin-binaries werden von da benutzt) name des verzeichnisses ist (null)/plugins


    2. die permissions der vom cutter erzeugten verzeichnisse ist 4 0 0 0 0, müßte wohl sowas wie 4 0 7 7 1 sein


    Werde ich verfolgen. Das mit den (null)-Verzeichnissen war mir auch schon aufgefallen!


    Zitat

    Original von IG88
    3. fast immer ist am anfang etwa 2-3 sekunden zuviel, am ende sind meist 1-2 sekunden zuviel
    beim live hören ist zwischen den titeln immer ein ~1s pause die man deutlich erkenne kann, beim vom cutter erzeugten mp2 file ist die viel kürzer bzw garnicht vorhanden


    Hier bin ich mir noch nicht ganz im klaren, wie das gelöst werden kann.
    a) über einen Parametrisierung pro Sender (wenns immer gleich ist, warum nicht)
    b) sicherlich besser: Lückenerkennung im Umfeld der Schnittmarken. Dazu müsste der mp2-Datenstrom analysiert werden. Ich befürchte nur, dass man hier erheblich Erfahrungen sammeln muss, bis das klappt!


    Zitat

    Original von IG88
    4. die informationen zu den mp2 files werden nur in verzeichnisnamen codiert, leider werden keine id3 tags gesetzt (u.a. liegt ja auch jahr und label vor, die gehen verloren)
    unter windows konnte ich dem mp2 manuell ein id3 tag verpassen - prizipiell geht das also


    Das mit den Tags soll natürlich auch noch rein...



    Schön, das Du es schonmal testen kannst. Welche Distribution setzt Du ein?

  • > b) sicherlich besser: Lückenerkennung im Umfeld der Schnittmarken. Dazu
    > müsste der mp2-Datenstrom analysiert werden. Ich befürchte nur, dass
    > man hier erheblich Erfahrungen sammeln muss, bis das klappt!


    evtl. kann man ein wenig bei noad abkupfern
    das beste wäre es das file um die schnittmarke zu decodieren und stille zu suchen, da fängt es dann aber an umfangreicher zu werden da man wieder zusätzliche tools/packete braucht - ich dachte das diese routinen schon (stille erkenne) bestandteil des orginal audirecorders ware


    > Schön, das Du es schonmal testen kannst. Welche Distribution setzt Du ein?


    suse 10.2 mit vdr 1.5.1 und ein paar zusätliche sachen, suse ist einfach out of the box nicht fit für multimedia
    (damit dein plugin mit vdr 1.5.x läuft mußte ich den patch für den orginal audiorecorder ein wenig anpassen)

  • So, hab mal nochn bisschen was gemacht. Ich denke, man kann es schon mal ausprobieren.


    Das plugin (neuer Name: P-Rex) kann die in der Datei prex.channels hinterlegten Kanäle mitschneiden und erkennt anhand des EPG sekundengenau die Titel. Dies reicht nicht immer zum exakten erkennen der Lücken, erzielt aber recht gute Ergebnisse.


    Durch Aufruf des Skriptes "prexcuttem.sh" werden die Files dann geschnitten, in mp3 gewandelt und getagged.


    Link: prex-0.0.1.tgz
    Installation:
    das plugin wie alle plugins
    dann in Verzeichnis "cutter": make install.
    Die Skripte auf die eigenen Bedürfnisse anpassen!


    Abhängigkeiten (meine Konfig):
    mp3encoder : lame
    id3tagger: id3tool


    Schaut in das Script "prexpostem.sh"


    Lückenerkennung:
    Experimente mit mp3splt waren teilweise erfolgreich, aber noch nicht wirklich gut.


    Zitat


    beim live hören ist zwischen den titeln immer ein ~1s pause die man deutlich erkenne kann, beim vom cutter erzeugten mp2 file ist die viel kürzer bzw garnicht vorhanden


    Ich denke, dass hier der entscheidende Hinweis drinsteckt. Eventuell sendet P-Radio keine Audiodaten in den Pausen?!

  • Hallo Frank,


    ähm, was hast Du mit der armen Datei "a-tools.c" gemacht? Die sieht sehr binär aus :schiel.

    Code
    htpc p-rex # make
    a-tools.c:401:2: Fehler: ungültige Präprozessordirektive #Û
    a-tools.c:550:2: Fehler: ungültige Präprozessordirektive #=

    Daher ist ein Kompilieren nicht möglich.
    Schaust Du bitte mal nach, vielen Dank! (Ist sowohl im Archiv so, als auch in Deinem Web-Ordner zu p-rex)


    Viele Grüße
    Chriss


  • Scheint kaputt zu sein... Kannst Du kurzfristig vom audiorecorder nehmen

  • Frankman


    irgendie stimmen da die permissions nicht auf deinem download area, ich kann weder das prex-0.0.1.tgz runterladen noch kriege ich alle dateien im verzeichnis prex-0.0.1
    z.b. README geht, readme nicht


    Forbidden


    You don't have permission to access /Files/P-Rex/prex-0.0.1/Readme on this server.

  • Hi Frank,


    die a-tools.c gibt's beim audiorecorder auch nicht (nur die .h). Daher habe ich im Makefile das "a-tools.o" rausgenommen.
    Weiterhin habe ich, damit es durchkompiliert, die Zeile "#include <stl_config.h>" kommentieren müssen.


    Habe ich mir damit selber ein Ei gelegt? Denn beim Hinzufügen eines Receivers schmiert dann der VDR ab:


    Viele Grüße
    Chriss

    Einmal editiert, zuletzt von theonlychriss ()


  • Stimmt, ist wohl was falsch... Nicht alles was man sehen kann, kann man anscheinend auch lesen. Kann ich erst heute abend ändern...


    /EDIT: sollte jetzt gehen



  • hmmm, wohl eher nicht. Passiert bei mir aber nicht! Probiers mal mit nem lokalen Aufnahmeverzeichnis. Gibts noch irgendwelche printf's?

  • Hi Frank,


    Problem gelöst!
    1. Das IST lokal (mein share-Verzeichnis für alle anderen Rechner im Netz ist eben /samba :]).
    2. Weitere printf's gab's nicht.
    3. Habe mal mit dem gdb geforscht und den Segfault auf das "delete id;" in "cChannelBrowse::~cChannelBrowse()" (Datei: channelbrowse.c) zurückgeführt.
    Du iterierst wohl falsch durch die "channel_id_list", aber hiermit geht's bei mir (vorher waren begin und end "vertauscht"):

    Code
    list<tChannelID*>::iterator channel_id_list_iter = channel_id_list.begin()    ;
       while(channel_id_list_iter !=channel_id_list.end())
       {
        tChannelID * id = *channel_id_list_iter;
        channel_id_list_iter++;
        delete id;
       };


    Außerdem wäre in mainmenu.c der Aufruf für das Schneiden eher so angebracht (man muss dann natürlich noch das prexcuttem.sh entsprechend anpassen, damit man dort nicht das Verzeichnis hart reincoden muss):

    Code
    sprintf(szCommand,"at now -f /usr/bin/prexcuttem.sh %s" Recdir);


    Leider ist das mit den Schnittmarken wirklich so'ne Sache (ca. 3 Sekunden daneben).
    Trotzdem: Super Sache! Danke vielmals!


    Viele Grüße
    Chriss


  • Vielen Dank für das debuggen...


    Die Uhr muss wirklich genau gehen, also am besten beim Starten per ntp abgleichen. Bei mir sind die Versätze oft null und eigentlich immer im Bereich einer Sekunde.


    Ich will nun folgendes noch einbauen:
    a) gehe x Sekunden vor die Schnittmarke
    b) suche den kleinsten Pegel bis y Sekunden hinter die Schnittmarke
    c) dies ist dann die neue Schnittmarke.


    Dies sollte meist funktionieren.

  • @frankmann


    bei mir läßt sich das plugin nicht kompilieren (vdr 1.4.4 und 1.5.1)


    Plugin prex:
    make[1]: Entering directory `/usr/local/src/VDR/PLUGINS/src/prex'
    make[1]: Leaving directory `/usr/local/src/VDR/PLUGINS/src/prex'
    make[1]: Entering directory `/usr/local/src/VDR/PLUGINS/src/prex'
    g++ -fPIC -g -O2 -Wall -Woverloaded-virtual -c -D_GNU_SOURCE -DPLUGIN_NAME_I18N='"p-rex"' -I../../../include -I/include p-rex.c
    g++ -fPIC -g -O2 -Wall -Woverloaded-virtual -c -D_GNU_SOURCE -DPLUGIN_NAME_I18N='"p-rex"' -I../../../include -I/include filebrowser.c
    g++ -fPIC -g -O2 -Wall -Woverloaded-virtual -c -D_GNU_SOURCE -DPLUGIN_NAME_I18N='"p-rex"' -I../../../include -I/include prexstatus.c
    g++ -fPIC -g -O2 -Wall -Woverloaded-virtual -c -D_GNU_SOURCE -DPLUGIN_NAME_I18N='"p-rex"' -I../../../include -I/include statmon.c
    ../../../include/vdr/device.h: In member function ‘void cStatmon::start_audioreceiver(cChannel*)’:
    ../../../include/vdr/device.h:271: error: ‘eSetChannelResult cDevice::SetChannel(const cChannel*, bool)’ is private
    statmon.c:103: error: within this context
    make[1]: *** [statmon.o] Error 1
    make[1]: Leaving directory `/usr/local/src/VDR/PLUGINS/src/prex'



    du zeigst im makefile als vdrdir nach /vdr aber ich denke hier sollte eigentlich ../../.. stehen


    in der filebrowser.h habe ich die letzte Zeile geändert in
    #endif /* __FILEBROWSER_H */

  • Hallo Gemeinde,


    ich suche nun nach einem Stück code, welcher in einem mp2- oder mp3-file die leisteste Position zwischen zwei Marken (Zeit oder bytes) erkennt.


    Alles was ich bisher gefunden habe, versucht eine Lücke zu finden, was aber nicht immer funktioniert. (mp3splt). Bevor ich nun anfange, mp3splt auseinanderzunehmen gibts ja vielleicht doch schon etwas geeignetes. Eventuell libmad?


    viele Grüße,


    Frank

  • Hallo,


    ich bin jetzt auch mal testweise auf vdr-1.5.2, jetzt RENAMED der audiorecorder nicht mehr!


    vorgegangen bin ich wie folgt;


    tar xvfz /home/public/Software_Lin_Vdr/vdr-audiorecorder-0.1.0-pre6.tgz
    patch -p1 < /home/public/Software_Lin_Vdr/VDR-1.5.0/audiorecorder-0.1.0-pre6b.diff
    patch -p1 < /home/public/Software_Lin_Vdr/VDR-1.5.0/audiorecorder-0.1.0-pre6b-1.5.diff



    War das OK?


    Dank und Gruss
    klak

  • muß ich nachvollziehen - gib mir ne sekunde ... während der könntest du mal das log posten - zumindest den ausschnitt.






    bei mir tuts.

    2 Mal editiert, zuletzt von magicamun ()

  • Ich habe noch zweimal alles neu gemacht, VDR und alle Plugins kompiliert.
    Und zum Schluss den Rechner gebootet, jetzt funktioniert es. <...Staun .... läuft bei mir Windows ? >


    Pardon, das ich für Aufregung gesorgt habe.


    klak

  • wegen dir bin ich jetzt auf 1.5.2 - ob ich dir danken soll weiß ich noch nicht.


    Gruß

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!