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 · 7848 次点击
    这是一个创建于 3166 天前的主题,其中的信息可能已经有所发展或是发生改变。

    现在很多 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   ·   实用小工具   ·   2488 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 15:42 · PVG 23:42 · LAX 08:42 · JFK 11:42
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.