如何使用 ffmpeg 来传输 USB 连接的 Android 设备

如何使用 ffmpeg 来传输 USB 连接的 Android 设备

我想将我的 Android 设备用作外接显示器。

有使用VPN的方法,但是速度很慢。如果你连接两台平板电脑,它就无法使用,因为全屏显示量越大,它会在VPN客户端上完全呈现。

因此,使用 ffmpeg,我可以抓取屏幕的一部分并仅投射

直到现在我有这些

ffmpeg -video_size 1920x1080 -framerate 60 -f x11grab -i :0.0+7680,1080 -preset ultrafast -vcodec libx264 -tune zerolatency -r 60 -f mpegts -listen 1 rtmp://localhost:1935/

它返回:

    built with gcc 10 (SUSE Linux)  configuration: --prefix=/usr --     libdir=/usr/lib64 --shlibdir=/usr/lib64 
 cut cmmand details
  libavutil      56. 51.100 / 56. 51.100
  libavcodec     58. 91.100 / 58. 91.100
  libavformat    58. 45.100 / 58. 45.100
  libavdevice    58. 10.100 / 58. 10.100
  libavfilter     7. 85.100 /  7. 85.100
  libavresample   4.  0.  0 /  4.  0.  0
  libswscale      5.  7.100 /  5.  7.100
  libswresample   3.  7.100 /  3.  7.100
  libpostproc    55.  7.100 / 55.  7.100
[x11grab @ 0x55ed2db79b40] Stream #0: not enough frames to estimate rate; consider increasing probesize
Input #0, x11grab, from ':0.0+7680,1080':
  Duration: N/A, start: 1618395766.466413, bitrate: 3981312 kb/s
    Stream #0:0: Video: rawvideo (BGR[0] / 0x524742), bgr0, 1920x1080, 3981312 kb/s, 60 fps, 1000k tbr, 1000k tbn, 1000k tbc
RTMP_Connect0, failed to connect socket. 111 (Connection refused)
rtmp://localhost:1935/test/: Unknown error occurred

使用 ADB 命令:

adb reverse tcp:1935 tcp:1935

但仅限 TCP,不支持 UDP。

使用 ADB 命令:

adb forward tcp:1935 tcp:1935

我可以将主机端口请求转发到 android 设备

可以将端口 1935 重定向至主机。

如果我连接到 Android 平板电脑上的 localhost:1935,它会直接重定向到主机。但显然我错了。

我需要 ffserver 或者类似的东西吗?

使用命令

adb shell monkey -p [xxx.appname.xxx] -c android.intent.category.LAUNCHER 1

是否可以从桌面打开应用程序。这就是我所在的地方,我不知道从这里开始。

我想要替换的是使用 VNC 的这种方法

Android 作为使用 VNC 的 Linux 的外部显示器

我希望 ffmpeg 和 rtmp 的输出速度更快

从 Android 到 Linux 的转换非常简单直接,反过来难道不可以吗?

adb shell screenrecord --output-format=h264 - | ffplay -

相关内容