Coder Social home page Coder Social logo

phz76 / desktopsharing Goto Github PK

View Code? Open in Web Editor NEW
684.0 44.0 281.0 21.96 MB

桌面共享, 支持RTSP转发, RTSP推流, RTMP推流。

License: MIT License

C++ 58.86% C 40.64% Objective-C 0.32% CMake 0.18%
rtsp screen-capture dxgi rtp rtmp ffmpeg nvidia nvenc wasapi imgui

desktopsharing's People

Contributors

mafanwei avatar phz76 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

desktopsharing's Issues

关于pushVideo

if (pkt->data[4] == 0x65 || pkt->data[4] == 0x6)
大神, 这里为什么sei也要加sps啊?

关于转推rtsp

大佬你好,看了下转推rtsp的功能,是把捕捉的本地屏幕转推到了某个地址,请问下支持ipc吗,如海康的摄像头

Capture a windowed app

Great project.

I would like to grab windowed app (non full Desktop) using DXGI. All the DXGI sample code speaks about capture the full Desktop. So, is DXGI capable to do it?

局域网播放延时问题

谢谢作者的开源代码, 我尝试用该库作为发送端, 接收端用ffmpeg 播放, 延时比较高, 如果要降低延时, 请问该从哪方面入手?
用rtp over udp 理论上有没有可能改善? 非常感谢

支持ffmpeg4.2需要做哪些修改

我自己尝试编译ffmpeg然后再编译运行测试报以下错误:


[DEBUG] [c:\users\22222\documents\github\desktopsharing\desktopsharing\h264encoder.cpp:H264Encoder::init:46] H.264 Encoder not found.

codec 返回0

rtmp推流,拉流端播放总有2-3s的延迟

服务端试过好几个rtmp server,比如srs, 客户端用vlc,或者在android设备上面拉流播放,在桌面浏览网页,或者文字滚动,总有2-3s的延迟,不知道什么原因?
另推流能否设置分辨率,如果4k的显示器,直接推4k比较浪费资源,推流接口能否暴露必要的参数,比如帧率,分辨率等常用的参数设置

rtp 未分包

没有看到 rtp 的分包处理,在单个 NAL 比较大时有问题,超过 65535

HTTP Streaming

Hello.

Is it possible to stream directly to a HTTP server located somewhere via HLS or RTMP proxy, etc. Basically, we want each streamer to broadcast his desktop to his audience via a web browser something like Youtube.

无法与EasyDarwin对接的问题。

正在学习推流的代码,Demo对我的帮助很大。但在学习的过程中,
1)发现不能与EasyDar对接,即Web后台看流列表中,看不到。是不是easyDar 我没配置好。
2)还有就是在本地转发的,然后用VLC来看的时候,会有花屏的问题。
PC:W10 LTSC,CPU-I5-2.2G,内存:12G,VS2015
EasyDar版本:Server: EasyDarwin/7.3 (Build/17.0325; Platform/Win32; Release/EasyDarwin; State/Development; )

如何实时添加隐藏水印功能

比如说正在分享中的屏幕,我需要在左上角或者屏幕任意位置添加文字或几何图形、图片
但是不能在对屏幕出现此类水印。
查看了一些资料 有以下做法:

  1. 解析格式自己在内存中添加 , 这个就比较难了
  2. ffmpeg添加, 肯定延时较大而且耗资源

阅读了源码 发现没有相关功能,有任何建议吗

ffmpeg 编码花屏

在 1680 * 1050 显示分辨率下, 编码的视频花屏, 大佬请看看可能是啥问题

desk h264_20200529_105653 739

General
Complete name : F:\download\desk.h264
Format : AVC
Format/Info : Advanced Video Codec
File size : 15.1 MiB
Writing library : x264 core 160

