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. PrinzipBestimmen 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-Projektffmpeg 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.
Merkmale dieses ProjektsDieses Projekt wurde erstellt, um die oben genannten Probleme zu lösen.
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:
|
<<: Tutorial zur Installation der entpackten Version von mysql5.7 auf CentOS 7
>>: Tutorial zur Installation des Tomcat-Servers unter Windows
konsole.log( [] == ![] ) // wahr console.log( {} ...
Inhaltsverzeichnis 1. Einführung in PXC 1.1 Einfü...
Klicken Sie auf die Schaltfläche, um den Text in ...
Was wir jetzt simulieren, ist ein Master-Slave-Sy...
Inhaltsverzeichnis Verschiedene Möglichkeiten zum...
Ob der a-Tag eine neue Seite öffnet: (1) Baidu Enc...
1) Einführung in den Cache-Mechanismus Um die Lei...
MySQL 5.7.20 Zip-Installation, der spezifische In...
Docker ist eine Open-Source-Container-Engine, mit...
Inhaltsverzeichnis 1. Laden Sie die virtuelle Mas...
Wir alle wissen, dass die in der Front-End-Entwic...
Erstellen Sie in MySQL eine Ansicht für zwei oder...
Bevor wir über die CSS-Priorität sprechen, müssen...
Ich verwende tengine, das Installationsverzeichni...
01. Befehlsübersicht Basisname - entfernt Verzeic...