iPhone: Erhalte die Dauer einer Audiodatei

7

Wie lässt sich die Dauer einer Audiodatei am einfachsten erreichen?

Ich könnte ein Objekt von AVAudioPlayer erstellen, es mit URL initialisieren und dann die Dauer abrufen, aber dieser Weg ist zu lang. Gibt es einen einfacheren Weg?

Danke.

    
Ilya Suzdalnitski 07.08.2009, 19:43
quelle

8 Antworten

8

Sie können die Funktionen der Audiodateidienste verwenden. Es gibt eine Eigenschaft, die Ihnen die geschätzte Dauer geben soll. Code:

%Vor%

Sie können die Dokumentation hier

überprüfen     
pgb 07.08.2009, 20:01
quelle
12

Korrekter Code ist

%Vor%

outDataSize sollte Float64 nicht UInt64 sein.

    
Farhad Malekpour 20.07.2012 09:53
quelle
2

Wenn Sie etwas über die fragliche Audiodatei (Samplerate, Bittiefe, Kanalanzahl) wissen und es sich um ein unkomprimiertes Format (WAV / AIFF) handelt, können Sie die / approximate / duration aus der Dateigröße berechnen:

length_in_seconds = (file_length-guess_100_bytes_for_header) / (Abtastrate * (bitdepth * channel_count / 8))

    
Dave Gamble 07.08.2009 19:59
quelle
2

Das hängt vom Dateityp ab. Wenn es sich um eine WAV-Datei handelt, können Sie den Header der Datei suchen und die Wiedergabedauer bestimmen. Wenn es ein komprimiertes Format ist (* .mp3 usw.), bleiben Sie besser bei der Methode, die Sie erwähnt haben.

    
MusiGenesis 07.08.2009 20:00
quelle
2

Die Kombination von AVAudioPlayer mit Swift wird so einfach wie (Ich migriere unten eine Realm-Tabelle, aber Sie bekommen die Idee):

%Vor%     
Mazyod 30.10.2015 20:50
quelle
1

Falls jemand hier landet und nach einer Möglichkeit sucht, die Dauer für Audio- und Videodateien zu erhalten, werfen Sie einen Blick auf diese Antwort auf einen anderen Beitrag, der stattdessen AVAsset verwendet:

Ссылка

Die Verwendung von AudioFileGetProperty (wie die anderen beiden Hauptantworten hier), um die Dauer von A / V-Dateien zu erhalten, funktionierte nicht für einige .mov Dateien auf meinem Gerät (das Ergebnis war immer 0) ), während die Lösung mit AVAsset die Dauer für alle Audio- und Videodateien auf meinem Gerät hat.

(Interessanterweise war jedoch die Dauer beider Lösungen manchmal 1 Sekunde länger als die, die in der Benutzeroberfläche eines tatsächlichen AVAudioPlayer angezeigt wurde. Am wahrscheinlichsten verwendet AVAudioPlayer eine nicht standardmäßige Rundungsroutine für die angezeigte Dauer. )

    
newenglander 15.08.2013 16:46
quelle
1

Beispielcode aus der Antwort Wie kommt man hin? die Dauer einer Audiodatei in iOS? . Dies ist die beste Antwort.

AVURLAsset* audioAsset = [AVURLAsset URLAssetWithURL:audioFileURL options:nil]; CMTime audioDuration = audioAsset.duration; float audioDurationSeconds = CMTimeGetSeconds(audioDuration);

    
Nazir 30.10.2013 16:07
quelle
1
%Vor%     
Ishwar Hingu 11.08.2016 12:16
quelle

Tags und Links