美文网首页常用技术收集iOS开发技巧直播
1小时学会:最简单的iOS直播推流(一)介绍

1小时学会:最简单的iOS直播推流(一)介绍

作者: hard_man | 来源:发表于2016-11-10 00:05 被阅读6382次

    最简单的iOS 推流代码,视频捕获,软编码(faac,x264),硬编码(aac,h264),美颜,flv编码,rtmp协议,陆续更新代码解析,你想学的知识这里都有,愿意懂直播技术的同学快来看!!

    源代码:https://github.com/hardman/AWLive

    介绍

    最近在做iOS直播,研究了相关直播技术,主要包含两方面:推流,播放。

    因为之前使用cocos2dx做过一个视频游戏(恋爱公寓),用ffmpeg+sdl+cocos2dx实现过视频播放器。

    游戏中的视频是hevc(h265)+aac合成mp4文件,使用aes加密。视频播放的时候,需要使用ffmpeg中的crypt模块进行aes解密后播放视频,解析出来的yuv图片数据直接送给OpenGL显示。

    所以这次主要研究推流技术。并将代码开源

    其实直播技术中不论播放还是推流,更多的应该算是技术整合,就是将前人做好的协议和实现,整合成我们自己想要的功能。

    而这次做这个项目也并不是做了什么技术创新,github里面已经有着很多直播源代码,可能比我写的更好更完整。而我的代码,特点就是简单直接,直奔主题。

    我会在我的博客里做一些简单的解析,目的是希望让更多的人了解直播技术,能够了解直播内部的一些简单的原理,不再知其然不知其所以然。

    功能范围

    • 视频捕获:系统方法捕获,GPUImage捕获,CMSampleRef解析
    • 美颜滤镜:GPUImage,
    • 视频变换:libyuv
    • 软编码:faac,x264
    • 硬编码:VideoToolbox(aac/h264)
    • libaw:C语言函数库
    • flv协议及编码
    • 推流协议:librtmp,rtmp重连,rtmp各种状态回调

    代码使用及注意

    代码使用方法见Demo。后续会根据上述功能的每一点对源代码进行解析。

    如果有什么疑问或者问题,请评论指出。希望能够给愿意了解直播技术的人抛出一块好砖。

    注1:项目中所有相关的文件名,类名,全局变量,全局方法都会加AW/aw作为前缀。

    注2:项目中关键代码都使用c语言编写,理论上可以很容易地移植到android中。

    文章列表

    1. 1小时学会:最简单的iOS直播推流(一)项目介绍
    2. 1小时学会:最简单的iOS直播推流(二)代码架构概述
    3. 1小时学会:最简单的iOS直播推流(三)使用系统接口捕获音视频
    4. 1小时学会:最简单的iOS直播推流(四)如何使用GPUImage,如何美颜
    5. 1小时学会:最简单的iOS直播推流(五)yuv、pcm数据的介绍和获取
    6. 1小时学会:最简单的iOS直播推流(六)h264、aac、flv介绍
    7. 1小时学会:最简单的iOS直播推流(七)h264/aac 硬编码
    8. 1小时学会:最简单的iOS直播推流(八)h264/aac 软编码
    9. 1小时学会:最简单的iOS直播推流(九)flv 编码与音视频时间戳同步
    10. 1小时学会:最简单的iOS直播推流(十)librtmp使用介绍
    11. 1小时学会:最简单的iOS直播推流(十一)sps&pps和AudioSpecificConfig介绍(完结)

    相关文章

      网友评论

      • jade_xiaohui:写的很详细 赞
      • 白水灬煮一切:楼主感谢你为IT做的巨大贡献!
      • 小冰山口:好东西
      • shengshenger:你好,请问之后的文章会介绍混音的相关知识么?
      • 新地球说着一口陌生腔调:你好 推流服务器怎么弄
      • a318e2b71a24:/Users/shengruxiahua/Library/Developer/Xcode/DerivedData/AWLive-ginkkpmnyyydamdvjrcwdiijwwtu/Build/Intermediates/GPUImage.build/Debug-iphoneos/Documentation.build/Script-BC552B3A1558C6FC001F3FFA.sh: line 5: /usr/local/bin/appledoc: No such file or directory
        报这个错误如何解决?
      • yx_yang:大神为什么我发现,使用这个demo推流会有3-4秒的延迟,是拉流播放器端的问题吗,还是哪一步比较耗时
        shengshenger:这个是你播放器没有设置丢帧的原因,我们也有这个问题,不过还没有解决,使用金山的播放器就处理了丢帧的处理
      • 木匠屯_王保长:先mark一下!今天新入职一家公司,正是做直播类的自主产品!:smile:
      • 半邪亦正:借宝地问个问题 关于透明导航栏半切滑动退出导致导航栏异常的问题有人遇到过吗
        我的月亮你的心:@这个昵称已经被占用了 退出的时候复原就行了
      • 偶识君乎:我会收藏到我的专题
      • ShannonChenCHN:请问一下,libyuv 这个库怎么导入 XCode 呢,我把.a的库导入后,但是一直报错说 "libyuv/basic_types.h" file not found
      • 千叶飞雪:学习了
      • Link913:楼主你好,为何你的github下下来无法运行呢?是要设置什么吗
        Link913:@hard_man 签名搞过了,我是直接下载的压缩包,没走git那个ssh.
        /Users/fy/Library/Developer/Xcode/DerivedData/AWLive-gxsfyxxoskldfbadidpphstdhinn/Build/Intermediates/GPUImage.build/Debug-iphonesimulator/Documentation.build/Script-BC552B3A1558C6FC001F3FFA.sh: line 5: /usr/local/bin/appledoc: No such file or directory
        hard_man:@SkyHarute 报什么错误
        hard_man:@SkyHarute 设置签名了吗
      • Liusr:膜拜
      • 5fc7946f4aac:不错不错!支持一下!
        hard_man:@大侠爱吃汉堡包 😄谢谢

      本文标题:1小时学会:最简单的iOS直播推流(一)介绍

      本文链接:https://www.haomeiwen.com/subject/hditpttx.html