在airplay中实现android作为服务器(接收器)

时间:2013-02-28 05:26:08

标签: android airplay jmdns

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

    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在airplay中实现视频和图像。有什么想法吗?

1 个答案:

答案 0 :(得分:3)

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

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