2017-11-22 6 views
1

Wir haben eine M4A Audio-Datei einen Container für ein AAC-codiertes Audio (Container-Stream ist MPEG-4, Audio-Stream ist AAC).Wie m4a/aac Audiodatei abspielen, wenn ein Stück fehlt?

Wir übertragen diese Datei in Teilen (nur zufällig zu brechen, an unserer Größenbeschränkung, und diese Bytes zu übertragen) zwischen 2 Systemen.

Wenn ein Stück nie gesendet wird, wie rekonstituiere ich dann die Stücke, so dass zumindest ein Teil davon spielbar ist?

Was ich bis jetzt gefunden habe, ist, dass, wenn ich die Datei aufspalte und abschicke, ich sie wiederherstellen kann, wenn ich alle Teile (natürlich) habe, aber wenn ich ein Stück verlasse, erkennt kein Audiowerkzeug es oder kann es spielen.

Was ist der richtige Weg, dies zu tun? Wie ist M4a ein streamfähiges Format, wenn ich alle Teile brauche?

Bearbeiten: Um zu verdeutlichen, dass wir Audio auf begrenzten IoT-Geräten aufnehmen und die Aufnahmen zur späteren Wiedergabe in die Cloud senden. Wir haben eine maximale Upload-Größe von 128kb. Wir könnten das rohe Audio einfach in vielen kleinen m4a-Dateien speichern und diese einfach hochladen, aber gibt es dort keine Verschwendung mit allen Meta-Daten in jeder Datei? Wie wollen wir 30s Audio, aber speichern Sie das in 10, 3s m4a Dateien statt einer 30s m4a Datei, die wir aufteilen?

+0

Verwenden Sie UDP? Wenn du TCP verwendest, warum würde es fehlende Teile geben? –

+0

Mit mqtt tatsächlich, aber das ist nicht relevant. Das Internet könnte ausfallen und die Wiederholungsrichtlinie kann fehlschlagen. LTE angeschlossenes Gerät, das sich bewegen kann, etc. Jedenfalls kann ein Stück fehlen, oder zumindest möchte ich das erklären. – Fraggle

Antwort

1

Ich würde Ihren AAC-Stream aus Ihrem MPEG-4 (m4a) -Container extrahieren und Ihre AAC in ADTS (Audio Data Transport Stream) setzen. ADTS besteht aus kleinen Frames und jeder Frame hat eine Kopfzeile, gefolgt von AAC-Audiodaten (ähnlich einem MP3-Stream). ADTS ist selbstsynchronisierend und ist für Paketverlust ausgelegt - zum Beispiel für die Übertragung über die Luft.

+0

Ok, ich bin mir nicht sicher, ob wir das auf der Clientseite tun können. Wir haben Einschränkungen. Aber ich kann nachforschen. So ist die Antwort auf meine ursprüngliche Frage über das Rekonstruieren eines m4a mit fehlendem Stück: "Das ist unmöglich, verwenden Sie ein anderes Codierungs-/Containerformat oder speichern Sie jedes Stück als eine vollständige m4a-Datei"? – Fraggle

+1

Verwandeln Sie Ihren AAC/M4A in ein ADTS - Sie müssen nicht neu codieren. –

+0

@ Fraggle Sie tun diese Client-Seite nicht, Sie tun diese Server-Seite. Ohne etwas wie ADTS können Sie den Stream nicht beliebig neu zusammensetzen. – Brad

Verwandte Themen