問題タブ [sample-rate]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
iphone - OS X / iOS - AudioConverterFillComplexBuffer を使用したバッファのサンプル レート変換
XAL というオーディオ ライブラリの CoreAudio バックエンドを作成しています。入力バッファは、さまざまなサンプル レートにすることができます。出力用に単一のオーディオユニットを使用しています。アイデアは、オーディオ ユニットに送信する前に、バッファを変換して混合することです。
入力バッファが出力オーディオ ユニットと同じプロパティ (サンプル レート、チャンネル数など) を持っている限り、すべてが機能します。したがって、ミキシング部分が機能します。
ただし、サンプルレートとチャンネル数の変換にこだわっています。私が理解したことから、これは Audio Converter Services API で行うのが最も簡単です。なんとかコンバーターを構築しました。出力形式は出力単位形式と同じですが、コンバーター用に調整される可能性があります。
オーディオ コンバーターは正常に構築されましたが、 を呼び出すとAudioConverterFillComplexBuffer()
、出力ステータス エラー -50 が発生します。
このコードに別の注目を集めることができれば幸いです。問題はおそらく以下のどこかにありますAudioConverterNew()
。変数stream
には、着信 (および発信) バッファー データが含まれ、着信 (および発信) バッファー データstreamSize
のバイト サイズが含まれます。
私は何を間違えましたか?
iphone - 録音された音声メモはアプリケーションの速度を低下させます
私のiPhoneアプリケーションでは、ユーザーの声を録音してデバイスに保存しています。AVAudioRecorderの設定は次のとおりです。
より多くの音声を保存すると、アプリケーションはどんどん遅くなります。目的を解決するためにサンプルレートを低く保ちましたが、それでも目覚めませんでした。どうすればよいですか?
android - Linux/Android プラットフォームでオーディオ サンプリング レートを 44.1kHz より高く設定するには?
android.media.AudioRecord
使い方を間違えると動かないことに気がついたsampleRateInHz
再現する
Samsung Nexus S (by Google) で pcmrecorder を使用して、その問題を簡単に再現することもできます。
https://market.android.com/details?id=com.kohei.android.pcmrecorder
http://ko-yasui.com/home/pcmrecorder/
そのため、ハードウェア オーディオ チップが最大 96KHz をサポートしているにもかかわらず、48Khz での録音に失敗します。
http://www.wolfsonmicro.com/products/audio_hubs/WM8994/
これはデバイス/ファームウェアのバグですか、それとも既知の制限ですか?
Android プラットフォームでは約 44100Hz (24KHz でさえありません) しか保証されないことに注意してください。
http://developer.android.com/reference/android/media/AudioRecord.html
sampleRateInHz
: ヘルツで表されるサンプルレート。44100Hz は現在、すべてのデバイスで動作することが保証されている唯一のレートですが、一部のデバイスでは 22050、16000、および 11025 などの他のレートが動作する可能性があります。
ソースコード
これらの問題を再現するためのサンプル コードは、次の場所にあります。
https://github.com/rzr/rzr-android-test/blob/api-android-media/src/fr/online/rzr/test/
トラック
この制限を克服する方法は?
他の API を使用できますか? opensl、alsa、openal ? そしてどうやって ?
44100Hz以上でサンプリングできるように、ユーザー側からドライバーを再構成できますか? ( .asoundrc )
デバイスを再フラッシュ/ルート化/再起動せずにそのようなことを行うことは可能ですか?
他にこれを回避する方法は?ネイティブ コードを使用して、効率的にアップサンプリング (補間) しますか?
もっと
php - ライブ mp3 ストリームのサンプル レートをスキャンするにはどうすればよいですか?
私はFFMPEGを初めて使用し、サンプルレートのためにすべてのファイルをスキャンすることを想定しています。私はこれが初めてで、FFMPEG のスキャンを開始する方法さえ知らないため、これが何であるかはわかりません。これらのライブ ストリームは mp3 ストリーム、音楽トラックです。それが違いを生むなら、私はPHPに精通しています。
delphi - オーディオデータのサンプルレート変換用のライブラリ?
オーディオデータのサンプルレート変換に適したDelphiライブラリは何ですか?私は何かにお金を払ってもかまいません。
サンプルオーディオをリアルタイムでアップサンプリングしてダウンロードする必要があります。私は理論を理解していますが、自分のルーチンを書きたくありません。
編集:Macをサポートするもののボーナスポイント。
c++ - 2つのwavファイルを組み合わせた後の結果のwavのサンプルレート
VS2010では手動で次のことを行っています。1.「1.wav」と「2.wav」の2つのWaveファイルを読み込みます。2.2.wavを1.wavの中央に挿入します。3.結果のウェーブストリームを出力ファイル「out.wav」に書き込みます。
これで、次の構造を使用してWaveファイルを正常に読み取ることができます。
ただし、2つのwaveファイルのパラメーターの一部は同じではありません。たとえば、1.wavのSampleRateが8000、2.wavのSampleRateが44100の場合、out.wavのSampleRateはどうなりますか?
c# - オーディオ サンプル レートでリアルタイム イベントを発生させる
C# .Net を使用してリアルタイムでオーディオ合成を行っています。
出力波形が読み取られるたびに出力波形を更新する VCO クラスがあります。サウンドを再生するために、それを DirectSound セカンダリ バッファーにフィードしたいと考えています。リアルタイムで入力されていないバイト配列を使用して、これを試してみました。
ただし、VCO をリアルタイムで再生するには、ダイレクト サウンド オブジェクトに指定されたサンプル レートと同じレートで出力を読み取る必要があると思います。
リアルタイムの vco 出力をダイレクト サウンドのサンプル レートに一致させるために、1/サンプル レートでイベントを発生させるタイマーまたはコールバック タイプの関数を使用する方法はありますか?
ループを作成して StopWatch.Ticks に問い合わせることができると思いますが、その間にプロセッサの負荷がかからずに、イベントを自動的に発生させるより適切な方法はありますか?
compression - sox を使用して mp3 を圧縮する方法は?
一部の mp3 オーディオのファイル サイズを sox で縮小したいと考えています。ステレオを 1 チャンネル (つまりモノラル) に減らし、サンプル レートを下げ、ビット深度を下げることができると思います。ソックスにはそれができないようです。これは本当ですか、それとも正しく行いましたか?
audio - 正確な mp4 フレームレート (同期の問題)
オーディオを 24p から PAL ビデオに変換するオーディオ ストレッチャーを作成しています。24p は 24000 / 1001 ~= 23.976 fps PAL は正確に 25 fps です。
私が使用するアルゴリズムは非常に単純です。'm' が出力サンプル番号で 'n' が入力サンプル番号の場合、m = floor(f(n + 0.5)) で、f は速度係数です。この場合、 f = 25 / (24000 / 1001) = 1001 / 960 です。はい、基本的には 30 程度のサンプルごとにサンプルをドロップしていますが、オーディオは同期している必要があり、さらに約 2kHz のリンギングが発生します。
ただし、結果のビデオでは、映画の 1.5 時間後に、おそらく 0.1 ~ 0.3 秒 a/v 同期がずれています。
double の代わりに long double を使用して計算の精度を上げようとしましたが、同じオーディオ オフセットが得られます。とにかく、48kHz でサンプリングされた 2 時間のフィルムには 345 600 000 のサンプルがあるため、シグフィグが 9 を超えている限り、これは問題にはなりません。
元のビデオをビデオとwavファイルに分割して一緒に再生すると、それらは完全に同期したままになるため、魔法の同期データを見逃しているとは思いません.
メディア コンテナ/ストリームは、おそらくフレーム レートを有理数、つまり 24000 / 1001 として格納しないことに気付きました (間違っていたら訂正してください!)。もしそうなら、私のスピードアップ係数は正しくありません。
さまざまなプレーヤーから fps を取得しようとしました: ffmpeg 23.98、vlc 23.976023。しかし、元のビデオの正確なフレームレートを知る必要があります。見た目では、小数点以下 5 桁 (0.2 秒 / 2 時間) です。vlc の fps を接続してみましたが、まだ少しずれていました。
全体として、mp4 ファイルから正確なフレームレートを抽出する方法はありますか?
または、ストリームの同期を維持するインターリーブのようなものがここにありません。
(コードはここにあります https://raw.github.com/rhlee/speed-alpha/22c28ddcb357649efd3dedd099e159ff024657fe/speed.c誰かが興味を持っている場合.)
c - libsndfile と libsamplerate を使用したオーディオ サンプルレート コンバーター。関数 src_simple を正しく使用しているかどうかわからない
libsndfile と libsamplerate を使用して、c で単純なサンプルレート コンバーターを構築しています。libsamplerate の src_simple 関数を動作させることができないようです。コードをできるだけシンプルにするためにストライプバックし、同じサンプリング レートのサイレント オーディオ ファイルを出力するだけになりました。
それは本当に私にストレスを与え始めています。このプログラムは大学のプロジェクトであり、締め切りが迫っています。誰でも私を助けてもらえますか?