問題タブ [opus]

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 に答える
1515 参照

c# - NAudio / Opus でエンコードされたオーディオをデバイスから RTP として送信する

まず、お詫び申し上げます。私はずっと前に VB5 をいじっていましたが、何年もの間プログラマーの椅子から離れていました。私はまだ基​​本を再学習しており、最近 C#/.NET の学習を開始しました。私もこのサイトを初めて使用します。ご理解とご協力をお願いいたします。裏話はもう十分だ。

Opus のこのラッパーを使用して、ラッパー プロジェクトを独自のソリューションに追加しました。 NAudio デバイス (サウンドカード) からオーディオを積極的に取得し、サンプル エンコーダー コードを利用してエンコードされたオーディオを取得するように設定したと思います。 _playBuffer。

次のタスクは、エンコードされたデータを RDP から取得して送信し、別のマシンのクライアント アプリでデコードしてサウンド デバイスから再生できるようにすることです。

_playBuffer のデータはすぐに使えるエンコードされたデータであるという理解で正しいでしょうか? それとも、これは RTP パケットに対して別の方法で分割する必要がありますか? (ここに uLAW の例がありますが、自分のニーズに合わせて適応できるかどうかはわかりません。ダウンロードしたソース コードにはドイツ語のように見えるコメントが付けられているため、英語を第一言語として話すことも書くこともほとんどありません。めちゃくちゃ助かります。)

(私は正しい用語を使用していますか?) 今のところ、ご覧のストック コードは、彼の例のように _playBuffer データを WaveOut に戻します。理解。(「再生可能」の場合は「送信可能」です。)

もう 1 つの問題は、インターネット経由でポイント ツー ポイントのストリームをマルチキャストすることを意図していたことです。

RTPストリーム経由でデータを取得する方法を理解するのに役立つ何かに貢献していただきありがとうございます.

ああ、はい、これは最初に、チュートリアルの例から VU メーターを再作成するための試行錯誤から始まりました。つまり、名前空間名と機能する追加のコードです。

0 投票する
0 に答える
909 参照

ios - Opus for iOS、16000 サンプルレートでクラッシュ

Opus for iOS (Objective-C および C++) を使用して Voip アプリケーションを開発しています。
opus_encode メソッドでアプリケーションがクラッシュする 16000 を除いて、8000、12000、24000、および 48000 のサンプリング レートで正常に動作します。


これが私がやっていることです:


定数:


その後、m_oAudioSession.sampleRate と m_oAudioSession.IOBufferDuration から実際のサンプリング レートとバッファ期間を使用しています。これらは m_fSampleRate および m_fBufferDuration 変数に設定されます。

構成は次のとおりです。


私が行う計算は次のとおりです。


オーディオ ユニットからの読み書きは、m_sInputBuffer を使用して行われます。


Opusの作成は次のとおりです。


Opus の構成は次のとおりです。


エンコードおよびデコードするときは、次のメソッドを使用します。


アプリがデータを送信する必要がある場合:


ここに読みがあります:

inputAudioQueue は、オーディオ ユニットのコールバックから記録されたデータを含むキューです。
outputAudioQueue は、サウンドを再生するためにオーディオ ユニットのコールバックから使用されるキューです。
m_iMaxPacketSize は m_iBufferSizeBytes と同じです。


私の質問は次
のとおりです。私の計算は正しいのでしょうか?
そうでない場合、どうすれば改善できますか?
コードに間違いはありませんか?
サンプリング レートが 16000 に設定されている場合の opus_encode メソッドのクラッシュ バグを修正するための提案はありますか?

前もって感謝します。

PS。16000 のサンプリング レートでいくつかのテストを行ったところ、次のことがわかりました。
この式を使用する場合: frame_duration = frame_size / sample rate、および frame_duration を preferredIOBufferDuration に設定すると:
120 / 16000 = 0.0075 //AVAudioSession セット 0.008000 —— クラッシュ
240 / 16000 = 0.015 //AVAudioSession セット 0.016000 —— クラッシュ
480 / 16000 = 0.03 //AVAudioSession セット 0.032000 —— クラッシュ
960 / 16000 = 0.06 //AVAudioSession セット 0.064000 —— クラッシュ 1920
/ 16000 = 0.12 //AVAudioSession 180 セット —— 80。
/ 16000 = 0.18 //AVAudioSession セット 0.128000 —— クラッシュ
次に、AVAudioSession が 0.128000 を設定する場合、サンプリング レート 16000 および preferredIOBufferDuration 0.12(1920) でエンコーダー クラッシュがないことがわかりました。したがって、この場合にのみ機能します。

