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

Ein wenig bekanntes JS-Problem: [] == ![] ist wahr, aber {} == !{} ist falsch

konsole.log( [] == ![] ) // wahr console.log( {} ...

So erstellen Sie einen MySQL PXC-Cluster

Inhaltsverzeichnis 1. Einführung in PXC 1.1 Einfü...

Zusammenfassung der Methoden zum Löschen des Cache im Linux-System

1) Einführung in den Cache-Mechanismus Um die Lei...

MySQL 5.7.20 Zip-Installations-Tutorial

MySQL 5.7.20 Zip-Installation, der spezifische In...

Beispiele für die Verwendung von Docker und Docker-Compose

Docker ist eine Open-Source-Container-Engine, mit...

So erstellen Sie eine Ansicht für mehrere Tabellen in MySQL

Erstellen Sie in MySQL eine Ansicht für zwei oder...

Die CSS-Priorität der Webseite wird für Sie ausführlich erklärt

Bevor wir über die CSS-Priorität sprechen, müssen...

So verwenden Sie den Linux-Befehl „basename“

01. Befehlsübersicht Basisname - entfernt Verzeic...