微信公衆番号録音ファイルは自分が開発したサーバに保存する(amrファイルはmp 3に転送する)
4607 ワード
主にマイクロ信号音声amrフォーマットをmp 3フォーマットに変換してhtml 5のaudioラベルで再生するオーディオトランスコードツール
3.保存したamrファイルをmp 3ファイルに変換
4.必要なjarパッケージ依存
オーディオトランスコードツール
Linux/Windows/Macプラットフォームをサポート
JAVEプロジェクトによる修正であり、JAVEはffmpegに依存するため、すべてのffmpegでサポートされているファイルフォーマットの変換に適用できます.具体的にはJAVE公式ドキュメントをご覧いただけます
げんり初期化時に現在の実行環境を判断し、binディレクトリの対応するffmpeg実行可能ファイルを一時ディレクトリの にコピーする.ファイルの種類と構成によってRuntimeを通過する.getRuntime().exec(cmd)はffmpeg対応のトランスコードコマンド を実行する
JAVEプロジェクトの問題
ffmpegは実行環境に依存しており、JAVEプロジェクトはffmpegをカプセル化しており、javaがffmpegを呼び出し、プラットフォーム間でサポートすることができるようにしています.プロジェクトは古くてメンテナンスされていません.公式サイトの最近のバージョンは2009年に発表されたもので、依存するffmpegはすでに時代遅れで、多くの場合使えない. トランスコード異常報告EncoderException:Stream mapping はmaven倉庫を公開しておらず、JAVE自体もmavenプロジェクトではありません mac はサポートされていません
本プロジェクトの特徴
本プロジェクトは上記の問題を解決するために生まれた.これはmavenプロジェクトであり、中央倉庫に公開されています. プロジェクト依存ffmpeg実行可能ファイルは検証済みで使用可能(ユニットテストでは簡単な検査方法が提供されている) amr回転mp 3に現れるEncoderException:Stream mapping を解決 Linux/Windows/Macプラットフォーム をサポート
拡張
プログラムがリソースファイルをコピーすることでffmpegの実行可能ファイルを取得できない場合、または内蔵ffmpegが使用するオペレーティングシステムをサポートしていない場合
環境変数またはjavaに
例えば
1. InputStream
public InputStream getInputStream(String mediaId) {
InputStream is = null;
try {
String 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", " accessToken").replace("MEDIA_ID", mediaId);
URL urlGet = new URL(url);
HttpURLConnection http = (HttpURLConnection) urlGet.openConnection();
http.setRequestMethod("GET"); // get
http.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
http.setDoOutput(true);
http.setDoInput(true);
System.setProperty("sun.net.client.defaultConnectTimeout", "30000");// 30
System.setProperty("sun.net.client.defaultReadTimeout", "30000"); // 30
http.connect();
// byte
is = http.getInputStream();
} catch (Exception e) {
e.printStackTrace();
}
return is;
}
2. amr
public String downloadMediaId(HttpServletRequest request, String mediaId) {
String relfilePath = null;
InputStream inputStream = getInputStream(mediaId);
FileOutputStream fileOutputStream = null;
try {
//
String savePath = request.getSession().getServletContext().getRealPath("/") + "upload/" + DateUtil.getYear() + "/wxmedia/audio/";
savePath = savePath + "audio/";
String filename = String.valueOf(System.currentTimeMillis()) + ".amr";
relfilePath = "upload/" + DateUtil.getYear() + "/wxmedia/audio/" + filename;
File file = new File(savePath);
if (!file.exists()) {
file.mkdirs();
}
byte[] data = new byte[1024];
int len = 0;
fileOutputStream = new FileOutputStream(savePath + filename);
while ((len = inputStream.read(data)) != -1) {
//
if (new String(data).indexOf("errmsg") > -1) {
return null;
}
fileOutputStream.write(data, 0, len);
}
} catch (IOException e) {
e.printStackTrace();
} finally {
if (inputStream != null) {
try {
inputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (fileOutputStream != null) {
try {
fileOutputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return relfilePath;
}
3.保存したamrファイルをmp 3ファイルに変換
public void amrToMp3(String sourcePath, String targetPath) {
File source = new File(sourcePath);
File target = new File(targetPath);
AudioUtils.amrToMp3(source, target);
}
4.必要なjarパッケージ依存
com.github.dadiyang
jave
1.0.3
オーディオトランスコードツール
Linux/Windows/Macプラットフォームをサポート
JAVEプロジェクトによる修正であり、JAVEはffmpegに依存するため、すべてのffmpegでサポートされているファイルフォーマットの変換に適用できます.具体的にはJAVE公式ドキュメントをご覧いただけます
げんり
JAVEプロジェクトの問題
ffmpegは実行環境に依存しており、JAVEプロジェクトはffmpegをカプセル化しており、javaがffmpegを呼び出し、プラットフォーム間でサポートすることができるようにしています.
本プロジェクトの特徴
本プロジェクトは上記の問題を解決するために生まれた.
拡張
プログラムがリソースファイルをコピーすることでffmpegの実行可能ファイルを取得できない場合、または内蔵ffmpegが使用するオペレーティングシステムをサポートしていない場合
環境変数またはjavaに
System.setProperty("ffmpeg.home", "ffmpeg ")
を設定することで、システムにインストールできるffmpegファイルのディレクトリを指定できます.例えば
System.setProperty("ffmpeg.home", "/usr/local/bin/")