12

私のAndroidデバイスがエアプレイサーバー(レシーバー)として機能し、iPhoneデバイスがレシーバーとして機能するエアプレイをAndroidで作成したいと考えています。エアプレイ用のJavaのオープンソースライブラリであるアプリケーションでjmdnsを使用しました。オーディオでは問題なく動作しています。しかし、私がビデオと画像になると、デバイスを発見しても多くの苦労があります。サービスを作成して登録するための私のコードは次のとおりです。

    ServiceInfo info = ServiceInfo.create(identifier + "@" + name + "._raop._tcp.local", identifier + "@" + name, port, "tp=UDP sm=false sv=false ek=1 et=0,1 cn=0,1 ch=2 ss=16 sr=44100 pw=false vn=3 txtvers=1");

        dns = JmmDNS.Factory.getInstance();
        ((JmmDNSImpl)dns).inetAddressAdded(new NetworkTopologyEventImpl(JmDNS.create(InetAddress.getByName("localhost")), InetAddress.getByName("localhost")));

        try {
            Thread.sleep(1000); // If this isn't done the Announcement sometimes doesn't go out on the local interface
        } catch (InterruptedException e) {
            e.printStackTrace(System.err);
        }

        dns.registerService(info);

最初の行の ._raop を ._airplay に変更すると、iPad で画像と音声のデバイスが検出されました。ビデオを再生するデバイスを選択すると、「このビデオはアンドロイド(サーバー名)を再生しています」というメッセージが表示されます。しかし、サーバー側では、処理するパケットがありません。私はJmdnsロットを研究しています。しかし、 jmdns を使用してエアプレイでビデオと画像を実装する方法がわかりません。何か案は ?

4

1 に答える 1

4

ストリーミングサーバーが必要です。FFmpegは私にとって興味深いスタート地点のようです。ffserverコンポーネントを参照してください。

これはffmpeg-javaでラップする方法についての素晴らしいチュートリアルです。

于 2013-03-14T06:14:10.133 に答える