Skip to content
GitLab
Projects Groups Snippets
  • /
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in / Register
  • aura aura
  • Project information
    • Project information
    • Activity
    • Labels
    • Members
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
  • Issues 60
    • Issues 60
    • List
    • Boards
    • Service Desk
    • Milestones
  • Merge requests 0
    • Merge requests 0
  • CI/CD
    • CI/CD
    • Pipelines
    • Jobs
    • Schedules
  • Deployments
    • Deployments
    • Environments
    • Releases
  • Packages and registries
    • Packages and registries
    • Container Registry
  • Monitor
    • Monitor
    • Incidents
  • Analytics
    • Analytics
    • Value stream
    • CI/CD
    • Repository
  • Wiki
    • Wiki
  • Snippets
    • Snippets
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
Collapse sidebar
  • AURAAURA
  • auraaura
  • Wiki
  • AEP01 Aufnahmen und Wiederholungen

AEP01 Aufnahmen und Wiederholungen · Changes

Page history
Doc: Provide component diagram for tank-cut-glue authored Sep 15, 2022 by Ole Binder's avatar Ole Binder
Hide whitespace changes
Inline Side-by-side
AEP01-Aufnahmen-und-Wiederholungen.md
View page @ 8053c918
| Datum | Beschreibung | Author | Status |
|--------|-------------------------|--------|--------|
|-------|--------------|--------|--------|
| 2022-02-25 | Erstversion mit Input von Hackathon 21 | David | Draft |
| 2022-03-11 | Details zu Tank & Steering | Ernesto | Draft |
| 2022-05-04 | Erstes Team Review | Ernesto, Christian, Ole, David | Draft |
......@@ -7,7 +7,7 @@
## EPIC
[[EPIC] [AEP01] Recording, cutting and rescheduling of shows)](https://gitlab.servus.at/aura/meta/-/issues/97)
[\[EPIC\] \[AEP01\] Recording, cutting and rescheduling of shows)](https://gitlab.servus.at/aura/meta/-/issues/97 "[EPIC] [AEP01] Recording, cutting and rescheduling of shows")
## Use Cases:
......@@ -76,6 +76,8 @@ Entwicklung einer neuen Python Komponente <span dir="">`engine-recorder`</span>
Entwicklung einer neuen Python Komponente <span dir="">`tank-cut-glue`</span> um aus den Aufnahme Blöcken aus <span dir="">`engine-recorder`</span> konkrete Sendungslängen zuzuschneiden. Die Komponente soll als User Agent ausgeführt werden.
Ein erster Komponenten Entwurf sieht wie folgt aus: ![Component_Diagram_cut_glue.drawio.svg](uploads/dcfc2b2c6744d9c062aaeebee7265b6b/Component_Diagram_cut_glue.drawio.svg)
**Authentifizierung**: Cut & Glue authentifiziert sich gegen Tank per _Bearer Token_ (vgl. Implementierung in <span dir="">`engine`</span>)
**Kernlogik:**
......@@ -98,23 +100,23 @@ Nachstehend finden sich zwei Proof of Concepts mit FFMPEG und SOX. Wenn möglich
Schneiden:
`ffmpeg -i `[`https://live.helsinki.at:8088/live160.ogg`](https://live.helsinki.at:8088/live160.ogg)` -codec flac -f segment -segment_atclocktime 1 -segment_time 600 -strftime 1 "%Y-%m-%d/%s.flac"`
`ffmpeg -i` `https://live.helsinki.at:8088/live160.ogg` `-codec flac -f segment -segment_atclocktime 1 -segment_time 600 -strftime 1 "%Y-%m-%d/%s.flac"`
Mehr Infos zum FFMPEG Segment Muxer: <https://ffmpeg.org/ffmpeg-formats.html#toc-segment_002c-stream_005fsegment_002c-ssegment>
Mehr Infos zum FFMPEG Segment Muxer: https://ffmpeg.org/ffmpeg-formats.html#toc-segment_002c-stream_005fsegment_002c-ssegment
#### **Proof of Concept mit SOX**
Schneiden:
`` sox input.flac chopped/output.flac trim 0 10 : newfile : restart` ``
`sox input.flac chopped/output.flac trim 0 10 : newfile : restart\``
`ls chopped output001.flac output003.flac output005.flac output007.flac output009.flac output011.flac output013.flac output015.flac output017.flac output019.flac output021.flac output023.flac output025.flac output027.flac output029.flac output031.flac output002.flac output004.flac output006.flac output008.flac output010.flac output012.flac output014.flac output016.flac output018.flac output020.flac output022.flac output024.flac output026.flac output028.flac output030.flac`
Concatten mit μs genauem Längenvergleich:
`sox chopped/* final.flac`
`sox chopped/\* final.flac`
`A=$(soxi -D input.flac) `\
`A=$(soxi -D input.flac)` \
`B=$(soxi -D final.flac)`\
`echo "INPUT: $A ---vs--- $B :OUTPUT"`\
`INPUT: 307.600000 ---vs--- 307.600000 :OUTPUT`
......@@ -142,33 +144,19 @@ Die Aufnahme soll möglichst zeitnah nach einer Sendung bereitstehen für
_Hackathon Freistadt Juli 2021: Im Moment ist bei Wiederholungen nicht erkennbar, was wiederholt wird (aktuell: die letzte Episode der Reihe, die keine Wiederholung war). (Implizite Logik)\
In Zukunft wird das explizit angegeben. (Kein UI-Feld, sondern intern)_
Wir haben jetzt ein `is_repetition`-Feld bei den Schedules und eins bei den
Timeslots.
Wir haben jetzt ein `is_repetition`-Feld bei den Schedules und eins bei den Timeslots.
Im Schedule bedeutet dass der Sendeplatz die Wiederholung einer Sendung ist, im
Timeslot bedeutet dass diese eine Timeslot eine Wiederholung ist. Aber beide
haben keine Information darüber was wiederholt wird.
Im Schedule bedeutet dass der Sendeplatz die Wiederholung einer Sendung ist, im Timeslot bedeutet dass diese eine Timeslot eine Wiederholung ist. Aber beide haben keine Information darüber was wiederholt wird.
Ich denke wir könnten bei den Timeslots das Feld `repetition_of` einführen, der
dann eine ForeignKey auf ein Timeslot ist. (`is_repetition` könnten wir dann
entfernen.)
Ich denke wir könnten bei den Timeslots das Feld `repetition_of` einführen, der dann eine ForeignKey auf ein Timeslot ist. (`is_repetition` könnten wir dann entfernen.)
Damit würde würde dann der Tank wissen, dass für diesen Timeslot nicht eine
Playlist oder Datei braucht sondern aus den Aufnahmen die Zeit von Start bis
Ende des Timeslots, der wiederholt wird, holen muss und diese Aufnahme dann
speichert.
Damit würde würde dann der Tank wissen, dass für diesen Timeslot nicht eine Playlist oder Datei braucht sondern aus den Aufnahmen die Zeit von Start bis Ende des Timeslots, der wiederholt wird, holen muss und diese Aufnahme dann speichert.
Mir ist es lieber wir habe explizite Information darüber was wiederholt wird
und nicht implizit dass es die letzte Aufnahme einer nicht als Wiederholung
gekennzeichnetes Timeslots.
Mir ist es lieber wir habe explizite Information darüber was wiederholt wird und nicht implizit dass es die letzte Aufnahme einer nicht als Wiederholung gekennzeichnetes Timeslots.
Wir müsste dann nur im Dasboard den Timeslot als Wiederholung definieren. Und
das für jeden Timeslot der eine Wiederholung ist.
Wir müsste dann nur im Dasboard den Timeslot als Wiederholung definieren. Und das für jeden Timeslot der eine Wiederholung ist.
Um es auf Schedule-Ebene zu ermöglichen, könnten wir etwas ähnliches machen und
ein `repetition_of`-Feld definieren, dar dann eine ForeignKey auf Schedule ist,
wir würden aber etwas zusätliches brauchen, um explizit zu definieren, was wann
wiederholt wird.
Um es auf Schedule-Ebene zu ermöglichen, könnten wir etwas ähnliches machen und ein `repetition_of`-Feld definieren, dar dann eine ForeignKey auf Schedule ist, wir würden aber etwas zusätliches brauchen, um explizit zu definieren, was wann wiederholt wird.
… **_to be discussed …_**
......
Clone repository
  • AEP01 Aufnahmen und Wiederholungen
  • AEP02 Uploader
  • AEP03 Musikbibliothek
  • AEP04 Jingle Management
  • AEP05 Erweiterung Datenmodell
  • AEP06 Recurrence Rules
  • AEP07 Rechte & Rollen
  • Aktuelle Dokumente
  • Arbeitsbereiche
  • Email Adressen
  • How Tos
  • Maubot Integration
  • Playground
  • Product & Project Management Workflows
  • Releases
View All Pages