Aufnahmedateien des öffentlichen WeChat-Kontos abspielen und speichern (AMR-Dateien in MP3 konvertieren)

Aufnahmedateien des öffentlichen WeChat-Kontos abspielen und speichern (AMR-Dateien in MP3 konvertieren)

Audio-Transkodierungstool, das hauptsächlich zum Konvertieren des WeChat-Voice-AMR-Formats in das MP3-Format verwendet wird, sodass es im Audio-Tag von HTML5 abgespielt werden kann

1. Rufen Sie die von WeChat bereitgestellte Schnittstelle auf, um den InputStream-Bytestream der Aufzeichnung abzurufen

öffentlicher InputStream getInputStream(String mediaId) {
    InputStream ist = null;
    versuchen {
        Zeichenfolge URL_DOWNLOAD_TEMP_MEDIA = „https://api.weixin.qq.com/cgi-bin/media/get?access_token=ACCESS_TOKEN&media_id=MEDIA_ID“;
        String url = URL_DOWNLOAD_TEMP_MEDIA.replace("ACCESS_TOKEN", "Schreiben Sie Ihren eigenen Code, um accessToken zu erhalten").replace("MEDIA_ID", mediaId);
        URL urlGet = neue URL(URL);
        HttpURLConnection http = (HttpURLConnection) urlGet.openConnection();
        http.setRequestMethod("GET"); // Muss eine GET-Anfrage sein http.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
        http.setDoOutput(true);
        http.setDoInput(true);
        System.setProperty("sun.net.client.defaultConnectTimeout", "30000"); // Verbindungs-Timeout 30 Sekunden System.setProperty("sun.net.client.defaultReadTimeout", "30000"); // Lese-Timeout 30 Sekunden http.connect();
        // Datei abrufen und in einen Byte-Stream konvertieren = http.getInputStream();
    } Fang (Ausnahme e) {
        e.printStackTrace();
    }
    Rückkehr ist;
}

2. Speichern Sie den erhaltenen Bytestream als AMR-Datei

öffentliche String downloadMediaId(HttpServletRequest-Anforderung, String mediaId) {
    Zeichenfolge relfilePath = null;
    InputStream inputStream = getInputStream(Medien-ID);
    FileOutputStream fileOutputStream = null;
    versuchen {
        //Pfad zum Speichern der Serverressource String savePath = request.getSession().getServletContext().getRealPath("/") + "upload/" + DateUtil.getYear() + "/wxmedia/audio/";
        Speicherpfad = Speicherpfad + "audio/"; 
        String-Dateiname = String.valueOf(System.currentTimeMillis()) + ".amr";
        relfilePath = "upload/" + DateUtil.getYear() + "/wxmedia/audio/" + Dateiname;
        Datei Datei = neue Datei (Speicherpfad);
        wenn (!file.exists()) {
            Datei.mkdirs();
        }
        byte[] daten = neues byte[1024];
        int länge = 0;
        fileOutputStream = neuer FileOutputStream(savePath + Dateiname);
        während ((Länge = inputStream.read(Daten)) != -1) {
            // Bestimmen Sie, ob das Ergebnis falsch ist, if (new String(data).indexOf("errmsg") > -1) {
                gibt null zurück;
            }
            fileOutputStream.write(Daten, 0, Länge);
        }
    } Fang (IOException e) {
        e.printStackTrace();
    Endlich
        wenn (inputStream != null) {
            versuchen {
                inputStream.schließen();
            } Fang (IOException e) {
                e.printStackTrace();
            }
        }
        wenn (fileOutputStream != null) {
            versuchen {
                fileOutputStream.schließen();
            } Fang (IOException e) {
                e.printStackTrace();
            }
        }
    }
    gibt relfilePath zurück;
}

3. Konvertieren Sie die gespeicherte AMR-Datei in eine MP3-Datei

public void amrToMp3(String Quellpfad, String Zielpfad) {
    Dateiquelle = neue Datei (Quellpfad);
    Dateiziel = neue Datei (Zielpfad);
    AudioUtils.amrToMp3(Quelle, Ziel);
}

4. Erforderliche JAR-Paketabhängigkeiten

<!--amr-Datei in Audio-Map-Datei-->
<Abhängigkeit>
    <groupId>com.github.dadiyang</groupId>
    <artifactId>Jave</artifactId>
    <version>1.0.3</version>
</Abhängigkeit>

Tools zur Audiotranskodierung

Es unterstützt Linux-/Windows-/Mac-Plattformen, da es auf der Modifikation des JAVE-Projekts basiert und JAVE auf ffmpeg basiert, sodass es auf die Konvertierung aller von ffmpeg unterstützten Dateiformate angewendet werden kann. Weitere Einzelheiten finden Sie in der offiziellen JAVE-Dokumentation.

Prinzip

