-
Notifications
You must be signed in to change notification settings - Fork 1.3k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
请问怎么用这个实现屏幕推流 #779
Comments
FYI #248 |
@begeekmyfriend 博主,google的这个demo我之前有看过,他只是通过MediaProjection然后显示画面到surface,这个流程我知道,但是这个跟屏幕推流还是不同的。我之前根据网上的demo做了一个硬解码后直接用TCP发送h264裸流的,PC端然后通过SDL渲染播放,现在我是想把硬解码拿到的h624数据用你这个推流出去,请教博主这个能不能提供一下思路? |
你的需求有人提过的,你可以从question label的issue里去找,说白了就是 |
好的,谢谢博主指点~ |
@begeekmyfriend 博主,不好意思,再请教一下,我修改了数据的输入源,
直接用了SrsEncoder.java 的这个方法
|
你可以用Android Studio的断点调试功能 |
@begeekmyfriend 好的,现在已经可以了。博主,给你提个建议,数据发送这块不建议用java的原生socket,改成jni调用C语言的tcp效率会大幅提高 |
好的,谢谢建议! |
@begeekmyfriend 博主,还想请教下,目前测试过程中推流到服务器,然后播放端画面最低也有500ms的延迟,改成屏幕推流后数据量相对比摄像头大了不少,内网ping 服务器延迟<1ms 的情况下,播放还会间歇性的卡顿,这个有什么办法优化下么?。我之前传输h264裸流的情况下,java socket大概1S延迟,改成C后最低到100-200ms,但是这个推流我改成了C 的TCP传输,居然没有什么改善,实在是奇怪 |
调整一下码流,相同数据量传输层应该是一样的延时 |
好的,博主你什么时候回考虑下加入屏幕推流这块呢,我发现我改的这个屏幕推流,相同的码流设置,在手机上推还勉强能看,在平板上简直卡到不行,码流现在调的也不高,看着画面都还有些模糊,每秒的数量一般也只有200-500kb。还有我发现一个问题 |
问题是我不玩平板的,没设备,你可以用SRS和ffplay去看一下,是否网络的问题。 |
好的,博主,还想请问下这个是我用ffplay播放,别的推流工具ffplay打印的一个参数 |
没有你的环境我也不好说啊,从编码格式上看都是一样的,也许yasea没有用jni去写socket的缘故?我不清楚。你所谓“数据不同”指的是啥,yasea本来就是为移动端去定制的,你可以用手机对比一下效果,平板我没有做过测试。 |
嗯嗯,我现在都是在手机上测试,目前唯一的问题就是,正常情况下0.5S的延迟,还好,但是推流的画面经常突然就会卡一下,比如我在手机住界面来回滑动,就很容出现从1-2这个页面过渡的时候不是平滑过渡,而是突然卡一下然后就跳到2这个页面,这种情况可能是什么原因引起的呢? |
关于延时的问题,不知这里是否可供参考?#785 |
@FrankLove 兄弟,你这个屏幕推送有开源代码参考吗,重复轮子也不好造啊 |
@krmao 你参考我上面的代码,然后稍微修改下这个开源库,注释掉摄像头那部分代码就可以了。还可以考虑使用其他两种方式librtmp和ffmepg实现 |
@FrankLove 感谢回复 |
@krmao 不同手机间远程控制没研究过这方面,https://github.com/eterrao/ScreenRecorder 这个demo测试了下感觉已经实现的很不错了,用这个做屏幕推流应该没啥问题了 |
如何改成 c socket 发送 推流,优化延迟 |
你是使用c语言的 simplermtp https://github.com/faucamp/SimpleRtmp/tree/master/src/com/github/faucamp/simplertmp/io |
@xieyilong 屏幕推流你直接用这个库就可以了,librtmp实现的,底层是C语言的socket https://github.com/eterrao/ScreenRecorder 当前这个库其实延迟也是可以接受的,我改成C语言发送对延迟也没有什么改善,目前博主这个库的延迟跟专业的sdk在内网下都是一样的0.5s左右,但是偶尔出现跳帧不流畅的原因我怀疑是因为他没有把数据放到队列里面,直接通过回调来发送,在某些情况下可能会出现数据量过大而来不及发送 |
插一句,队列大小是可调的 |
|
你好,请问如果我想把这个改成手机屏幕画面推流,不用摄像头,该怎么处理呢?
The text was updated successfully, but these errors were encountered: