私はターゲット設定された広告を放送できるストリーミングサーバーに取り組んでいます。基本的にリスナーは同じ音楽を聴いていますが、30分ごとに1ブロックの広告があり、すべてのリスナーは自分のブロックを持っています。このようなストリーミングサーバの実装にはさまざまな問題があり、この問題の1つは問題です。MP3ストリームをシームレスに連結するにはどうすればよいですか?
サーバ、すなわち、それは、いくつかのストリーム生成装置からネットワークを介してストリームを読み取り、すべてのリスナーにそれを中継する、Icecastのと同様に動作します。広告をブロードキャストする時に、サーバーはジェネレータからのストリームの取得を停止し、ファイルから広告を読み込み、それを各リスナーのバッファに挿入して送信し、ジェネレータからの中継ストリームで再開します。
すると、サーバスイッチの広告を放送するストリームを中継するから、それは(私たちはMP3で放送)2つのMP3ストリームを連結しています。私の関心事は、あるデータを別のデータに追加するだけで、可聴アーチファクトが発生する可能性があるということです。シームレスに行うことはできますか?
私はすでにこれを考え出した: - 私は、同期エラーを回避するために、サーバーはMP3フレームを認識することができます。 - 私は、ストリームからMP3フレームの後に広告ファイルからMP3フレームを追加することを考えています。 - 広告は正しくエンコードされたMP3ファイルからロードされるため、ファイルの最初のフレームでは使用できないため、バイトリザーバの問題を回避します。
しかし、私の心配はMDCTの仕組みです。リスナーは自分のサーバーが何をするのか分からないので、ダウンロードしたストリームに間違ったMDCTデータが次々に配置されるため、MP3デコーダでアーティファクトが生成される可能性があります。これを補償してファイルの先頭にゼロ埋めをしますか?
あなたはシームレスにそれらを解凍せずに2つのMP3ファイルを結合することができます任意のライブラリ/ツール(オープンソース可能な場合)を知っていますか?
MP3フォーマットの説明に役立つリソースを教えてください。私はインターネットをたくさん検索し、多くの情報を見つけましたが、私はまだ全体像を見逃しています。
たぶん、あなたは私がOGG/Vorbisの、AACのような別のコーデックを使用した場合、これは容易になるだろうことを知っていますか?
PS。この質問はWhat is the best way to merge mp3 files?の重複ではありません。 MP3ラップとツールは私にとってはオプションではありません。
このようなAPIはあまりにも計算コストがかかる可能性があります。私が働いているラジオ局はすでに5kユーザー/サーバーのピークトラフィックを持っています。各リスナーのために処理しなければならないのはわずか1秒の音楽であっても、それは時間のかかる圧縮解除/圧縮の1時間以上の音楽です... – Jasiu
本当にそうするべきかどうかわかりませんDirectShowはWindows上のメディアのための*方法です。 – Noldorin