Bestimmen Sie während der Initialisierung die aktuelle Betriebsumgebung, kopieren Sie die entsprechende ausführbare ffmpeg-Datei im Bin-Verzeichnis in das temporäre Verzeichnis und führen Sie den entsprechenden Transcodierungsbefehl von ffmpeg entsprechend dem Dateityp und der Konfiguration über Runtime.getRuntime ().exec (cmd) aus.

Probleme mit dem JAVE-Projekt

ffmpeg hängt von der Betriebsumgebung ab. Das JAVE-Projekt kapselt ffmpeg. Durch die oben genannten Prinzipien kann Java ffmpeg aufrufen und unterstützt plattformübergreifend.

  • Das Projekt ist alt und wird nicht mehr gepflegt. Die neueste Version der offiziellen Website wurde 2009 veröffentlicht. Das darauf basierende ffmpeg ist bereits veraltet und kann in vielen Fällen nicht verwendet werden.
  • EncoderException: Stream-Mapping
  • Es gibt kein veröffentlichtes Maven-Repository und JAVE selbst ist kein Maven-Projekt
  • Wird auf dem Mac nicht unterstützt

Merkmale dieses Projekts

Dieses Projekt wurde erstellt, um die oben genannten Probleme zu lösen.

  • Dies ist ein Maven-Projekt und wurde im zentralen Repository veröffentlicht.
  • Die Verwendbarkeit der ausführbaren ffmpeg-Datei, von der das Projekt abhängt, wurde überprüft (im Komponententest wird eine einfache Überprüfungsmethode bereitgestellt).
  • Die EncoderException wurde behoben: Streammapping beim Konvertieren von AMR in MP3
  • Unterstützt Linux/Windows/Mac-Plattformen

Erweiterungen

Wenn das Programm die ausführbare ffmpeg-Datei nicht durch Kopieren der Ressourcendatei abrufen kann oder das integrierte ffmpeg Ihr Betriebssystem nicht unterstützt, können Sie das Verzeichnis der verfügbaren, in Ihrem System installierten ffmpeg-Dateien über Umgebungsvariablen oder durch Festlegen von System.setProperty("ffmpeg.home", "Verzeichnis, in dem sich die ausführbare ffmpeg-Datei befindet") in Java angeben.

Wie beispielsweise System.setProperty("ffmpeg.home", "/usr/local/bin/")

Dies ist das Ende dieses Artikels über die Wiedergabe und Aufbewahrung von WeChat-Aufnahmedateien für öffentliche Konten (Konvertieren von AMR-Dateien in MP3). Weitere relevante Inhalte zu WeChat-Aufnahmen für öffentliche Konten finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den verwandten Artikeln weiter unten. Ich hoffe, dass jeder 123WORDPRESS.COM in Zukunft unterstützen wird!

Das könnte Sie auch interessieren:
  • PHP konvertiert AMR-Audiodateien in das MP3-Format
  • Python verwendet ffmpy, um Audio im AMR-Format in das MP3-Format zu konvertieren – Beispiel
  • asp.net Audiokonvertierung .amr zu .mp3 (mithilfe der ffmpeg-Konvertierungsmethode)
  • asp.net Audiokonvertierung .amr zu .mp3 (mit der Qiniu-Konvertierungsmethode)

<<:  Tutorial zur Installation der entpackten Version von mysql5.7 auf CentOS 7

>>:  Tutorial zur Installation des Tomcat-Servers unter Windows

Artikel empfehlen

Implementierung der Ausführung von SQL Server mit Docker

Jetzt ist .net Core plattformübergreifend und jed...

MySQL verwendet Aggregatfunktionen zum Abfragen einer einzelnen Tabelle

Aggregatfunktionen Wirkt auf einen Datensatz ein ...

MySQL: MySQL-Funktionen

1. Integrierte Funktionen 1. Mathematische Funkti...

Erfahren Sie in fünf Minuten mehr über React Routing

Inhaltsverzeichnis Was ist Routing Grundlegende V...

CentOS 7.5 stellt Varnish-Cache-Serverfunktion bereit

1. Einführung in Varnish Varnish ist ein leistung...

MySQL-Serververbindung, Trennung und cmd-Bedienung

Verwenden Sie den Befehl mysql, um eine Verbindun...

Beschreiben Sie kurz den Unterschied zwischen MySQL und Oracle

1. Oracle ist eine große Datenbank, während MySQL...

MySQL Workbench herunterladen und verwenden Tutorial detaillierte Erklärung

1. MySQL Workbench herunterladen Workbench ist ei...

js und jquery, um einen Tab-Statusleisten-Umschalteffekt zu erzielen

Heute werden wir einen einfachen Fall durchgehen ...

Fallstricke bei langsamen MySQL-Abfragen

Inhaltsverzeichnis 1. Langsame Abfragekonfigurati...