Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

请问是只实现了音乐投屏吗? #3

Open
mehao opened this issue Sep 29, 2018 · 17 comments
Open

请问是只实现了音乐投屏吗? #3

mehao opened this issue Sep 29, 2018 · 17 comments

Comments

@mehao
Copy link

mehao commented Sep 29, 2018

No description provided.

@phonegapX
Copy link
Owner

phonegapX commented Oct 17, 2018

还包括屏幕,你可以看看博客里面的视频

@mehao
Copy link
Author

mehao commented Oct 19, 2018

还包括屏幕,你可以看看博客里面的视频

你好,我现在在开发Android版的AirPlay接收端,能否帮下忙呢?现在搞得头大

@phonegapX
Copy link
Owner

这块我也很久没搞了,不过你把我这源代码搞明白,移植到android下面也不难。
如果要快的话市面上有很多现成的sdk可以去买,集成就可以了

@mehao
Copy link
Author

mehao commented Oct 31, 2018

请问你有用到第三方SDK的吗?我看到是有用到xindawn这个sdk的

@phonegapX
Copy link
Owner

这个是基本完整的源码,只不过差了一个解密模块没有逆向,用了别人的

@mehao
Copy link
Author

mehao commented Dec 1, 2018

我看到mirror部分是用到了xindawn的,这一部分是不好处理才用到第三方的SDK的吗?

@mehao
Copy link
Author

mehao commented Dec 1, 2018

不知道你所说的差了一个解密模块没有逆向,用了别人的,是哪个模块呢?

@phonegapX
Copy link
Owner

你仔细看下代码,AirPlay/AirplayLibrary/AirPlay/lib/fairplay.c,可以找到你要的答案

@hill121212
Copy link

作者大神,您好,我看了你的代码,很有帮助。但是,我现在测试出一个问题,就是镜像模式下,视频和音频不同步的问题。在 raop_rtp.c文件的raop_rtp_thread_udp()函数中,接收音频数据的时候,对于同步数据包,就0x54这个类型的数据包,没有任何处理,如下:
if (type == 0x56) {
int ret = raop_buffer_queue(raop_rtp->buffer, packet+4, packetlen-4, 1);
assert(ret >= 0);
} else if (type == 0x54) {
g_x56_buf[0] = packet[15];
g_x56_buf[1] = packet[14];
g_x56_buf[2] = packet[13];
g_x56_buf[3] = packet[12];
g_x56_buf[4] = packet[11];
g_x56_buf[5] = packet[10];
g_x56_buf[6] = packet[9];
g_x56_buf[7] = packet[8];
(DWORD)&g_x56_buf[4] += 0x7C558180;
g_x56_buf[8] = packet[19];
g_x56_buf[9] = packet[18];
g_x56_buf[10] = packet[17];
g_x56_buf[11] = packet[16];
}

就只是把同步音频数据包的数据存放到 g_x56_buf[] 全局变量中。在代码中,这个 g_x56_buf[] 全局变量没有看到在哪里使用,最终,这个音频同步包没有使用起来。 在镜像模式下,视频和音频就没有同步播放了。我现在测试出现了这样的问题,应该怎么样改?? 对应 0x54 这个类型的同步数据包,要怎么样处理?

@mehao
Copy link
Author

mehao commented Dec 10, 2018

基本上是按照你的方式,目前已经可以实现手机和我的设备连接上了,现在实现手机画面显示时,你所说的 “TV端拿到数据后就需要先解密,然后h264解码,然后显示到屏幕上.” 这一步我并没有看到具体在哪里实现了,能麻烦你帮忙指导一下吗?

@phonegapX
Copy link
Owner

关于 0x54类型的问题,请问你是ios哪个版本呢

@phonegapX
Copy link
Owner

代码里面都有啊,h264解码,然后显示到屏幕等 都有,你仔细看看

@phonegapX
Copy link
Owner

你可以直接在代码里面把交互步骤打印出来,看看整个交互流程是什么样子的

@mehao
Copy link
Author

mehao commented Dec 12, 2018

我看到涉及到h264解码的是在AirplaySdkExample中的,那个不是xindawn属于第三方SDK的吗?其他地方真找不到有涉及视频流解密然后h264解码了,能具体说下在哪个文件么?这个问题纠结了好久了,快要崩溃了。。。感谢感谢

@AbstyGuo
Copy link

感谢大神分享的代码

关于 0x54类型的问题,请问你是ios哪个版本呢

我这边是ios11和iOS12的手机,目前两个问题就是音频有杂音,还音视频不同步,我也发现0x54这个没有使用不知道要怎么处理

@mehao
Copy link
Author

mehao commented Dec 17, 2018

你好,到这一步的时候socket连接不上
ser_addr.sin_addr.s_addr = inet_addr("192.168.1.145");
这个地址是手机的ip地址吗?socket连接的时候拒绝连接了。

@hill121212
Copy link

作者,您好,我是IOS11的手机,在镜像模式下,音频中接收到 0x54 个数据包。在 airplay 协议中,这个类型 的数据包就是控制同步,但是,在代码中,对于 0x54 这个类型的数据包,就只是存放在一个全局变量中而已,没有特别处理,导致镜像时,音频与视频不同步。

这个问题怎么样修改呢? 现在正卡在这里,作者大神帮忙看看!

Repository owner deleted a comment from rafly2103 Feb 15, 2024
Repository owner deleted a comment Mar 1, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

5 participants
@mehao @phonegapX @AbstyGuo @hill121212 and others