Skip to content

Repository files navigation

VideoStreamer

VideoStreamer 是一个专为 Android 设备设计的视频流媒体应用,旨在提供高质量的屏幕镜像和流媒体体验。

主要特性

  • 实时屏幕镜像:无缝地将 Android 设备屏幕镜像到其他设备。
  • 高分辨率支持:默认原生分辨率
  • 易于集成:兼容 OBS 等流媒体软件,便于直播和录制。
  • 支持的输入: 屏幕捕获,摄像头录制
  • 低延迟音频流:搭配指定程序可以低延迟的把内录音频推送到电脑播放,测试设备上约90ms延迟。

为什么不选择 scrcpy

虽然 scrcpy 是一个广受欢迎的开源 Android 屏幕镜像工具,但我在开发 VideoStreamer 时选择不依赖它,主要基于以下原因:

  • 容易崩溃:scrcpy 在某些网络条件不佳、设备兼容性问题或长时间运行时容易出现崩溃,导致用户体验中断。
  • OBS 集成不便:要将 scrcpy 的输出集成到 OBS 等流媒体软件中,必须通过窗口采集方式获取,这会导致原始分辨率丢失,无法充分利用高清画面的优势。
  • 流畅度不足:scrcpy 在处理高分辨率内容或复杂动画时,流畅度不够理想,容易出现画面卡顿或帧率下降。

值得注意的是,本项目也存在延迟方面的缺点。这是缓冲机制的问题,但缓冲过小反而可能引发卡顿。

安装和使用

要求

  • Android API 级别 29 或更高
  • 一个 RTMP 流服务器

使用指南

  1. 启动应用。
  2. 连接目标设备。
  3. 开始流媒体传输。

搭配obs

你可以自行实现服务端,或者使用我们的GUI客户端LiveSuite,也可以参考这个Node.js的简单实现:

import NodeMediaServer from 'node-media-server';

const config = {
  rtmp: {
    port: 1935,
    chunk_size: 30000,
    gop_cache: false,
    ping: 30,
    ping_timeout: 60
  }
};

const nms = new NodeMediaServer(config);
nms.run();

nms.on('postPublish', (sessions) => {
});

nms.on('donePublish', (sessions) => {
});

而后,在OBS中添加媒体源,链接填入对应的流链接。例如,设备推流为rtmp:///device/stream ,OBS中添加媒体源为rtmp:///device/stream

声明

本项目主要由AI编写,代码质量可能存在问题 250 warnings ,如有大佬发现问题,请提issue,万分感谢。

已知问题

长时间使用可能把音频内录干崩,干崩了就只有重启内录才有声音了我也不知道是不是我的问题了,因为试了下居然其它应用还有声,并且重启也没用。

相关项目

  • LiveSuiteGUI客户端,包含rtmp流服务器和音频服务器程序,可以完整搭配使用
  • udp-audio-server音频程序本体

About

安卓视频流推流小工具,可以选择屏幕或者摄像头作为视频源

Resources

Stars

6 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages