开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 144|回复: 3
收起左侧

[其它求助] 大佬救救吧 关于scrcpy协议问题

[复制链接]
结帖率:83% (5/6)
发表于 昨天 22:04 | 显示全部楼层 |阅读模式   河南省三门峡市
5精币
https://bbs.ijingyi.com/forum.php?mod=viewthread&tid=14867868  这是我借鉴的帖子  目的是想自己接收视频流  Scrcpy源码下载的是3.3.3的  已经编译并成功启动scrcpy窗口
现在的问题是我自己接不到   CMD运行窗口的提示图片我发了  客户Duan的代码在这   问了各种AI    都没解决
import socket
import struct
import time

IP = "192.168.88.11"
VIDEO_PORT = 27183
CONTROL_PORT = 27185

print("正在连接...")

# 设置超时
socket.setdefaulttimeout(10)

try:
    # 连接视频端口
    video_sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    video_sock.connect((IP, VIDEO_PORT))
    print("视频端口连接成功")

    # 连接控制端口
    control_sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    control_sock.connect((IP, CONTROL_PORT))
    print("控制端口连接成功")

    # 接收设备元数据(64字节)
    print("等待设备元数据...")
    device_name_data = video_sock.recv(64)
    print(f"收到设备元数据,长度: {len(device_name_data)}")
    device_name = device_name_data.decode('utf-8').rstrip('\x00')
    print(f"设备名称: {device_name}")

    # 发送控制初始化消息
    print("发送控制初始化消息...")
    client_name = "Python Client".encode('utf-8')
    msg_type = 0
    msg_size = len(client_name)
    control_msg = struct.pack('>BI', msg_type, msg_size) + client_name
    control_sock.send(control_msg)
    print("控制初始化消息发送成功")

    print("等待视频流...")
    packet_count = 0
    while True:
        data = video_sock.recv(65536)
        if not data:
            break
        packet_count += 1
        if packet_count % 10 == 0:
            print(f"收到 {packet_count} 个视频包, 最新包大小: {len(data)}")
except socket.timeout:
    print("连接超时,请检查服务端是否正常运行")
except Exception as e:
    print(f"发生错误: {e}")
finally:
    if 'video_sock' in locals():
        video_sock.close()
    if 'control_sock' in locals():
        control_sock.close()
    print("连接已关闭")

1.png
2.png

回答提醒:如果本帖被关闭无法回复,您有更好的答案帮助楼主解决,请发表至 源码区 可获得加分喔。
友情提醒:本版被采纳的主题可在 申请荣誉值 页面申请荣誉值,获得 1点 荣誉值,荣誉值可兑换荣誉会员、终身vip用户组。
快捷通道:申请荣誉值
结帖率:53% (9/17)

签到天数: 27 天

发表于 昨天 22:17 | 显示全部楼层   山东省临沂市
不知道,没用过,py代码吗?感觉应该是连接的问题,你搞基础的连接测试看看呢
回复

使用道具 举报

签到天数: 16 天

发表于 2 小时前 | 显示全部楼层   福建省宁德市
从你的代码来看,问题可能出在以下几个方面:

1. 超时设置太短:socket.setdefaulttimeout(10) 设置为10秒,但scrcpy服务端可能需要更长时间来响应。建议增加到30秒或更长。

2. 端口连接顺序:scrcpy协议通常需要先建立控制连接,然后再建立视频连接。你当前的代码是先连接视频端口再连接控制端口,建议调换顺序。

3. 控制消息格式:scrcpy 3.x版本的控制协议可能有所变化。尝试使用新的消息格式。

4. IP地址确认:确保192.168.88.11是scrcpy服务端的正确IP地址,并且两个端口(27183和27185)都在监听状态。

建议修改后的代码:
```python
import socket
import struct

IP = "192.168.88.11"
VIDEO_PORT = 27183
CONTROL_PORT = 27185

socket.setdefaulttimeout(30)  # 增加超时时间

try:
    # 先连接控制端口
    control_sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    control_sock.connect((IP, CONTROL_PORT))
    print("控制端口连接成功")
   
    # 再连接视频端口
    video_sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    video_sock.connect((IP, VIDEO_PORT))
    print("视频端口连接成功")
   
    # 接收设备信息
    device_data = video_sock.recv(64)
    device_name = device_data.decode('utf-8').rstrip('\x00')
    print(f"设备名称:{device_name}")
   
    # 发送控制握手
    client_name = b"scrcpy"
    msg = struct.pack('>BI', 0, len(client_name)) + client_name
    control_sock.send(msg)
    print("控制握手完成")
   
except Exception as e:
    print(f"错误:{e}")
finally:
    if 'video_sock' in locals():
        video_sock.close()
    if 'control_sock' in locals():
        control_sock.close()
```

如果还是不行,请检查scrcpy服务端的日志输出,看是否有连接请求到达。
回复

使用道具 举报

结帖率:100% (3/3)

签到天数: 21 天

发表于 2 小时前 | 显示全部楼层   广东省深圳市
我这边使用scrcpy 3.x转发后,代码跑两个连接,第一个连接是video,第二个是control,能正常接收到数据

adb shell CLASSPATH=/data/local/tmp/scrcpy-server.jar app_process / com.genymobile.scrcpy.Server 3.3.4 tunnel_forward=true video=true control=true audio=false cleanup=false raw_stream=true max_size=1920 max_fps=30
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报QQ: 793400750,邮箱:wp@125.la
网站简介:精易论坛成立于2009年,是一个程序设计学习交流技术论坛,隶属于揭阳市揭东区精易科技有限公司所有。
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备2025452707号) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表