12

我想在 android 中创建 airplay,其中我的 android 设备将用作 airplay 服务器(接收器),而 iPhone 设备将用作接收器。我在我的应用程序中使用了 jmdns,它是 java 中用于 airplay 的开源库。它对音频工作正常。但是当我看到视频和图像时,即使发现了设备,我也有很多挣扎。这是我创建和注册服务的代码:

    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 中的图像和音频发现了该设备。当我选择播放视频的设备时,它会显示消息“此视频正在播放 android(服务器名称) ”。但是在服务器端,我没有得到任何要处理的数据包。我学习了很多 Jmdns。但我不知道如何使用 jmdns 在空中播放中实现视频和图像。有任何想法吗 ?

4

1 回答 1

4

你需要一个流媒体服务器。FFmpeg在我看来是一个有趣的起点。请参阅ffserver组件。

这是一个很好的教程,介绍如何将其包装在ffmpeg-java中。

于 2013-03-14T06:14:10.133 回答