637159 ランダム
 ホーム | 日記 | プロフィール 【フォローする】 【ログイン】

まっさんの日記

まっさんの日記

【毎日開催】
15記事にいいね!で1ポイント
10秒滞在
いいね! --/--
おめでとうございます!
ミッションを達成しました。
※「ポイントを獲得する」ボタンを押すと広告が表示されます。
x
X

PR

カレンダー

バックナンバー

キーワードサーチ

▼キーワード検索

フリーページ

コメント新着

林小遠@ Re:スマホのセンサーについて(12/26) 失礼致しました。Amazonで日本のラズベリ…
2024.11.03
XML
カテゴリ:仕事





ReplayGainとは、
音声ファイルを再生する際に音量を揃える機能です。

音楽で彩るタスク管理アプリ(Assistants)
実装したのですが、イマイチだったのでお蔵入り。

検証で実装したものを残します。
検証なので、コードは汚いです。

@SuppressLint("DefaultLocale")
public Uri gain(String source, Uri uri) {
ExternalStorageReader externalStorageReader = new ExternalStorageReader(context);
String out = context.getExternalFilesDir(Environment.DIRECTORY_DOCUMENTS) + File.separator + source;
String in = FFmpegKitConfig.getSafParameterForRead(context, uri);
FFmpegSession session = FFmpegKit.execute(String.format(Locale.getDefault(), "-i '%s' -vn -af volumedetect -f null -", in));
String msg = session.getOutput();
int S = msg.indexOf("max_volume:");
int E = S > 0 ? msg.indexOf("dB", S) : 0;
String info = E > 0 ? msg.substring(S + 11, E) : "";
float gain = !info.isEmpty() ? Float.parseFloat(info) : 0;
if (gain < 0 && !externalStorageReader.setFile(source, 0)) {
in = FFmpegKitConfig.getSafParameterForRead(context, uri);
session = FFmpegKit.execute(String.format(Locale.getDefault(), "-i '%s' -f mp3 -acodec libmp3lame -ab %d -ar %d -af 'volume=%.1fdB' -y '%s'", in, mainActivity.MP3AB, mainActivity.MP3AR, -gain, out));
if (ReturnCode.isSuccess(session.getReturnCode())) {
return externalStorageReader.getUri(source, 0);
} else {
Log.d(TAG, session.getOutput());
Log.d(TAG, String.format("FFmpegKit: %s trace: %s(%s)", session.getState(), session.getFailStackTrace(), session.getReturnCode()));
}
}
return uri;
}

ffmpegを使用します。
まず、volumedetect でmax_gainを取得して、
負の場合に、
volumeをmax_gainの逆数で変換を掛けます。
これで、gain = 0dbのファイルができます。

関数自体は、対象がファイルのUriを渡して、
変換できたら変換後のファイルのUriを返却します。

なんとなく、音量が上がったような気がするレベルで
極端に音量が低い場合でしか、気が付かないと思います。

gain = 0dbでなく、更に大きくできますが、
音が割れるのでオススメしません、

アンプを使わずに、ボリュームだけMAXにした時に近い感じです(笑)

ポチッとして頂けると、
次のコンテンツを作成する励みになります♪
ブログランキング・にほんブログ村へ






お気に入りの記事を「いいね!」で応援しよう

最終更新日  2024.11.03 14:19:07
コメント(0) | コメントを書く
[仕事] カテゴリの最新記事



© Rakuten Group, Inc.
X