Ich benutze dieses Tutorial Multipeer Connectivity Audio Stream zu mehreren Peers und dieses Projekt Github Repository , um Audio von NSInputStream zu streamen, das erhalten wird durch:
%Vor%MCSession Delegate-Methode.
Danach öffnet sich ein neuer Audio File Stream (TDAudioFileStreamer / Classes / AudioFileStream.m: 39):
%Vor%Lies dann Bytes von NSInputStream und versuche auf diese Weise zu parsen (TDAudioFileStreamer / Classes / AudioFileStream.m: 98):
%Vor%Oder:
%Vor%Abhängig vom Datenfluss.
Und schließlich füllen Sie AudioQueue Buffer mit den geparsten Daten, um abzuspielen (ich denke - TDAudioFileStreamer / Classes / TDAudioQueueFiller.m).
Dies funktioniert wirklich gut für MP3-Dateien, aber mit anderen Formaten, wenn Sie versuchen, die Bytes zu parsen, erhalten Sie den Fehler "nicht unterstütztes Dateiformat".
Die Apple-Dokumentation besagt, dass Audio File Stream-Dienste eine Vielzahl von Formaten unterstützen und in diesem Link aufgeführt sind: Apple Stream Services unterstützt Formate , aber für mich funktioniert nur mit MP3.
Ich habe auch versucht, beim Öffnen des Audio File Stream einen Hinweis über das Dateiformat zu geben und eine M4A oder AAC Datei zu senden:
%Vor%Wenn kAudioFileAAC_ADTSType der Typ der gesendeten Datei ist, die gestreamt wird, verschwindet auf diese Weise der "nicht unterstützte Dateiformatfehler", aber die Anwendung stürzt ab und erhält einen neuen Fehler
Das sagt: io: lpc und client: aac.
Vielen Dank im Voraus.
Um M4A mit AudioFileStream
zu streamen / parsen, muss die m4a-Datei für das Streaming optimiert werden.
Das bedeutet, dass sich die Kopfzeile vor der Datei befinden muss und über die richtigen Informationen verfügt, damit der Parser seine Aufgabe ausführen kann.
Einige Encoder optimieren den m4a für Sie, einige Encoder jedoch nicht. Wenn Sie zum Beispiel eine m4a-Datei mit itunes player erstellen, indem Sie einfach mit der rechten Maustaste klicken und "Create AAC Version" wählen, wird eine m4a-Datei erstellt, die für das Streaming optimiert ist.
Sie können es überprüfen, indem Sie Ссылка
verwenden
Wenn Sie jedoch beispielsweise coding.com verwenden, um Ihre m4a-Dateien zu codieren, erhalten Sie eine andere Art der Codierung.
Beide funktionieren, wenn die gesamte Datei von der Festplatte abgespielt wird, aber die optimierte Version wird korrekt analysiert / gestreamt.
Nun sagt der Fehler, den Sie erhalten, dass der Parser die korrekte AudioStreamBasicDescription
von der Datei, die Sie analysieren, nicht bekommen kann, die Datei lehnt es wahrscheinlich ab, die Bitrate anzugeben ...
Werfen Sie einen Blick auf diesen Code, um besser mit den m4a-Typen umzugehen Ссылка
Tags und Links objective-c ios audio-streaming audiotoolbox multipeer-connectivity