オーディオトランスコーディングツール。主にWeChat音声のAMR形式をMP3形式に変換し、HTML5のオーディオタグで再生できるようにするために使用されます。 1. WeChatが提供するインターフェースを呼び出して、録音のInputStreamバイトストリームを取得します。 パブリックInputStream getInputStream(String mediaId) { InputStream は null です。 試す { 文字列 URL_DOWNLOAD_TEMP_MEDIA = "https://api.weixin.qq.com/cgi-bin/media/get?access_token=ACCESS_TOKEN&media_id=MEDIA_ID"; 文字列 url = URL_DOWNLOAD_TEMP_MEDIA.replace("ACCESS_TOKEN", "accessToken を取得するには独自のコードを記述してください").replace("MEDIA_ID", mediaId); URL urlGet = 新しいURL(url); HttpURLConnection http = (HttpURLConnection) urlGet.openConnection(); http.setRequestMethod("GET"); // GETリクエストである必要があります http.setRequestProperty("Content-Type", "application/x-www-form-urlencoded"); 出力を true に設定します。 入力を true に設定します。 System.setProperty("sun.net.client.defaultConnectTimeout", "30000"); // 接続タイムアウト 30 秒 System.setProperty("sun.net.client.defaultReadTimeout", "30000"); // 読み取りタイムアウト 30 秒 http.connect(); // ファイルを取得してバイト ストリームに変換します is = http.getInputStream(); } キャッチ (例外 e) { e.printStackTrace(); } 戻り値は; } 2. 取得したバイトストリームをamrファイルとして保存する パブリック文字列downloadMediaId(HttpServletRequestリクエスト、文字列mediaId) { 文字列 relfilePath = null; 入力ストリーム inputStream = getInputStream(mediaId); ファイル出力ストリーム ファイル出力ストリーム = null; 試す { // サーバー リソース保存パス String savePath = request.getSession().getServletContext().getRealPath("/") + "upload/" + DateUtil.getYear() + "/wxmedia/audio/"; savePath = savePath + "audio/"; 文字列ファイル名 = String.valueOf(System.currentTimeMillis()) + ".amr"; relfilePath = "upload/" + DateUtil.getYear() + "/wxmedia/audio/" + ファイル名; ファイル file = new File(savePath); ファイルが存在する場合(){ ファイル.mkdirs(); } バイト[]データ = 新しいバイト[1024]; 長さ = 0; fileOutputStream = 新しい FileOutputStream(savePath + ファイル名); ((len = inputStream.read(data)) != -1) の間 { // 結果が間違っているかどうかを判定します if (new String(data).indexOf("errmsg") > -1) { null を返します。 } fileOutputStream.write(データ、0、長さ); } } キャッチ (IOException e) { e.printStackTrace(); ついに 入力ストリームが null の場合 試す { 入力ストリームを閉じます。 } キャッチ (IOException e) { e.printStackTrace(); } } ファイル出力ストリームが null ではない場合 試す { ファイル出力ストリームを閉じます。 } キャッチ (IOException e) { e.printStackTrace(); } } } relfilePath を返します。 } 3. 保存したamrファイルをmp3ファイルに変換する パブリック void amrToMp3(文字列ソースパス、文字列ターゲットパス) { ファイルソース = new File(sourcePath); ファイルターゲット = new File(targetPath); AudioUtils.amrToMp3(ソース、ターゲット); } 4. 必要なjarパッケージの依存関係 <!--amr ファイルからオーディオ マップ ファイルへ--> <依存関係> <groupId>com.github.dadiyang</groupId> <artifactId>ジャベ</artifactId> <バージョン>1.0.3</バージョン> </依存関係> オーディオトランスコーディングツールこれは JAVE プロジェクトの修正に基づいており、JAVE は ffmpeg に依存しているため、Linux/Windows/Mac プラットフォームをサポートしており、ffmpeg がサポートするすべてのファイル形式の変換に適用できます。詳細については、JAVEの公式ドキュメントを参照してください。 原理初期化中に、現在の動作環境を判別し、bin ディレクトリ内の対応する ffmpeg 実行可能ファイルを一時ディレクトリにコピーし、ファイルの種類と構成に応じて Runtime.getRuntime().exec(cmd) を介して ffmpeg の対応するトランスコーディング コマンドを実行します。 JAVE プロジェクトの問題ffmpeg は動作環境に依存します。JAVE プロジェクトは ffmpeg をカプセル化します。上記の原則により、Java が ffmpeg を呼び出すことが可能になり、クロスプラットフォームがサポートされます。
このプロジェクトの特徴このプロジェクトは上記の問題を解決するために作成されました。
拡張機能プログラムがリソース ファイルをコピーして ffmpeg 実行可能ファイルを取得できない場合、または組み込みの ffmpeg がオペレーティング システムをサポートしていない場合は、環境変数を使用するか、Java で System.setProperty("ffmpeg.home", "ffmpeg 実行可能ファイルが配置されているディレクトリ") を設定することで、システムにインストールされている使用可能な ffmpeg ファイルのディレクトリを指定できます。 System.setProperty("ffmpeg.home", "/usr/local/bin/") など WeChatパブリックアカウント録音ファイルの再生と保存(amrファイルをmp3に変換)に関するこの記事はこれで終わりです。より関連性の高いWeChatパブリックアカウント録音コンテンツについては、123WORDPRESS.COMで以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後も123WORDPRESS.COMを応援していただければ幸いです。 以下もご興味があるかもしれません:
|
<<: CentOS 7 に mysql5.7 の解凍バージョンをインストールするチュートリアル
>>: Windows での Tomcat サーバーのインストールに関するチュートリアル
CSS の 2D 変換を使用すると、移動、回転、拡大縮小、変形などの基本的な変換操作を 2 次元空間...
目次序文jQuery 以外の場合は何を使うのでしょうか? DOMとイベントAJAX リクエスト要約す...
React Native は、現在人気のオープンソース JavaScript ライブラリ React...
多くの場合、サーバーでスクリプトを定期的に実行して操作をトリガーする必要があります。たとえば、Qin...
目次導入説明書実際の経験長所と短所総括する導入mysqlpump は mysqldump の派生です...
概要プロトタイプ パターンは、プロトタイプ インスタンスによって作成されるオブジェクトの型を指し、こ...
目次1. 原則の概要クエリキャッシュシステム変数1. クエリキャッシュを持つ2. クエリキャッシュ制...
この記事の例では、Vueスライダー検証の実装を共有しています。コードは次のとおりです。 <テン...
目次1. データベースのマスター/スレーブ分類: 2. MySQL マスタースレーブの紹介3. マス...
テスト サーバーにログインするたびに、必ず ssh ログインのパスワードを入力する必要があります。ロ...
序文場合によっては、次の図のような浮動効果の要件が必要になります。 成し遂げる標準的な通常の状況では...
序文:年末です。データベースを検査する時期ではないでしょうか?一般的に、検査では、パスワードの複雑さ...
目次ステップ1: フレームワークを構築するステップ2 構築されたPromiseフレームワークに入力す...
さまざまな色の16進コード表[パート1] 赤とピンク、およびそれらの 16 進コード。 #99003...
目次序文1. 準備2. インストール3. 環境変数を設定する1. 「新規」をクリックすると、ポップア...