betway必威手机版 > 计算机应用 > 直播相关的开源库,直播技术汇总

原标题:直播相关的开源库,直播技术汇总

浏览次数:164 时间:2020-03-25

FFmpegGitHub全部版本编写翻译脚本脚本 瓦斯-preprocessor

做一款仿映客的直播App?看本人就够了

520Linkee - 高仿映客

FFmpeg-AVPlayer-For-iOS-tvOSGitHub

直播时期--IOS直播顾客端SDK,美颜直播

本项目相比较齐全的达成了作为一个直播App的基本作用,比如本地摄像流搜集、播放、美颜、礼物、点赞出心等。

VitamioGitHub

直播技能汇总

美颜成效利用的是BeautifyFace,本框架能够相当的高效的落到实处美颜作用,效果不错,它的底部还是基于的GPUImage,对GPUImage拾壹分垂怜的Developer,可以参照BeautifyFace,写出二个归于自个儿的美颜功用,而且拉长各类滤镜。

PLPlayerKitGitHub

一、直播部分本领名词

1、什么是 FFmpeg ,FFmpeg 是一个开源无偿跨平台的录像和音频流方案,归于自由软件,它提供了摄像、转变以至流化音摄像的完全建设方案。直播系统多应用该方案。

2、什么是 RTMP(Real Time Messaging Protocol:实时新闻传输公约)Adobe集团开拓。三个极度为飞速传输录像,音频和多少而设计的合计。它经过创制四个二进制TCP连接恐怕一而再延续HTTP隧道完结实时的摄像和声音传输。

 

播放端威尼斯官网 ,广播端用的针对性RTMP优化过的ijkplayer(下边提供下载地址),ijkplayer是借助FFmpeg的跨平台播放器,这么些开源项目已经被四个App 使用,当中映客、美拍和斗鱼使用了 ijkplayer(如今GitHub5700 ) 。在本文的末未提供了,已经打包好的ijkplayer,直接拖入项目就足以接收。省去了编写翻译的长河(编写翻译十二分劳神,何况轻松出错)。

kxmovieGitHub

二、直播全部技巧完成

 

技艺相对都比较成熟,设备也都援助硬编码。iOS还提供现存的 Video ToolBox框架,能够对摄像头和流媒体数据构造举办拍卖,但Video ToolBox框架只卓殊8.0之上版本,8.0之下就要求用x264的库软编了。

github上有现存的开源达成,推流、美颜、水印、弹幕、点赞动画、滤镜、播放都有。手艺其实不是很难,况且以后很积雨云商家都提供SDK,七牛云、金山云、乐视云、Tencent云、百度云、斗鱼直播伴侣推流端,功效差不离都以同一的,没啥亮点,区别的是100%直播平台服务差别和接通的简易性。后端今后RTMP/HTTP-FLV 清一色,App挂个源站直接接入云厂商或CDN就OK。

 

1、直播项目传输格局介绍

必威官方登录 1

 

2、直播项目采撷端(推送端)介绍

推流端能够筛选过多GitHub上的开源项目,比如VideoCore 、LiveVideoCoreSDK 、LFLiveKit 。商用的话能够接收各大厂家的SDK,腾讯网直播云、七牛、Tencent、百度、博客园。使用直播云的利润就是能便捷上线App,作用特别康健,能够播放器和推流端,服务器一套下来,有规范客服人士救助集成到工程中,短处正是流量费太贵了,具体可以通晓下各大厂商的收取金钱标准。

 

2.1.脚下可比盛名的有VideoCore

眼下境内众多知名的推流框架都是对VideoCore的二次开辟。那些框架主要运用C 写的,帮衬RTMP推流,但对于iOS开采者来说有个别猛烈难懂(通晓C 的不外乎)。想开源和免费的能够筛选现在的多少个盛名项目VideoCore

  • GPUImage 基于GPU的美颜滤镜 ,播放用IJKPlayer自个儿校订。

 

2.2.境内相当的火的LiveVideoCoreSDK

框架提供iOS苹果手提式有线电电话机的RTMP推流填写RTMP服务地点,直接就足以扩充推流,SDK下载后简单的工程布署后能直接运转,实现了美颜直播和滤镜功用,基于OpenGL,前后录像头随即切换,提供RTMP连接处境的回调。

