問題タブ [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.
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 ミリ秒ごとに関数を呼び出します。これは、基本的に次のことを行います (わかりやすくするために、エラー処理と後処理は省略されています)。
助けてくれてありがとう!
ios - Ogg の Opus ヘッダーを取得する
Ogg Stream の Vorbis から初期ヘッダー情報を取得する例を次に示します。
libopus を使用して Opus からこのヘッダー情報を取得するにはどうすればよいですか? HEREにいくつかの情報がありますが、それをどのように扱うかわかりません。
ogg - Opus ID ヘッダー、それは何ですか?
OggOpusのドキュメントを見ると、この表の意味がわかりません。
これからヘッダーを取得するにはどうすればよいですか?
c++ - libopusで整形式のopusファイルを取得するには?
.wav ファイルがあり、opus を使用してそれらをエンコードし、すべてを .opus ファイルに書き込んでから、たとえば vlc で読み取ります。opus trivial の例を使用していくつかのコードを実行しましたが、品質が非常に悪いです。実際、問題があります。ヘッダーをまったく書きません。それは正常ですか? 私は何を忘れましたか?
ファイルの書き方に本当の問題があると思いますが、どこから来たのかわかりません。助けてもらえますか?
c++ - ウィンドウでのリンク中の未定義の参照
4 時間の検索の後、ライブラリをリンクしているときに未解決の外部シンボル エラーが発生する理由がわかりません。
私はVS2015を使用しています。
なぜ知りたいのですか?さらに、atom と ctrl+f で名前を指定して開いたので、lib にこれらの関数が含まれていると確信しています。
c++ - オーディオ信号をエンコードするための制約はありますか?
24 kHz などのサンプリング レートで pcm サウンドをキャプチャします。ネットワーク経由で送信するには、コーデックを使用してエンコードする必要があります (そのために Opus を使用します)。Opus でのエンコードに使用するサンプリング レートで、受信側で余分な「クラッキング」ノイズが聞こえることがよくあることに気付きました。他のレートでは、問題ないように聞こえます。それは実装のバグかもしれませんが、私が知らないいくつかの制約もあるかもしれません。
また、Opus でエンコードされたオーディオ ストリームをデコードするときに別のサンプリング レートを使用すると、音のピッチが低くなったり高くなったりすることにも気付きました。したがって、受信側が元の PCM サンプリング レートをサポートしていない場合は、相手側で再サンプリングする必要があることを読みました。
したがって、これらすべてに関して2つの質問があります。
- オーディオ エンコーディングのサンプリング レート (またはその他のパラメーター) に制約はありますか? (私は 24kHz pcm サウンドを持っているようです - 使用する特定のサンプル レートがあるのでしょうか?)
- ネットワーク経由でオーディオ ストリームを送信するときに、両側で同じ音質を提供する一般的な手法はありますか?
audio - ffmpeg または別のコマンド ライン ツールを使用して opus オーディオ ファイルにカバーを追加する方法
私はほぼ丸一日検索しましたが、opus オーディオ ファイルにカバーを追加するものは何も見つかりませんでした。
kid3-cli と次のコマンドで試しました。
そのような他のメタタグを追加すると、カバーのみを追加するときに機能します
その後、ランダムなカバーが表示され、それがどこから来たのかわかりません。削除はできますが、上記のコマンドのように独自のカバーを追加することはできません。そのランダム カバーは、VLC の最新バージョンにのみ表示されます。
opus、vorbis、aac、mp3などにメタタグとカバーを追加するソリューションを誰かが持っています.
foobar2000 をインストールし、上記と同じコマンドと vorbis オーディオ データを使用して、画像を添付することができます。「添付画像の管理」の下のfoobar2000のGUIで、添付した画像が表示されます。
しかし、オーパスはまだ機能しません。
ご協力ありがとうございました!