CS的小翰翰 2022-07-11 17:27 采纳率: 33.3%
浏览 186
已结题

同屏协作,安卓手机桌面实时回传电脑,已经使用Python已经获取到Android手机的桌面视频流,求转成图片流或者其他能显示到桌面的方式

求指导!同屏协作,安卓手机桌面实时回传电脑,已经使用Python已经获取到Android手机的桌面视频流,求转成图片流或者其他能显示到桌面的方式。
import subprocess
import socket
import time
import numpy as np
adb_path = "D:\\scrcpy-win64-v1.24\\adb"  //自己的adb位置
port=15555   //随便设置的端口号
device_uuid="自己设备"  //自己设备
scrcpy_server_path = "scrcpy-server"
p = subprocess.Popen(f"{adb_path} -s {device_uuid} push {scrcpy_server_path} /data/local/tmp", shell=True)
p.communicate()
p = subprocess.Popen(f"{adb_path} -s {device_uuid} forward tcp:{port} localabstract:scrcpy", shell=True)
p.communicate()
p = subprocess.Popen(f"{adb_path} -s {device_uuid} shell CLASSPATH=/data/local/tmp/scrcpy-server app_process / com.genymobile.scrcpy.Server 1.24 max_size=1000 log_level=info bit_rate=8000000 tunnel_forward=true", shell=True)
time.sleep(1)
s1 = socket.socket()
s1.connect(("127.0.0.1", port))
temp = s1.recv(1024)
while temp != b'\x00':
    temp = s1.recv(1024)
print("connected: " + str(temp))
s2 = socket.socket()
s2.connect(("127.0.0.1", port))
info_raw = s1.recv(64)
info = info_raw.decode(encoding="utf-8")
width_raw = s1.recv(2)
height_raw = s1.recv(2)
print(info)
width = int.from_bytes(width_raw, byteorder='big')
height = int.from_bytes(height_raw, byteorder='big')
print(width)
print(height)

while True:
    data = s1.recv(1024)
    print(data)
运行处的视频h246裸流如下,想把它转为图片流或者能直接显示在窗体是更好了。

img

想尝试使用ffmpeg处理h246的方式,但是只有通过c语言的房处理,在考虑是否将获取到的h246视频流传入c语言中处理。
最终效果想要可以达到类似于这种同屏幕协作。

img

  • 写回答

0条回答 默认 最新

    报告相同问题?

    问题事件

    • 已结题 (查看结题原因) 7月18日
    • 创建了问题 7月11日

    悬赏问题

    • ¥15 github录制项目
    • ¥15 H.264选择性加密例程
    • ¥50 windows的SFTP服务器如何能批量同步用户信息?
    • ¥15 centos7.9升级python3.0的问题
    • ¥15 如何解决调试dev-出++5.11不成功问题
    • ¥15 安装CentOS6时卡住
    • ¥20 关于#监控系统#的问题,如何解决?(相关搜索:系统软件)
    • ¥20 c语言写的8051单片机存储器mt29的模块程序
    • ¥60 求直线方程 使平面上n个点在直线同侧并且距离总和最小
    • ¥50 java算法,给定试题的难度数量(简单,普通,困难),和试题类型数量(单选,多选,判断),以及题库中各种类型的题有多少道,求能否随机抽题。