现在很多 app 提供主播视频直播时候美颜滤镜功能,有点问题想下大家
A:主播
B:观众
方案 1 :
获取 A 主播手机摄像头的每一帧图滤镜处理 然后显示在 A 主播手机屏幕上 然后推流到服务器
B 观众从服务器获取流 播放的时候再用滤镜把美颜效果显示出来
方案 2 :
获取 A 主播手机摄像头的每一帧图滤镜处理 然后显示在手机屏幕上 然后推流到服务器,由服务器再把流处理加上美颜滤镜
B 观众从服务器获取流直接播放
方案 3 :
获取 A 主播手机摄像头的每一帧图滤镜处理 然后显示在手机屏幕上 然后再把滤镜处理过的再推流到服务器
B 观众从服务器获取流直接播放
我个人感觉方案 3 比较靠谱。大家看看觉得哪种方式才是正确的做法?
我目前按方案 3 的方式做
目前实现了
1.摄像头图片实时滤镜(iOS 的 CoreImage 实现的,也许后面会去用 GPUImage)
- (void)captureOutput:(AVCaptureOutput *)captureOutput
didOutputSampleBuffer:(CMSampleBufferRef)sampleBuffer
fromConnection:(AVCaptureConnection *)connection
根据 sampleBuffer 来生成图片,然后把图片通过 CoreImage 去滤镜处理,然后把处理后的 Image 显示在 Layer 上
2.成功推流到 RTMP 服务器(通过 VideoCore 这个库进行推流)
(但我只会推没有滤镜处理的那个流,处理后变成一个图片了,不知道怎么推流了)
想知道把滤镜处理后的效果推流到服务器?
1
nicevar 2016-03-03 19:50:25 +08:00
没做过不太清楚,可以试一下抓一下网络包,看能弄到播放流地址没,像虎牙斗鱼战旗一类的是能抓到的,能抓到直接用 vlc 播放一下看是否处理了
|
3
free9fw 2016-03-03 22:28:42 +08:00
GPUImage 是你的选择
|
4
qq2511296 OP |
5
hyzjshwo 2016-03-10 13:26:24 +08:00
这种计算的东西 能交给客户端做就客户端做,你想想千万用户都占用服务器资源 太浪费
|
6
normanx 2016-04-05 11:51:36 +08:00
推到 RTMP 服务器上的是压缩过的视频流,不能推送原始图片数据。看斗鱼和花椒的安卓版里面都有 openh264 的库,估计是自己压缩成 h264 视频流,然后推送到 RTMP 服务器上。
楼主有美颜滤镜原理的相关资料么,能不能分享下,谢谢 |
7
qq2511296 OP @normanx 你可以去研究下 videocore 这个库 c++写的 里面有滤镜接口 你要是会 opengl 就不难
|
9
guikunzhi 2016-05-07 14:30:30 +08:00
美颜可以参考 https://github.com/Guikunzhi/BeautifyFaceDemo 基于 GPUImage 的
|