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

Lokale MySQL-Installation und Problemlösung

Vorwort Dieser Artikel ist ziemlich ausführlich u...

Erstellen eines Redis-Clusters auf Docker

Inhaltsverzeichnis 1. Ziehen Sie das Bild 2. Erst...

Angular Dependency Injection erklärt

Inhaltsverzeichnis Überblick 1. Abhängigkeitsinje...

JS realisiert die automatische Wiedergabe der Timeline

Vor kurzem habe ich einen solchen Effekt implemen...

So erstellen Sie einen MySQL-Cluster mit hoher Verfügbarkeit und Leistung

Inhaltsverzeichnis Was ist MySQL NDB Cluster? Vor...

Mehrere Grundsätze für die Produktdesign-Referenz auf Websites

In der folgenden Analyse geht es um Produktdesign...

Detaillierte Erklärung der KeepAlive-Anwendungsfälle in Vue

Bei der Entwicklung ist es häufig erforderlich, d...

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

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

Fähigkeiten zur Erstellung von Webformularen

Tatsächlich haben die drei obigen Tabellen alle d...

MySQL Deep Paging (wie man schnell Millionen von Daten paginiert)

Inhaltsverzeichnis Vorwort Fall Optimierung Zusam...

VMware ESXI-Servervirtualisierungscluster

Inhaltsverzeichnis Zusammenfassung Umgebung und W...