<< Klicken Sie hier um das Inhaltsverzeichnis anzuzeigen >> Navigation: Detailbeschreibung > REST API Service > REST API für Audio Task Framework |
Mit dem DABiS Audio Task Framework können unter anderem Audios konvertiert, normalisiert, gemerged und analysiert werden.
Einige Funktionen des Audio Task Frameworks können über eine REST-Schnittstelle angesteuert werden.
Es gibt dazu zwei Endpoints:
•/stream für Streaming: z.B. http://localhost:8088/WebRaw/title/stream?dbAlias=D800_SKR
•/process sonst: z.B. http://localhost:8088/WebRaw/title/process?dbAlias=D800_SKR
Zu beachten ist, dass dem UrlPath des RestApiServices (Standard: “/Web” ) immer das Suffix “Raw“ angehängt wird. (Standard ist somit “WebRaw”.)
Die Tasks werden im JSON-Format im Body des Requests übergeben.
Nachfolgend ein Beispiel, bei dem zwei Titel gemerged und als mp3 zurück gestreamt werden.
PUT: http://localhost:8088/WebRaw/title/stream?dbAlias=D800_SKR
Body:
{
"Inputs": [
{
"objectType": "MergeInputFades",
"TitleId": 1040,
"LevelOffset":0,
"StartOffsetInMs":0,
"PrerollInFrames":1,
"FadeinInMs": 2000,
"MittelteilInMs":5000,
"FadeoutInMs": 1000
},
{
"objectType": "MergeInputFades",
"TitleId": 2156,
"LevelOffset":0,
"StartOffsetInMs":6000,
"PrerollInFrames":1,
"FadeinInMs": 2000,
"MittelteilInMs":15000,
"FadeoutInMs": 3000
}
],
"Tasks": [
{
"TaskType": "Merge",
"Position": 1
}
],
"Audioformat": {
"AudioFormatType": "Mp3",
"Samplerate": 48000,
"BitRateInKbps": "128"
}
}
Zur Festlegung der Reihenfolge müssen die Tasks das Property Position definiert haben.
AudioTask:{
TaskType:"normalizeR128"|...
Position:0|1|...
}
AnalyzeLoudness:{ // Gibt die aktuelle Loudness zurück
}
AnalyzeLoudness:{ // Gibt die Differenz zur gewünschten Loudness zurück.
targetLUFS:-22
}
Je nach gewähltem Mode werden die Metadaten oder die Datei selber verändert.
normalizeR128:{
"targetLUFS": -21,
"mode": "metadata | file"
},
trim:{
"levelin": -50,
"levelout": -40,
"mode": "metadata | file"
},
timestretch:{
"factor": 0.99
}
Falls kein Audio-Format angegeben wird, wird das in den Settings unter Datenbank definierte AudioFormat verwendet.
Es kann sowohl eine
•Liste von FachIds (kann null sein) als auch eine
•Liste von TitelIds (kann null sein)
übergeben werden.
"Inputs":[
"Titles":{
"Ids":[]
},
"Folders":{
"Ids":[]
}
]
Basisklasse ist AudioFormat:
audioformat:{
"audioFormatType": "mp2",
"samplerate": 48000,
"fileExtension": ".wav"
}
Es gibt folgende Basisformate
•linear (wav)
•mp2
•mp3
•opus
linear : {
"Samplerate": 48000,
"FileExtension": ".wav",
"ChannelMode": "2",
"BitDepth": "16|24|32"
}
mp2: {
"Samplerate": 48000,
"FileExtension": ".mus",
"MpegMode": "",
"BitRateInKbps": "128",
"Padding": 1,
"BlockSize": int,
"PsyModel": int
}
mp3: {
"Samplerate": 48000,
"FileExtension": ".mp3",
"MpegMode": "",
"BitRateInKbps": "128"
}
opus: {
"Samplerate": 48000,
"FileExtension": ".opus"
}
Normalisieren: Der Titel mit der Id 1040 wird auf -23 LUFS normalisiert. Mode "file" bedeutet, dass die Datei verändert wird. Mode "metadata" verändert die Titeldatei nicht, aktualisiert aber die Metadaten in der Datenbank.
{
"Inputs": [
{
"objectType": "Titles",
"Ids": [
1040
]
}
],
"Tasks": [
{
"TaskType": "normalizeR128",
"TargetLUFS": -23,
"Position": 0,
"Mode" : "file"
}
]
}
Time Stretch: Die Länge des Titel mit der Id 1040 wird um den Faktor 0.99 verändert (gekürzt) und im Opus-Format gespeichert.
{
"Inputs": [
{
"objectType": "Titles",
"Ids": [
1040
]
}
],
"Tasks": [
{
"TaskType": "timeStretch",
"Factor": 0.99
}
],
"Audioformat": {
"AudioFormatType": "opus",
"Samplerate": 24000
}
}