問題タブ [vorbis]

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.

0 投票する
1 に答える
38 参照

format - ページを Ogg ファイルに挿入するときに、シーケンス番号を処理するより良い方法はありますか?

Ogg ビットストリーム フォーマットは、シーケンシャル ページで構成されます。各ページには、メタデータ (ページのチェックサム、ページの長さなど) を含むヘッダーがあります。そのようなメタデータの 1 つがページ シーケンス番号です。これは、ストリームの最初のページで 0 から始まり、後続のページごとに 1 ずつ増加します (欠落しているページについてストリームをチェックできるようにします)。

Ogg ストリームに存在できるページの 1 つは、Vorbis コメント ページです。このページにはVorbis コメント ブロックが含まれています。これは通常、タイトル、アーティスト、アルバムなどのメディア タグをエンコードするために使用されます。

私が取り組んでいるプロジェクトでは、Vorbis コメントを Ogg ファイルに追加できるようにする必要があります。コメント ページが既に存在する場合、コメントを編集するには、コメントを含むページのメタデータ (長さ、チェックサムなど) を変更するだけで済みます。ただし、コメント ページを作成する必要がある場合は、適切なシーケンス番号を割り当てる必要があります。つまり、それ以降のすべてのページでシーケンス番号をインクリメントする必要があります。

足りないもの、またはページを追加するためのより良い方法はありますか? それとも、各シーケンス番号を変更することがページを挿入する唯一の方法ですか?

0 投票する
1 に答える
2411 参照

java - ogg vorbisファイルjavaをデコードするには?

lwjgl と openal を使い始めたので、ogg vorbis ファイルをデコードして openal で再生できるようにしたいと考えています。私の質問は次のとおりです: Java から ogg ファイルをデコードし、周波数、pcm データなどを取得して、openal に送信して再生できるようにするにはどうすればよいですか? jorbisがこれを行うのを見つけましたが、使い方が難しすぎて、オンラインのチュートリアルはちょっと面倒です。alutLoadWavFromFile のようなものを考えていましたが、ogg(および Java) 用です。

ありがとう!

編集:わかりました、質問を明確にします。ogg ファイルをデコードしたい。そして、openal にデータを送信します。しかし、私が行う方法がわからない唯一の部分は、デコード部分です。

0 投票する
1 に答える
150 参照

c - 15 のオーディオ トラックを 50 ミリ秒未満のレイテンシで同時に再生しますか?

要約すると、私の質問は次のとおりです。15 の非可逆圧縮オーディオ トラックをオンザフライで同時に 50 ミリ秒未満の遅延で途切れることなくデコードして再生することは可能ですか?

バックグラウンド

私が作成しているゲーム用にプレーン C でサウンド ライブラリを作成しています。50 ミリ秒未満のレイテンシで、最大 15 のオーディオ トラックを一度に再生したいと考えています。

現時点では、このライブラリは生の PCM ファイル (48000Hz パックの 16 ビット サンプル) を再生でき、15 のサウンドを一度に 45 ミリ秒のレイテンシで途切れることなく最小限の CPU 使用率で簡単に再生できます。これは私の比較的古い Intel Q9300 + SSD マシンにあります。

生のオーディオ ファイルは巨大なので、opusfile ( https://mf4.xiph.org/jenkins/view/opus/job/opusfile-unix/ws/doc/html/index ) を使用して OPUS ファイルの再生をサポートするようにライブラリを拡張しました。 .html )。オーディオ ファイルが 200MB 以上を消費することなく、一度に 15 のサウンドを再生できることを期待していました。私がどれほど間違っていたか - 吃音やその他のバッファー アンダーランの症状が聞こえる前に、一度に 3 つまたは 4 つの OPUS トラックしか再生できませんでした。CPU 使用率も生の PCM 再生と比較して大幅に増加しました。

また、vorbisfile ( http://www.xiph.org/vorbis/doc/vorbisfile/ ) を使用して VORBIS サポートを含めてみました。オンザフライで VORBIS をデコードしても、それほど CPU 負荷がかからないのではないかと考えました。VORBIS は OPUS より少し優れています - スタッターが聞こえるようになる前に一度に 5 つまたは 6 つのサウンドを再生できます (VORBIS の方がデコードが簡単だと思います) - しかし、生の PCM ファイルを再生するほどではありません。

低レベルの libvorbis/libopus API を掘り下げて、他のオーディオ圧縮形式を調査する前に、50 ミリ秒未満のレイテンシで途切れることなく、オンザフライで同時に 15 の非可逆圧縮オーディオ トラックをデコードして再生することは実際に実行可能ですか?ミディアムからローエンドのデスクトップコンピューターでは?

それが役立つ場合、私のサウンド ライブラリは現在、約 15 ミリ秒ごとに関数を呼び出します。これは、基本的に次のことを行います (わかりやすくするために、エラー処理と後処理は省略されています)。

助けてくれてありがとう!

0 投票する
1 に答える
969 参照

c - C で ALSA と Ogg vorbis を使用してサウンド プレーヤーを実装する

非常に単純な ogg プレーヤーを実装しようとしています。基本的に ogg ファイルを開き、それを検証し、libvorbisfile デコーダーを介して ALSA PCM に実行します。問題は、サウンド出力が非常に歪んでおり、ラグがあり、元の音楽ファイルを聞くにはかなりの想像力が必要なことです。alsa ファイルと ogg ファイルはどちらも、44100Hz のサンプルレート、2 つのチャンネル、16 ビットのサンプル サイズでエンコードされています。

ソースコードは次のとおりです。

どんな助けでも本当に役に立ちます。

0 投票する
1 に答える
275 参照

java - Android Voice Recorder app is crashed

I am working with an app that was build in Eclipse for voice recording and to play it with Giss.tv server. Now I have migrated that app code in to the Android Studio. I got many errors before successful build of this app.

Now, my code is generating apk and it is getting open in emulator as well as in device. but when I start to record voice, getting error "Unfortunately xxx has stopped" and app gets closed.

When I checked logcat for error and exception then I get below exception-

I have code from VorbisRecorder.java (https://github.com/vincentjames501/libvorbis-libogg-android/blob/master/src/org/xiph/vorbis/recorder/VorbisRecorder.java)

I tried to check input values of (line no. 511)

and values are like shown below-

"sampleRate"=44100, "numberOfChannels"=2, "quality"=0.2, "encodeFeed"= org.xiph.vorbis.recorder.VorbisRecorder$OutputStreamEncodeFeed@19b5c49c

So I am not getting why exception is get throw here even values seems valid.