关于映客 APP 那种直播可以美颜滤镜效果的实现方案探讨 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
iOS 开发实用技术导航
NSHipster 中文版
http://nshipster.cn/
cocos2d 开源 2D 游戏引擎
http://www.cocos2d-iphone.org/
CocoaPods
http://cocoapods.org/
Google Analytics for Mobile 统计解决方案
http://code.google.com/mobile/analytics/
WWDC
https://developer.apple.com/wwdc/
Design Guides and Resources
https://developer.apple.com/design/
Transcripts of WWDC sessions
http://asciiwwdc.com
Cocoa with Love
http://cocoawithlove.com/
Cocoa Dev Central
http://cocoadevcentral.com/
NSHipster
http://nshipster.com/
Style Guides
Google Objective-C Style Guide
NYTimes Objective-C Style Guide
Useful Tools and Services
Charles Web Debugging Proxy
Smore
qq2511296
V2EX    iDev

关于映客 APP 那种直播可以美颜滤镜效果的实现方案探讨

  •  
  •   qq2511296 2016-03-03 19:30:33 +08:00 8371 次点击
    这是一个创建于 3585 天前的主题,其中的信息可能已经有所发展或是发生改变。

    现在很多 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 这个库进行推流)
    (但我只会推没有滤镜处理的那个流,处理后变成一个图片了,不知道怎么推流了)

    想知道把滤镜处理后的效果推流到服务器?

    10 条回复    2016-05-07 16:46:36 +08:00
    nicevar
        1
    nicevar  
       2016-03-03 19:50:25 +08:00
    没做过不太清楚,可以试一下抓一下网络包,看能弄到播放流地址没,像虎牙斗鱼战旗一类的是能抓到的,能抓到直接用 vlc 播放一下看是否处理了
    qq2511296
        2
    qq2511296  
    OP
       2016-03-03 20:02:49 +08:00
    @nicevar 斗鱼那种 直接播放流的话 好像是处理过的 不知道他是在主播那头处理的 还是说服务器处理
    free9fw
        3
    free9fw  
       2016-03-03 22:28:42 +08:00
    GPUImage 是你的选择
    qq2511296
        4
    qq2511296  
    OP
       2016-03-04 18:04:20 +08:00
    @nicevar
    @free9fw 这个已经知道了 都是摄像头采集数据 事实渲染 然后显示在图片上,然后同时把渲染好的再推到服务器,服务器那边不做什么处理了 客户端观看 直接播放流就可以
    hyzjshwo
        5
    hyzjshwo  
       2016-03-10 13:26:24 +08:00
    这种计算的东西 能交给客户端做就客户端做,你想想千万用户都占用服务器资源 太浪费
    normanx
        6
    normanx  
       2016-04-05 11:51:36 +08:00
    推到 RTMP 服务器上的是压缩过的视频流,不能推送原始图片数据。看斗鱼和花椒的安卓版里面都有 openh264 的库,估计是自己压缩成 h264 视频流,然后推送到 RTMP 服务器上。

    楼主有美颜滤镜原理的相关资料么,能不能分享下,谢谢
    qq2511296
        7
    qq2511296  
    OP
       2016-04-05 12:29:48 +08:00
    @normanx 你可以去研究下 videocore 这个库 c++写的 里面有滤镜接口 你要是会 opengl 就不难
    normanx
        8
    normanx  
       2016-04-06 17:07:39 +08:00
    @qq2511296 非常感谢, opengl 不熟悉,看来要学习的东西很多
    guikunzhi
        9
    guikunzhi  
       2016-05-07 14:30:30 +08:00
    美颜可以参考 https://github.com/Guikunzhi/BeautifyFaceDemo 基于 GPUImage 的
    qq2511296
        10
    qq2511296  
    OP
       2016-05-07 16:46:36 +08:00
    @guikunzhi 这是前段时间刚出来的 之前还有个 videocore 的 也带美颜滤镜的 sdk 反正这块要一点算法 open gl 那些东西
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2756 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 40ms UTC 06:25 PVG 14:25 LAX 22:25 JFK 01:25
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86