Nick1000 Posted March 20 Share Posted March 20 Moin, vielen Dank für die tollen Programme. Ich benutze insbesondere den Media Server regelmäßig zur Aufzeichnung. Es gibt noch eine Sache die mir fehlt, welche der alte Streamripper für Winamp damals konnte: Die Erstellung von .cue-Files aus den gelieferten ID3-Tags des Radios. Die helfen mir sehr beim Cutten von stundenlangen Mitschnitten damit ich direkt weiß wann z.B. eine Konzertaufnahme beginnt. Wäre sowas möglich zu basteln? Quote Link to comment
Griga Posted March 21 Share Posted March 21 vor 15 Stunden schrieb Nick1000: Es gibt noch eine Sache die mir fehlt, welche der alte Streamripper für Winamp damals konnte: Die Erstellung von .cue-Files aus den gelieferten ID3-Tags des Radios. ID3-Tags gibt es nur bei Dateien, nicht bei Live-Streams. Du meinst wahrscheinlich Shoutcast-Metadaten. Der DVBViewer setzt sie intern notdürftig in EPG-Daten um, damit sie sich wie DVB-Daten verarbeiten lassen. Dabei improvisiert er etwas, weil er keine Infos hat, wie lange die Stücke dauern bzw. wann was als nächstes kommt. Das EPG-Fenster des DVBViewers protokolliert also die eintreffenden Shoutcast-Daten. Außerdem erscheinen sie im EPGLogger Plugin, das ich vor vielen Jahren geschrieben habe. Probiere mal, ob es das liefert, was du brauchst, und für deinen Zweck ausreichend zuverlässig funktioniert. Ich habe das Plugin gerade probehalber bei "ROCK ANTENNE Rock 'n' Roll" mitlaufen lassen und festgestellt, dass es dabei gelegentlich einen gespielten Titel ausgelassen hat - offenbar immer dann, wenn der Sender zusätzlich Eigenwerbung oder seine Internetadresse überträgt. Gelegentlich muss ich mal überprüfen, woran das liegt. Quote Link to comment
Nick1000 Posted March 21 Author Share Posted March 21 Danke Dir Griga, ja um diese Daten geht es. Habe das Plugin auch probiert und dabei ähnliches festgestellt bei Eigenwerbung (ich nehme gerade 'One World Radio' auf, da wird das Tomorrowland Winter Festival übertragen). Als ich dieses Problem festgestellt hatte, haben sich die Shoutcast-Daten sehr schnell hintereinander geändert, ob es daran liegt? Ideal wäre es dann, wenn dies in den Recording Service eingearbeitet werden könnte, so dass das Logging dann mit Aufnahme startet, damit die cue-Files ungefähr passend sind. Zum Schneiden benutze ich MP3DirectCut, welches prima mit .cue-Files umgehen kann. Quote Link to comment
Griga Posted March 21 Share Posted March 21 vor 7 Stunden schrieb Nick1000: Habe das Plugin auch probiert und dabei ähnliches festgestellt bei Eigenwerbung (ich nehme gerade 'One World Radio' auf, da wird das Tomorrowland Winter Festival übertragen). Als ich dieses Problem festgestellt hatte, haben sich die Shoutcast-Daten sehr schnell hintereinander geändert, ob es daran liegt? Vermutlich. Die EPG-Verwaltung kann offenbar nicht mit sehr kurze Einträgen umgehen, die nur wenige Sekunden dauern. Sowas kommt bei DVB nicht vor. Die Zeiten werden deshalb auf Minuten gerundet. vor 7 Stunden schrieb Nick1000: Ideal wäre es dann, wenn dies in den Recording Service eingearbeitet werden könnte Vorhin im Code nachgeschaut: Im Media Server hätte eine Implementation die besten Chancen, weil der ohnehin den Now/Next-EPG in Aufnahme-Logs schreibt (siehe Media Server-Optionen -> Aufnahmen -> Log-Datei schreiben), so dass man hinterher sehen kann, was tatsächlich wann während der Aufnahmezeit gelaufen ist. Das gilt bislang allerdings nur für Timeraufnahmen, die über den EPG programmiert wurden, so dass die Event ID der aufzunehmenden Sendung bekannt ist. Das ist mit Internetradio so nicht möglich. Aber der grundlegende Mechanismus ist vorhanden. vor 7 Stunden schrieb Nick1000: Zum Schneiden benutze ich MP3DirectCut, welches prima mit .cue-Files umgehen kann. Ein Format, das sich weiter verarbeiten lässt, hätte gewisse Vorteile gegenüber einem Aufnahme-Log in einem individuellen Format. Entsprechen deine Cue Sheets dem auf Wikipedia als Beispiel angegebenen Format? https://en.wikipedia.org/wiki/Cue_sheet_(computing)#Examples Oder kannst du hier ein Beispiel als Datei anhängen? Quote Link to comment
Griga Posted March 23 Share Posted March 23 Am 21.3.2024 um 20:46 schrieb Griga: Die EPG-Verwaltung kann offenbar nicht mit sehr kurze Einträgen umgehen, die nur wenige Sekunden dauern. Sowas kommt bei DVB nicht vor. Die Zeiten werden deshalb auf Minuten gerundet. Wie ich inzwischen festgestellt habe, ist davon nicht nur das EPGLogger-Plugin betroffen, sondern auch an einigen (nicht allen) Stellen die Anzeige im DVBViewer, was gerade in einem Internet-Radiosender läuft. Beheben lässt es sich jedoch, indem die EPG-Zeiten zunächst ungerundet gespeichert werden, so wie sie eintreffen, und die Rundung auf Minuten erst beim Auslesen aus der EPG-Datenbank (z.B. um die Zeiten irgendwo anzuzeigen) stattfindet. Die Änderung betrifft auch den Media Server. Vorgeschichte siehe hier. Ich könnte jetzt also eine DVBViewer-Version zur Verfügung stellen, mit der das EPGLogger-Plugin auch bei Internetradio korrekt funktioniert. Die Realisierung des eigentlichen Vorschlags im Media Server ist jedoch noch eine andere Geschichte... hier wäre eine naheliegende Idee, den aus Internetradio-Metadaten resultierenden Pseudo-EPG in Aufnahmelogs mitzuprotokollieren (siehe vorherigen Post). Zwar sind sie nicht als Cue Sheets verwendbar, enthalten dafür aber weitere Infos, die von Interesse sein könnten. Quote Link to comment
Griga Posted March 23 Share Posted March 23 vor 4 Stunden schrieb Griga: hier wäre eine naheliegende Idee, den aus Internetradio-Metadaten resultierenden Pseudo-EPG in Aufnahmelogs mitzuprotokollieren (siehe vorherigen Post). Das wäre mit relativ geringem Aufwand realisierbar. Das Ergebnis sieht in der Praxis etwa so aus: Spoiler ROCK ANTENNE Rock 'n' Roll 23.03.2024 D:\Dateien von Griga\DMS\03-23_12-17-15_ROCK ANTENNE Rock n Roll_ROCK ANTENNE Rock n Roll.mp3 Naming Scheme: %date_%time_%station_%event Device: TS Stream Device Timer Name: ROCK ANTENNE Rock 'n' Roll Timer Start: 23.03.2024 12:16:00 Timer Duration: 00:30:00 (30 min.) Timer Options: Teletext=0, Subtitles=1, All Audio Tracks=1, Adjust PAT/PMT=1, EIT EPG Data=0, Transponder Dump=0 Timer Source: Web 12:17:15 / 00:00:00 (~ 0,00 MB) Start Recording 12:17:15 / 00:00:00 (~ 0,00 MB) Rock: https://www.rockantenne.de 12:17:16 / 00:00:00 (~ 0,00 MB) ROCK ANTENNE - Rock And Roll 12:17:16 / 00:00:01 (~ 0,02 MB) PID 2826: MP3 Audio J. Stereo, 44,1 khz, 128 kbps 12:17:42 / 00:00:26 (~ 0,44 MB) Wanda Jackson - Lets have a party 12:18:12 / 00:00:56 (~ 0,89 MB) Hollies - Bus stop 12:20:57 / 00:03:41 (~ 3,41 MB) ROCK ANTENNE - Rock And Roll 12:21:02 / 00:03:46 (~ 3,48 MB) Hank Thompson - Rockin in the Congo 12:23:22 / 00:06:06 (~ 5,62 MB) Elvis Presley - My Baby Left Me 12:25:27 / 00:08:11 (~ 7,53 MB) ROCK ANTENNE - Rock And Roll 12:25:37 / 00:08:21 (~ 7,69 MB) Carl Perkins - Honey dont 12:28:22 / 00:11:06 (~ 10,19 MB) Deep Purple - Rockin Pneumonia And The Boogie Woogie Flu 12:28:54 / 00:11:39 (~ 10,70 MB) Stop Average Data Rate: 0,015 MB/s Total Size: 10,7 MB (11218024 Bytes) Das ist schon ziemlich informativ. Ob sich die Erzeugung eines Cue Sheets lohnt, ist eine andere Frage. Für einen automatischen Schnitt müsste der Zeitpunkt der übertragenen Metadaten sehr präzise sein. Bei früheren Versuchen mit Radiotext war das nie der Fall. Quote Link to comment
HaraldL Posted March 23 Share Posted March 23 vor 2 Stunden schrieb Griga: Für einen automatischen Schnitt müsste der Zeitpunkt der übertragenen Metadaten sehr präzise sein. Bei früheren Versuchen mit Radiotext war das nie der Fall. Sehr wahrscheinlich. Sehe ich täglich beim RDS am Autoradio. Antenne Bayern beginnt scheinbar schon zum Ende des vorherigen Titels den neuen zu senden so daß meist direkt beim Start eines neuen Titels ganz schnell der Text im Display steht. Bei Bayern3 dagegen sieht man noch lange den vorherigen Titel bis da mal der neue erscheint, vorher meist sogar noch 1-2x Eigenwerbung. Wird in DVB sicher nicht anders sein und je nach Sender unterschiedlich. Vermutlich kommen die Texte für RDS und DVB sowieso aus der gleichen "Maschine". Selbst bei sekundengenauer Protokollierung würde so ein vollautomatischer Schnitt ohne manuelle Hör-Kontrolle eher unbrauchbare Ergebnisse erzielen. Ist eben kein Cue-Sheet mit exakten Zeitstempeln. Als Hilfe für manuelles Schneiden wäre so etwas aber natürlich eine Hilfe, ungefähre Position zum schnelleren Suchen/Finden und die genauen Titel zum Benennen. Quote Link to comment
Griga Posted March 23 Share Posted March 23 Ein Cue Sheet als Output hätte allerdings neben einer (wahrscheinlich oft nicht brauchbaren) automatischen Schnittmöglichkeit auch den Vorteil, dass manche Audio Player es als Wiedergabeliste einlesen. D.h. man kann damit direkt zu einem bestimmten Song springen und gelangt so zumindest ungefähr zu dessen Anfang. Allerdings sollte der DVBViewer dies dann auch unterstützen, was einigen zusätzlichenn Implementationsaufwand mit sich bringt. So führt immer eins zum anderen Zu überlegen ist noch, ob der Media Server (optional) wiederholt auftretende Textzeilen ignorieren soll, so wie im obigen Beispiel "ROCK ANTENNE - Rock And Roll", um Eigenwerbung zu eliminieren. Ähnliches ermöglicht bereits der TSPlayer für Radiotext-Output. Quote Link to comment
Nick1000 Posted March 29 Author Share Posted March 29 Dass dies nur vage Informationen sind, und nicht sekundengenau ist total okay. Die Schnitte mit mp3directcut mache ich dann immer noch manuell, aber die .cue-Files bieten dann eine Schablone zur Orientierung. Quote Link to comment
Webturtle Posted March 29 Share Posted March 29 Hallo, da kann ich Nick1000 nur zustimmen! Es ist meist nicht gerade leicht herauszufinden, in welchem Bereich der Schnitt liegen müßte. Und mp3directcut funktioniert in dieser Hinsicht auch etwas anders als ich es von meinen Video-Editoren, z.B. TS-Doctor, gewöhnt bin. Sowohl was die Darstellung der Timeline angeht als auch die Bewegung des Cursor und die Auswahl des Schnittbereiches. Viele Grüße Webturtle Quote Link to comment
Griga Posted March 29 Share Posted March 29 Inzwischen stände bei Bedarf eine Media Server-Testversion zur Verfügung, die Shoutcast-Metadaten wie hier exemplarisch angegeben in Aufnahme-Logs schreibt, wahlweise mit oder ohne Wiederholungen. Die Erzeugung von Cue Sheets ist mir jetzt erst mal zu aufwendig. Ich will aber nicht ausschließen, dass ich es in Zukunft noch ergänze. Notwendig dazu wäre eine Beispieldatei, nach der ich hier gefragt hatte. Möglich wäre vielleicht auch ein Programm/Skript, das Aufnahme-Logs in Cue Sheets konvertiert - falls sich jemand sowas zutraut... Quote Link to comment
Nick1000 Posted March 30 Author Share Posted March 30 Top, danke! Ich werde die Testversion morgen mal nach meinen Recordings installieren. Ich lasse gerade eine .cue-Datei generieren, bei nem Internetradio das noch über Streamripper funktioniert. Lade ich dann morgen hoch. 🙂 Quote Link to comment
Griga Posted March 30 Share Posted March 30 vor einer Stunde schrieb Nick1000: Ich werde die Testversion morgen mal nach meinen Recordings installieren. Die ist noch nicht erhältlich. Ich muss sie erst für dich (wahrscheinlich als PM-Anhang) hochladen. Ich melde es hier, wenn es soweit ist. Quote Link to comment
Nick1000 Posted March 31 Author Share Posted March 31 So, schonmal vielen Dank. Ich teste momentan mit SlamFM (http://stream.slam.nl/slam_mp3), da dieses Internetradio auch noch mit dem uralten Streamripper funktioniert. Im Anhang das vom Streamripper erzeugte Cue-File (Echte Endung wäre natürlich nicht .txt, sonder .cue). Sind mit Aufnahme-Logs die erzeugten .txt-Files im Aufnahmeordner gemeint? Dort ist leider noch kein spezifischer Inhalt erzeugt. sr_program_2024_03_31_11_22_09.txt 03-31_11-21-06_SLAM!_SLAM!.txt Quote Link to comment
Griga Posted March 31 Share Posted March 31 vor 34 Minuten schrieb Nick1000: Sind mit Aufnahme-Logs die erzeugten .txt-Files im Aufnahmeordner gemeint? Nein. Siehe Media Server-Optionen -> Aufnahmen -> Log-Datei schreiben. Ergibt eine zusätzliche .log-Datei. Quote Link to comment
Nick1000 Posted March 31 Author Share Posted March 31 Top, funktioniert schon, danke dir! Ich poste nachher mal das Ergebnis DVBViewer vs. Streamripper. 🙂 Quote Link to comment
Nick1000 Posted March 31 Author Share Posted March 31 So, das lief prima! Alle Informationen die ich benötige, wurden gespeichert, vielen vielen Dank, das ist der größte und wichtigste Schritt für mich! 🙂 Das jetzt in Cue-Files wäre natürlich die Königsdisziplin, aber ich will nicht nach zu viel fragen. 🙂 streamripper.txt dvbviewer.log Quote Link to comment
Griga Posted April 1 Share Posted April 1 Ich muss mich zunächst korrigieren: Der DVBViewer empfängt keine Shoutcast-, sondern in den Audiostream eingebettete Icecast-Metadaten. Diese sind allerdings nicht besonders reichhaltig. Neben einigen allgemeinen Infos zum Sender wie sein Name und Genre, die der HTTP Header einmalig beim Verbinden liefert, gibt es nur zwei relevante Felder: StreamTitle und StreamUrl. Was der Media Server im Log aufzeichnet, ist meistens der Inhalt von StreamTitle. Title und Performer werden also nicht separat aufgeführt, sondern üblicherweise zusammen mit einem Bindestrich dazwischen angegeben. Ich frage mich, wie der Streamripper die auseinanderhält. Verlässt er sich einfach darauf, dass sich alle Sender an das Schema halten, oder nutzt er noch andere Informationsquellen? Bei den Radiosendern der ARD kann StreamTitle alles mögliche enthalten: Eigenwerbung, Nachrichten... und WDR 4 gibt anders als Slam! erst den Title und dann den Performer an. Ich sehe nicht, wie daraus ein korrektes Cue Sheet entstehen kann. Quote Link to comment
Nick1000 Posted April 1 Author Share Posted April 1 Ich gehe fest davon aus, dass der Streamripper wie du vermutest, einfach nur den Bindestrich als Trenner nimmt. Leider kann ich das nicht mehr z.B. bei WDR4 testen, da auch dies nicht mehr über den Streamripper funktioniert. Wäre da persönlich pragmatisch, da mir ja die Schablone am wichtigsten ist (mp3directcut z.B. zeigt das eh wieder in einer Zeile an). Ich persönlich sehe kein Problem, den Bindestrich als Trenner zu nehmen, oder alternativ alles unter "Title" zu packen, und unter "Performer" dann z.B. "n/a". Quote Link to comment
Nick1000 Posted July 18 Author Share Posted July 18 Danke nochmal. ChatGPT hat mir übrigens ein Skript erstellt, welches die Log-Datei in eine CUE-Datei ändert. 🙂 import os import re # Funktion zur Umwandlung von hh:mm:ss in mm:ss:ff def convert_time_format(time_str): hh, mm, ss = map(int, time_str.split(':')) total_minutes = hh * 60 + mm return f"{total_minutes:02d}:{ss:02d}:00" # Funktion zur Verarbeitung einer einzelnen Log-Datei def process_log_file(log_file_path): cue_file_path = log_file_path.replace('.log', '.cue') # Initialisierung der CUE-Datei Inhalte cue_contents = f"""FILE "{os.path.basename(log_file_path).replace('.log', '.mp3')}" MP3\n""" # Log-Datei lesen with open(log_file_path, 'r') as file: lines = file.readlines() # Tracks parsen und CUE-Datei-Inhalte erstellen track_number = 1 for line in lines: # Zeitstempel und Track-Info extrahieren match = re.match(r".+ / (\d{2}:\d{2}:\d{2}) (.+)", line.strip()) if match: start_time, track_info = match.groups() cue_start_time = convert_time_format(start_time) # Performer und Title extrahieren if ' - ' in track_info: performer, title = track_info.split(' - ', 1) else: performer = track_info title = '-' # Track-Informationen zur CUE-Datei hinzufügen cue_contents += f" TRACK {track_number:02d} AUDIO\n" cue_contents += f" TITLE \"{title.strip()}\"\n" cue_contents += f" PERFORMER \"{performer.strip()}\"\n" cue_contents += f" INDEX 01 {cue_start_time}\n" track_number += 1 # CUE-Datei schreiben with open(cue_file_path, 'w') as cue_file: cue_file.write(cue_contents) print(f"CUE-Datei erfolgreich erstellt: {cue_file_path}") # Verzeichnis durchsuchen und alle .log-Dateien verarbeiten current_directory = os.getcwd() log_files = [f for f in os.listdir(current_directory) if f.endswith('.log')] for log_file in log_files: process_log_file(os.path.join(current_directory, log_file)) Quote Link to comment
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.