Heim >Backend-Entwicklung >Golang >Berechnen der Ogg-Audiodauer in Go: Eine Schritt-für-Schritt-Anleitung
Ich habe versucht, Discord zu klonen und habe herausgefunden, dass sie Ogg-Formate für Audio verwenden (glaube ich). Ich versuche, die Audiodauer in der Datenbank zu speichern.
Eine Stackoverflow-Lösung zum Ermitteln der OGG-Audiodauer fand ich faszinierend. Der Ansatz besteht darin, bis zum Ende der Datei zu suchen, den letzten Ogg-Seitenkopf zu finden und seine Granulatposition zu lesen.
func getOggDurationMs(reader io.Reader) (int64, error) { // Read the entire Ogg file into a byte slice data, err := io.ReadAll(reader) if err != nil { return 0, fmt.Errorf("error reading Ogg file: %w", err) } // Search for the "OggS" signature and calculate the length var length int64 for i := len(data) - 14; i >= 0 && length == 0; i-- { if data[i] == 'O' && data[i+1] == 'g' && data[i+2] == 'g' && data[i+3] == 'S' { length = int64(readLittleEndianInt(data[i+6 : i+14])) } } // Search for the "vorbis" signature and calculate the rate var rate int64 for i := 0; i <p>Ich habe beschlossen, es hier zu teilen, ich finde die Umsetzung einfach sehr cool und helfe vielleicht einigen anderen Leuten weiter</p>
Das obige ist der detaillierte Inhalt vonBerechnen der Ogg-Audiodauer in Go: Eine Schritt-für-Schritt-Anleitung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!