その特徴によると、中国産業のこの奇跡はプロのチューナーに近づいていますが、比類のない低価格です。 最初は、これらのチューナーを使用して、OpenboxとGlobで始まり、Vantagで終わる動物園の代わりに、HFCを介したDVB-CおよびMitrisを使用したDVB-Sの種類を実装する予定でした。 ドキュメントの簡単な調査により、ASI、SDI、A / V、RGB、CVBS、XRLの最初に必要な(興味深いものではない)出力に加えて、UDP / RTP(オプション)、およびマルチキャストとユニキャストでIP入力または出力する方法も知っていることが示されましたすでにはるかに興味深いIPであり、以前のプロファイルです。 このような職業病があります-少なくともネットワーク機能のヒントがある場合は、ペンで何かに触れることが不可欠です。
私が最初に考えたのは、「IPTVはほぼ内部にあるので、プレイしましょう」というようなものでした
初期条件
1. DOCSIS 2.0が存在する都市全体の約90%をカバーする古いアナログKTVネットワークがあります。
2.市内のすべての高層ビルの約95%をカバーするFTTBネットワークがあり、KTVネットワークと交差する多くの場所にあります。
3. FTTBは、主にZyxel GS-4012F、Zyxel GS-3012F、Zyxel ES-2108、Foxgate S-6024-S2L2、S-6008-S2L2、Foxgate S-6208-S1、Foxgate S-6024-S4L2のスイッチで構成されていますフォックスゲートのラインナップ全体のその他の動物園。
4.マニュアルの上記のすべてのデバイスについて、IGMPスヌーピングとマルチキャストサポートの両方ができることが示されました。
5.不快な事実は、もちろん、これらのグランドの90%が100Mbit / sの銅ポートでサブスクライバーに送信されたということでしたが、テスト目的ではこれはすべて適切でした(「再生する」かのように数百のスイッチを交換する予定はありませんでした)
ブラックマジック
最初に思いついたのは、1台のトランスポンダーの6つのオープンチャネルでチューナーを構成することです。 そして、マルチキャストマニュアルで宣言され、FTTBネットワークのコアに立っているスイッチにそれをすべて突っ込みます。 これは、長い間熟考することなく、手元にあるテストチューナーで行われました。 そのような事業の失敗の最初の疑念は、 突然の支援の呼びかけに気付いた40秒後に忍び寄った。 スイッチの自作モニタリングを一目見ただけで、受信機が核スイッチに挿入された瞬間に、ネットワークの約1/4がほぼ同時に落ちたことがわかりました。 奇妙なことですが、まだ1台の受信機をスイッチに挿入し続けており、サポートでほとんどすぐに開始されたパニックによって、これはクリーンではないことがわかります。 問題のより詳細な調査によると、4メガビット(SDの1チャンネル)のマルチキャストを見ると、古いファームウェアを使用して、初期のFoxgateモデルの2つがネットワークから脱落します。 正確には、最も早く最も安い6208は通常、放送が停止する前にアストラルプレーンに行き、IPゾンビを備えた24ポートモデルは900ミリ秒で、そして地獄のパケットロスでpingを開始しました(まあ、そのようなばかげたお金のために何が欲しいですか? Zyxelの同様のソリューションの数を減らします)。
元のアイデアの庭の2番目の小石は、これらの受信機でその時点で利用可能な最後のファームウェアで、指定できる最大TTLは5であり、それまでに利用可能なインフラストラクチャの現実に特に同意しなかったことです。 さらに、「インターネット経由でゾンボヤスキク」を見たいと思うかもしれないDOCSIS加入者を思い出しました。
最後の2つの要因は、L3でのマルチキャストブロードキャストに耐えられないデバイスを選択的にカットしたいという欲求を遮断し、他のオプションについて考えます。 受信者から特定の人をユニキャストすることも愚かなアイデアであることが判明し、すぐにそれを落としました。
短いグーグルと思考の後、最も単純で最も明白な(そして先駆的な職人的な)ソリューションは、VLCがインストールされた1台のマシンでマルチキャストをキャッチし、結果のイメージをHTTPでラップするように見えました。
誰も鉄を買おうとしていないので、彼らは過去の飼料構成P4 2.4GHz / 1Gb RAM /机の引き出し/ 2枚のネットワークカードからのある種のネジから何かを集めました。 フライ7.1およびVLC 0.8.6iでインストールされました。 これらはすべて、次の構造で組み立てられました。
vlc.cfgの構成は次のようになりました。
new channel11 broadcast enabled
new channel12 broadcast enabled
….
setup channel11 input udp://@239.0.0.1:1234
setup channel11 output #standard{access=http,mux=ts,dst=my.hostname:8011}
setup channel12 input udp://@239.0.0.2:1234
setup channel12 output #standard{access=http,mux=ts,dst= my.hostname:8012}
….
control channel11 play
control channel12 play
実際には、すべてが明確で論理的です-fxp0ネットワークカードからBroadcast 239.0.0.xをキャッチし、ポート8011、8012などから既にhttpでラップされているネットワークfxp1から送信します。 目的のインターフェイス(route_broad = "239.0.0.0/24 192.168.8.8")を介してブロードキャストネットワークへのルートを作成することを忘れない場合、これらすべてに特別なニュアンスはありません。
次に、次の形式のスクリプトでこれらすべてを実行できます。
#!/bin/sh
/usr/local/bin/vlc --daemon --intf telnet --telnet-password gfhjkmnfrjqgfhjkm --vlm-conf /usr/local/etc/vlc.cfg
sleep 3
ps axv|grep vlc|awk '{print $1; exit;}' > /var/run/vlc.pid
そして人生を楽しみ始めます。
次のステップは、これらすべてを、ユーザーが最高速度を持つ既存のメディアサーバーに簡単かつ簡単に転送することでした。 これを行うために、例として示されている同じ2つのチャネルの構成でportfwdを収集します。
tcp {
8011 {=>172.40.0.121:8011}
}
tcp {
8012 {=>172.40.0.121:8012}
}
portfwd –c /usr/local/etc/portfwd.cfgコマンドで転送を開始し、同じVLCを使用してテストします。 次に、WikipediaにアクセスしてM3U形式の説明を読み、ユーザーに配布するプレイリストを作成します。プレイリストは、VLCをインストールしてプレイリストにフィードする方法についての指示とともに作成します。
#EXTM3U
#EXTINF:1,MTV
iptv.domain:8011
#EXTINF:1,QTV
iptv.domain:8012
上記のとんでもない構成のマシンは20チャンネル(4つのレシーバーからの80メガビットのストリーム)を中継しますが、歯を磨いていますが、すべてが機能しているようです。 不快な効果のうち、メモリリークによる定期的なVLCドロップ、クラウンを使用した定期的なVLC再起動、および明らかな理由によるソリューションの最初の先駆けと湿気で処理されていることに気付くことができます.1人のユーザーは4-4.5 Mbitであり、明らかに100がすでに半ギガバイト未満です。 しかし、純粋に興味があり、より深刻な何かに資金を提供したいという欲求がないため、それはうまくいきます。 さらに、DOCSISテクノロジーを使用して接続しているユーザーは、他のオプションとは異なり、これを引き続き視聴できます。
当然、同じ方法でDVBカードを使用してチャンネルをキャッチしたり、ファイルウォッシュからムービーを表示したりすることができます。これがファンタジーの仕組み/リソースで可能です。
アイデアのさらなる発展として、課金用のシンプルなローションを作成することを検討できます。これにより、ユーザーは必要なチャンネルで独自のプリペイドプレイリストを作成し、対応するブロードキャストポートで許可/拒否してこれらを平易なipfwプレートに分配することで区切ることができます。 しかし、次回については。
Habraiser miverはudpxyを変換する目的で UDPマルチキャスト-> HTTP製品を使用することを提案しました。udpxyは「ドキュメント」から判断すると、「UDPからHTTPへのマルチキャストトラフィックリレーデーモン」にすぎません。 すべて同じように、世界には良い人がいないわけではありません。すべてがスピードとシンプルさで輝いているからです。
インストール:
#wget downloads.sourceforge.net/project/udpxy/udpxy/Chipmunk-1.0/udpxy.1.0-Chipmunk-16.tgz
#tar zxvf udpxy.1.0-Chipmunk-16.tgz
#cd udpxy-1.0-Chipmunk-16/
# gmake && gmake install
例に基づいて使用します。
#udpxy -p 8011 -M 30 -B 2Mb -a 8.8.8.8 -c 15
ユーザーのプレイリストはそれに応じて表示されます。
#EXTM3U
#EXTINF:1,MTV
iptv.domain:8011/udp/239.0.0.1:1234
#EXTINF:1,QTV
iptv.domain:8011/udp/239.0.0.2:1234
....
半日、同じタスクでVLCよりも低い負荷では動作しません。 驚きはないようです。 意気消沈する唯一のことは、製品がCで十分に文書化されていることです。 実際には、オプションの編集のトピックについては、uopt.hを見ることをお勧めします。
あとがき
1. VLCの非常に貴重な助けをしてくれたユーザーmkrentovskiyに特別な感謝を申し上げます。 実際、この問題に関するすべての知識とストリーミング放送全体の理論は、彼の最も興味深いブログ(私は強くお勧めします。wowzaに関するいくつかの記事は価値があります)から直接収集されます。 興味のある人のために、ここでそのようなエンターテイメントを手伝うために個人的な時間を過ごす準備ができている人々がいることに再び感謝します。
2.半日で組み立てられるテスト実装としては、そうかもしれません。 しかし、はい-深刻な生産用ではありません。
3.はい、私は読み書きができません。 言語は母国語ではなく、学校では学ばなかったが、これは弱い言い訳だと思う。 欠落しているコンマを個人的なin辱として認識した場合は、事前に謝罪します。 正直に-私はしたくありませんでした。
4.通常のTTLと魅力的なWebインターフェースを指定する機能を備えたファームウェアは、ずっと後に登場しました。
5.それをより単純で「概念」にすることができます-受信機をスイッチとマルチキャストの一方の端に固定します-真実を得るのはそれほど面白くなく、1行目の記事はそれほど面白くないようです。