Video
Format : AVC
Format/Info : Advanced Video Codec
Format profile : Baseline@L4
Format settings : 1 Ref Frames
Format settings, CABAC : No
Format settings, Reference fra : 1 frame
Format settings, GOP : M=1, N=25
Bit rate : 9 000 kb/s
Width : 1 920 pixels
Height : 1 080 pixels
Display aspect ratio : 16:9
Frame rate : 25.000 FPS
Color space : YUV
Chroma subsampling : 4:2:0
Bit depth : 8 bits
Scan type : Progressive
Bits/(Pixel*Frame) : 0.174
Writing library : x264 core 160
Encoding settings : cabac=0 / ref=1 / deblock=0:0:0 / analyse=0:0 / me=dia / subme=0 / psy=1 / psy_rd=1.00:0.00 / mixed_ref=0 / me_range=16 / chroma_me=1 / trellis=0 / 8x8dct=0 / cqm=0 / deadzone=21,11 / fast_pskip=1 / chroma_qp_offset=0 / threads=4 / lookahead_threads=4 / sliced_threads=1 / slices=4 / nr=0 / decimate=1 / interlaced=0 / bluray_compat=0 / constrained_intra=0 / bframes=0 / weightp=0 / keyint=25 / keyint_min=2 / scenecut=0 / intra_refresh=0 / rc_lookahead=0 / rc=cbr / mbtree=0 / bitrate=9000 / ratetol=1.0 / qcomp=0.60 / qpmin=0 / qpmax=69 / qpstep=4 / vbv_maxrate=9000 / vbv_bufsize=9000 / nal_hrd=none / filler=0 / ip_ratio=1.40 / aq=0

cpu占用率过高等问题

你好,我正在学习推流,看了你的代码对我帮助非常大;折腾的时候发现你的demo比OBS、ffmpeg推屏幕内存,cpu占用过高,目前没发现是哪里的问题,望大神不吝赐教,谢谢。
memory 250MB左右
cpu 50%
i7 2.4g/ 8g /64位/windos10 vs2017 /
[email protected]

在1860*1050分辨率的电脑测试码流是花屏的

int DXGIScreenCapture::AquireFrame()函数里面的
hr = d3d11_context_->Map(rgba_texture_.Get(), 0, D3D11_MAP_READ, 0, &dsec);
if (!FAILED(hr)) {
if (dsec.pData != NULL) {
image_ptr_.reset(new uint8_t[image_size_]);
memcpy(image_ptr_.get(), dsec.pData, image_size_);//这一行有问题
}
d3d11_context_->Unmap(rgba_texture_.Get(), 0);
}

memcpy(image_ptr_.get(), dsec.pData, image_size_);应该改为
for (int y = 0; y < GetHeight(); y++)
{
memcpy(image_ptr_.get() + y * GetWidth() * 4, (uint8_t *)dsec.pData + y * dsec.RowPitch, GetWidth() * 4);
}

全屏应用推流停止

您好,这个项目很有趣。但在全屏应用下,推流停止,变为窗口模式,又恢复正常。请问需要做哪个修改呢?谢谢

DesktopSharing 问题询问

Hi PHZ76,

您好,我是来自**的工程师 William
我在GitHub上看到您DesktopSharing的专案
有几个问题想跟您请益,若您方便的话,就烦请您指导了
我才刚开始研究DXGI与RTSP不久,如果有什么问得不清楚的还请您见谅

  1. 目前在DXGI + RTSP的这个架构下,就算我把VLC的network-caching的值改为0,还是会有些许的延迟(0.3s~0.5s),如下图
    这个部分是架构上的限制导致的吗? 或是还有机会可以改善?
    不知道您有没有什么建议的方向(例如:从nvenc或是从RTSP方面着手),因为我想针对这个部分去研究,让延迟能再低一点
    Outlook-1suxc520

  2. 您在code里面有进行FPS的统计,我也有更改avconfig.framerate的数值为120,输出的FPS确实有改变
    但是,若我使用手机的VLC播放器,并用Gamebench去测试FPS,却仅能跑到60的FPS
    这个会是因为手机版本的VLC所导致吗? 还是手机硬体的影响(我使用ASUS Zenfone3)?
    不知道您有没有什么建议的方向可以让我去Debug?
    thumbnail_Outlook-5g2wwvsu
    Outlook-mqcufxux

因为我不太会简体中文,文字内容是翻译的结果,如果有用词不精确的部分还望你海涵

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.