以此框架是国内比较早的一款推流框架有众多在采纳这么些SDK,效用非常齐全,作者也比较牛,用来读书推流搜罗相关内容非常好,不过集成到工程中多少不方便(对于笔者来讲)。简单来说这是一款相当屌的推流SDK,大概一切应用C 写的,编写翻译成效非常好,假使有实力的话推荐使用那个框架来做团结项目标推流端。

 

2.3.可读性相比好的推流LFLiveKit

框架协理RTMP、HlS (HTTP Live Streaming:苹果自家的动态码率自适应本领卡塔尔(قطر‎。主要用来PC和Apple终端的音摄像服务。富含多个m3u(8)的目录文件,TS媒体分片文件和key加密串文件。

推荐介绍那些框架第一是因为它根本运用OC写的,剩下的用C语言写的,框架文件极度鲜明,那对不精晓C 的初读书人提供了一点都不小的方便,並且扩充性非常强,帮衬动态切换码率作用,援救美颜作用。

 

2.4.美颜作用

美颜的话常常都以运用GPUImage必威官方登录, 的依赖OpenGl开采,纯OC语言,这几个框架拾分强硬,能够做出各个分歧滤镜,可扩充性高。假设对美颜未有实际思路能够向来用BeautifyFace ,能够插足到品种中,很有益于的兑现美颜作用。

 

3、直播项目播放端介绍

播音端用的针对性RTMP优化过的ijkplayer ,ijkplayer 是基于FFmpeg的跨平台播放器,那些开源项目现已被八个App 使用,在那之中映客、美拍和斗鱼使用了 ijkplayer(8000 ⭐️) 。能够参照那篇博客获取framework:iOS中集成ijkplayer摄像直播框架 。也得以直接下载外人已经济合营龙好的framework:IJKMediaFramework.framework

播音形式:

 

- (void)goPlaying {

​

    //获取url

    self.url = [NSURL URLWithString:_liveUrl];

    _player = [[IJKFFMoviePlayerController alloc] initWithContentURL:self.url withOptions:nil];

​

    UIView *playerview = [self.player view];

    UIView *displayView = [[UIView alloc] initWithFrame:self.view.bounds];

​

    self.PlayerView = displayView;

    [self.view addSubview:self.PlayerView];

​

    // 自动调整自己的宽度和高度

    playerview.frame = self.PlayerView.bounds;

    playerview.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;

​

    [self.PlayerView insertSubview:playerview atIndex:1];

    [_player setScalingMode:IJKMPMovieScalingModeAspectFill];

​

}

 

推流端接受的是LFLive基特,推流端能够选择过多GitHub上的开源项目代表LFLiveKit,举个例子VideoCore,和LiveVideoCoreSDK。商用的话能够选用各大商家的SDK,微博直播云、七牛、Tencent、百度、腾讯网、此中金山直播云本身用过。使用直播云的裨益正是能便捷上线App,功效相当完善,能够播放器和推流端,服务器一套下来,有专门的职业客性格很顽强在困难重重或巨大压力面前不屈职员救助集成到工程中,瑕玷正是流量费太贵了,具体能够明白下各大厂家的收取费用规范。

ijkplayerGitHub

三、直播实践 (直播和看见都不帮衬模拟器卡塔尔国

基于LiveVideoCoreSDK完整项目源码

1、搭建nginx RTMP 服务器:Mac搭建nginx rtmp服务器

i. 安装nginx (网页服务器,它能反向代理HTTP, HTTPS, SMTP, POP3, IMAP的磋商链接,甚至一个载重均衡器和贰个HTTP缓存卡塔尔(قطر‎ :

 

## clone nginx项目到本地

$ brew tap homebrew/nginx

## 执行安装

$ brew install nginx-full --with-rtmp-module

## 成功之后

$ nginx

在浏览器里展开http://localhost:8080 假使现身下图, 则象征安装成功

必威官方登录 2

ii. 配置nginx和RTMP:

 

## 查看nginx安装到哪了

$ brew info nginx-full

...

...

==> Caveats

Docroot is: /usr/local/var/www

​

The default port has been set in /usr/local/etc/nginx/nginx.conf to 8080 so that

nginx can run without sudo.

​

nginx will load all files in /usr/local/etc/nginx/servers/.

找到nginx.conf 文件所在地方(/usr/local/etc/nginx/nginx.conf) , 点击Finder ->前往 ->前往文件夹 ->输入/usr/local/etc/nginx/nginx.conf -> 用记事本工具(推荐Sublime Text) 打开 nginx.conf。直接滚到最终一行, 在结尾二个} (即最终的空域处, 未有别的{}卡塔尔前面加多:

 

# 在http节点后面加上rtmp配置:

rtmp {

    server {

# 端口一般使用4位,本人开始使用三位,一直有问题,折腾了半天!

        listen 7160;

        application denglibinglive {

            live on;

            record off;

        }

    }

}

接下来重启nginx(此中的1.10.1要换来你自身设置的nginx本子号, 查看版本号用nginx -v命令就能够State of Qatar:

 

$ /usr/local/Cellar/nginx-full/1.10.1/bin/nginx -s reload

iii. 安装FFmpeg:

 

$ brew install ffmpeg

iv. 下载能播放流媒体的播放器VLC

下载后装置,张开 VLC,然后 File->open network(command N)输入:

 

rtmp://localhost:7160/denglibinglive/room

必威官方登录 3

v.开始FFMpeg推流:

mp3录像下载地址

下载录制到桌面后,实践推流命令:

 

$ ffmpeg -re -i /Users/denglibing/Desktop/loginmovie.mp4 -vcodec libx264 -acodec aac -strict -2 -f flv rtmp://localhost:7160/denglibinglive/room

VLC便起初广播流媒体:

必威官方登录 4

 

2、下载基于LiveVideoCoreSDK完整项目源码

将品种中ViewController.m 的viewDidLoad 中改为如下:

 

- (void)viewDidLoad {

    [super viewDidLoad];

    // Do any additional setup after loading the view, typically from a nib.

    

    [self UIInit];

    

    _RtmpUrlTextField.text = @"rtmp://ossrs.net/live/123456";

    // 注意 192.168.1.20 是你电脑的ip地址即nginx服务器地址,7160/denglibinglive/room 是博客上面对应的参数,切勿搞错了。

    _RtmpUrlTextField.text = @"rtmp://192.168.1.20:7160/denglibinglive/room";

}

iOS10 以上的无绳电话机需求在 info.plist 中参与直播所必要的权能:

 

    <key>NSCameraUsageDescription</key>

    <string>运行项目使用相机</string>

    <key>NSAppleMusicUsageDescription</key>

    <string>运行项目使用多媒体</string>

    <key>NSMicrophoneUsageDescription</key>

    <string>运行项目使用麦克风</string>

运营就能够直播!

 

3、直播项目搜聚端:从0到1初叶集成LiveVideoCoreSDK

i. 在Desktop 新建文件夹HDLiveVideoCoreDemo 使用Xcode组建项目组(Workspace),命名叫HDLiveVideoCoreDemo.xcworkspace 并保存在 HDLiveVideoCoreDemo 中:

必威官方登录 5

必威官方登录 6

 

ii、将基于LiveVideoCoreSDK完整项目源码 源码的LiveVideoCoreSDK 、LiveVideoCoreCoreSDK.xcodeprojRtmpLivePushSDK 复制到文件夹HDLiveVideoCoreDemo 中:

必威官方登录 7

 

iii、打开HDLiveVideoCoreDemo.xcworkspace ,新建 LiveVideoCoreDemo.xcodeproj 项目:

必威官方登录 8

必威官方登录 9

必威官方登录 10

 

iv、分别将LiveVideoCoreSDK.xcodeproj 和 RtmpLivePushSDK.xcodeproj 拖入到品种组中:

必威官方登录 11

必威官方登录 12

 

v、将libLiveVideoCoreSDK 加入到LiveVideoCoreDemo 项目中,并丰盛对应所供给的系统框架和tdb文件:

 

AVFoundation.framework

AudioToolbox.framework

CFNetwork.framework

CoreMedia.framework

OpenGLES.framework

VideoToolbox.framework

CoreVideo.framework

libz.tbd

libstdc  .tbd

必威官方登录 13

 

vi、到此甘休,LiveVideoCoreSDK 信任的条件系统文件已经济合营并到新品类中,接下去对项目开展供给的安排:

因为LiveVideoCoreSDK 不支持Bitcode , 所以供给设置Enable Bitcode 为NO

因为LiveVideoCoreSDK.h 不在LiveVideoCoreDemo 项目中,所以必要设置

Header Search Paths : ../LiveVideoCoreSDK/

../LiveVideoCoreSDK/ 这个是 LiveVideoCoreSDK.h 相对于LiveVideoCoreDemo.xcodeproj 的路径。

 

vii、增多代码运行。

 

- (void)viewDidLoad {

    [super viewDidLoad];

    

    

    [[LiveVideoCoreSDK sharedinstance] LiveInit:[NSURL URLWithString:@"rtmp://192.168.1.20:7160/denglibinglive/room"]

                                        Preview:self.view

                                       VideSize:(CGSizeMake(540, 960))

                                        BitRate:LIVE_BITRATE_800Kbps

                                      FrameRate:LIVE_VIDEO_DEF_FRAMERATE

                                    highQuality:true];

    [LiveVideoCoreSDK sharedinstance].delegate = self;

    [[LiveVideoCoreSDK sharedinstance] connect];

    

    [LiveVideoCoreSDK sharedinstance].micGain = 5;

}

​

//rtmp status delegate:

- (void) LiveConnectionStatusChanged: (LIVE_VCSessionState) sessionState{

    NSLog(@"RTMP状态 : %d", (int)sessionState);

}

LiveVideoCoreSDK 集成终结!

德姆o下载地址:HDLiveVideoCoreDemo

 

4、直播播放端:

播音端用的照准RTMP优化过的ijkplayer ,ijkplayer 是基于FFmpeg的跨平台播放器,这一个开源项目早已被多个App 使用,此中映客、美拍和斗鱼使用了 ijkplayer(8000 ⭐️) 。能够参照那篇博客获取framework:iOS中集成ijkplayer摄像直播框架 。也得以平昔下载外人已经济合营龙好的framework:IJKMediaFramework.framework

合并也一点也不细略,新建项目,将下载的IJKMediaFramework.framework 参预到品种就可以:

 

- (void)viewDidLoad {

    [super viewDidLoad];

    

    //rtmp://live.hkstv.hk.lxdns.com:1935/live/hks (流媒体数据)

    //rtmp://10.0.44.72:1935/denglibinglive/room (本地局域网的服务地址,局域网内测试直播和播放)

    //rtmp://115.28.135.68:1935/yuzhouheike/room (别人搭建好的云主机服务地址,支持不在局域网的直播和播放)

    _moviePlayer = [[IJKFFMoviePlayerController alloc] initWithContentURLString:@"rtmp://115.28.135.68:1935/yuzhouheike/room" withOptions:nil];

    _moviePlayer.view.frame = self.view.bounds;

    // 填充fill

    _moviePlayer.scalingMode = IJKMPMovieScalingModeAspectFill;

    // 设置自动播放(必须设置为NO, 防止自动播放, 才能更好的控制直播的状态)

    _moviePlayer.shouldAutoplay = NO;

    [self.view insertSubview:_moviePlayer.view atIndex:0];

    [_moviePlayer prepareToPlay];

    

    // 设置监听

    [self initObserver];

}

​

​

- (void)initObserver{

    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(stateDidChange) name:IJKMPMoviePlayerLoadStateDidChangeNotification object:self.moviePlayer];

}

​

- (void)stateDidChange{

    if ((self.moviePlayer.loadState & IJKMPMovieLoadStatePlaythroughOK) != 0) {

        if (!self.moviePlayer.isPlaying) {

            [self.moviePlayer play];

        }

    }

}

德姆o下载地址:HDIJKMediaSDKDemo

from:

VLCGitHubGitLab

必威官方登录 14

SmarterStreamingGitHub

rtmp-video-player-for-iosGitHub

源码下载:

本文由betway必威手机版发布于计算机应用,转载请注明出处:直播相关的开源库,直播技术汇总

关键词: 项目 开源 aud

上一篇:betway体育手机版彻底解决_OBJC_CLASS_,彻底解决i

下一篇:没有了