何か案は ?

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

c++ - libwebm (VP8/Opus) による非音声ビデオ -- 音声の同期 --

非常に単純な webm(vp8/opus) エンコーダーを作成しようとしていますが、オーディオを動作させることができません。

ffprobe はファイル形式と期間を検出します

Stream #1:0(eng): Audio: opus, 48000 Hz, mono, fltp (default)

VLC メディア情報ダイアログ

ビデオはVLCとChromeで問題なく再生できますが、オーディオがなくても、何らかの理由でオーディオinput bitrateは常に0です

オーディオ エンコーディング コードのほとんどは、 https://github.com/fnordware/AdobeWebM/blob/master/src/premiere/WebM_Premiere_Export.cppからコピーされました。

関連するコードは次のとおりです。

更新 #1: WebM ではオーディオとビデオのトラックをインターレースする必要があることが問題のようです。ただし、オーディオを同期する方法がわかりません。フレームの長さを計算してから、同等のオーディオ サンプルをエンコードする必要がありますか?

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

.net - Naudio opus コーデックのサポート

最新の opus ( http://opus-codec.org/ ) .NET ラッパーを見つけられなかった後、(naudio) + (opus) = (使いやすい) であることに気付きました。問題は、ダウンロードして必要に応じてすぐに使用できる状態にあるにもかかわらず、実際に naudio を使用したことがないということです。問題は、naudio が opus-codec をサポートしているかどうかです。サポートしていない場合、それをサポートすることは可能ですか。また、サポートする場合、これを可能にするためにどのクラスを実装する必要がありますか?

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

go - Opus ファイルをバイナリで読み取る方法

Go をまだ学習中ですが、Opus ファイルを正しく読み込んで、それをDiscordの Voice チャンネル(Opus コーデックのみをサポートしています) に送信しようとしています。もともとこのスクリプトを使用して、WAV を渡すことができました。スクリプトはそれを Opus にエンコードし、チャネルを介して Discord に送信しました。代わりに、既製の Opus ファイルを送信したいと思います。ただし、代わりに、文字化けしたノイズが聞こえます。これは、それを読んで何か間違ったことをしたことを意味します。

これは簡略化された完全な動作例 (電子メール、パスワード、およびサーバー ID を除く) であり、魔法は で起こりplaySongます。私はそれが私のオーディオバッファに関係していると感じていますが、まだトリックを学んでいます.

opus ファイルを読み込んでチャンネルに渡す正しい方法は何ですか? テストする opus ファイルが必要な場合は、ここで見つけてください。どんな助けでも大歓迎です。ありがとう!

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

compilation - opus-codec API ライブラリのコンパイル

まず、正直になります。私は ac#/Java 言語レベルの住人です。そのため、opus などのネイティブ C プロジェクトをコンパイルする方法がわかりません。

私はそれを自分でやってみました、そして私はそれをグーグルで試しました。opus-codec API (Windows 上) のコンパイルの助けが必要なだけです。

ライブラリをコンパイルしたら、その API のラッパーを作成します。私の検索では、現在のプロジェクトの言語 (c#) を対象とする opus ラッパーが実際に見つかりましたが、最新のものは見つかりません。それが重要かどうかはわかりませんが、VoIP 機能のために必要です。

この件に関して私の愚かさをお詫び申し上げます。

[アップデート]

Visual Studio 2010: Ultimate でコンパイルした後、.lib ライブラリ ファイルができました。.dll が必要です。何をしているのかわかりません。ヘルプ?

0 投票する
0 に答える
568 参照

ios - OPUS 形式を使用して Xamarin.iOS アプリでオーディオを録音するにはどうすればよいですか?

OPUS 形式でオーディオを録音するためのサンプルはありますか?

小さいサイズで高品質のオーディオを録音できる OPUS 形式を使用しています。OPUS Xamarin ライブラリをダウンロードしましたが、チュートリアルやサンプル コードが見つかりません。

このコードを見つけたすべて:

AudioStream.RegisterCodec("opus", 48000, 2, () => { return new OpusCodec(); }, true);

録音サンプルに追加する方法がわかりません。私は使用していますAVAudioRecorder

0 投票する
2 に答える
5485 参照

python - インストールしても Opus がインポートされない

gitbashでpipを使用して、Python 3.4用のopusの最新バージョンをインストールしました

それにもかかわらず、インポートしようとすると、インストールされていないというエラーが表示されます

...