热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

iOS直播app探索(一)

最近对直播类app十分上心,十分想做一个demo出来,鉴于目前对此一无所知,还是站在巨人们对肩膀上开始学习吧。本次先试着搭建直播推流、拉流、播放的框架。演示的话以网上大神提供的LXLive

最近对直播类app十分上心,十分想做一个demo出来,鉴于目前对此一无所知,还是站在巨人们对肩膀上开始学习吧。

本次先试着搭建直播推流、拉流、播放的框架。演示的话以网上大神提供的LXLiveAll为例,本人对内部代码现在不了解。先搭建框架吧。

主要使用的三个技术:

  • 推流:LFLiveKit
  • 播放:ijkplayer
  • 服务器:nginx+rtmp+ffmpeg

一、推流/拉流

LFLiveKit:框架支持RTMP,由Adobe公司开发。列出LFLiveKit的github地址https://github.com/LaiFengiOS/LFLiveKit

LFLiveKit库里已经集成GPUImage框架用于美颜功能,GPUImage基于OpenGl开发,纯OC语言框架,封装好了各种滤镜同时也可以编写自定义的滤镜,其本身内置了多达125种常见的滤镜效果。可谓功能是相当的强大。

1)项目中集成LFLiveKit

使用CocoaPods可以很方便的引入LFLiveKit框架,具体的配置方式展示以我写的Podfile文件为例

Podfile

source 'https://github.com/CocoaPods/Specs.git'
platform :ios,'8.0'

target "LXLiveAll" do

    pod 'LFLiveKit'
    pod 'AFNetworking'
    pod 'MJExtension'
    pod 'MLTransition'
    pod 'MJRefresh'
    pod 'SDWebImage'
end

二、播放

ijkplayer:是基于FFmpeg的跨平台播放器框架,github地址:https://github.com/Bilibili/ijkplayer

添加ijkplayer的方式有两种:
一种是编译ijkplayer引入IJKMediaPlayer.xcodeproj
一种是通过编辑ijkplayer自己构建IJKMediaFramework库(一般真机+模拟器)

1)由于配置时间较久,可以直接跳下载大神们以构建好的IJKMediaFramework库。

这里写图片描述

2)添加完IJKMediaFramework库后还需要导入IJKMediaFramework所需的框架。

这里写图片描述

三、服务器搭建

一、打开终端安装Homebrow
输入命令行安装Homebrow

ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

如果想卸载可以使用以下命令

ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/uninstall)"

二、安装nginx
2.1) 先clone nginx项目到本地:

brew tap homebrew/nginx

2.2)执行安装

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

以上步骤nginx和rtmp模块就安装好了,开始来配置nginx的rtmp模块

输入brew info nginx-full 查看nginx安装路径
这里写图片描述

通过输出打印可以看到nginx的配置文件在

/usr/local/etc/nginx/nginx.conf

然后进入进入/usr/local/etc/nginx/nginx.conf文件里,在最后一行添加如下代码

rtmp {
    server {
        listen 1935;
        application rtmplive {
            live on;
            record off;
        }
    }
}

2.3) 重启nginx

nginx -s reload

三、启动nginx服务
输入命令:

nginx

在浏览器中输入地址:

http://localhost:8080

如果出现‘Welcom to nginx’则表示nginx安装成功。

四、安装ffmepg工具

ffmpeg实现视频的一系列处理

brew install ffmpeg

安装ffmpeg时间就要长一点了. 如果速度过慢, 可以尝试翻墙。等待的过程中, 再安装一个支持rtmp协议的视频播放器VLC。

安装成功后测试推流操作:

五:ffmpeg推流
以我mac桌面的一个test.mp4视频为例, 执行推流命令。(保证nginx已经正常打开)

ffmpeg -re -i /Users/maying/Desktop/test.mp4 -vcodec copy -f flv rtmp://localhost:1935/rtmplive/room

在VLC中打开rtmp://localhost:1935/rtmplive/room 地址

VLC ->File->Open Network..->输入地址如下

这里写图片描述

这里写图片描述

到这里 推流:LFLiveKit + 播放:ijkplayer + 服务器:nginx+rtmp+ffmpeg的直播需要的框架就搭建好了,接下来可以愉快的进行下一步探索了。

看到几篇不错的入门blog,收藏一下哈:
1、http://www.jianshu.com/p/339041855364
2、http://www.jianshu.com/p/30595a5bff42
3、http://www.jianshu.com/p/a0397c98d907
4、http://www.jianshu.com/p/b9486b0f770f
5、http://www.jianshu.com/p/8ea016b2720e


推荐阅读
  •  项目地址https:github.comffmydreamWiCar界面做的很难看,美工方面实在不在行。重点是按钮触摸事件的处理,这里搬了RepeatListener项目代码,例 ... [详细]
  • 现在比较流行使用静态网站生成器来搭建网站,博客产品着陆页微信转发页面等。但每次都需要对服务器进行配置,也是一个重复但繁琐的工作。使用DockerWeb,只需5分钟就能搭建一个基于D ... [详细]
  • Centos7.6安装Gitlab教程及注意事项
    本文介绍了在Centos7.6系统下安装Gitlab的详细教程,并提供了一些注意事项。教程包括查看系统版本、安装必要的软件包、配置防火墙等步骤。同时,还强调了使用阿里云服务器时的特殊配置需求,以及建议至少4GB的可用RAM来运行GitLab。 ... [详细]
  • 标题: ... [详细]
  • 树莓派语音控制的配置方法和步骤
    本文介绍了在树莓派上实现语音控制的配置方法和步骤。首先感谢博主Eoman的帮助,文章参考了他的内容。树莓派的配置需要通过sudo raspi-config进行,然后使用Eoman的控制方法,即安装wiringPi库并编写控制引脚的脚本。具体的安装步骤和脚本编写方法在文章中详细介绍。 ... [详细]
  • 本文由编程笔记#小编为大家整理,主要介绍了markdown[软件代理设置]相关的知识,希望对你有一定的参考价值。 ... [详细]
  • php7 curl_init(),php7.3curl_init获取301、302跳转后的数据
    最近在做一个蜘蛛项目,发现在抓取数据时,有时会碰到301的页面,原本写的curl_init函数php7-远程获取api接口或网页内容&#x ... [详细]
  • imnewtotheswiftandxcodeworld,soimhavingaproblemtryingtointegrateapackagetomypro ... [详细]
  • centos php部署到nginx 404_NodeJS项目部署到阿里云ECS服务器全程详解
    本文转载自:http:www.kovli.com20170919ecs-deploy作者:Kovli本文详细介绍如何部署NodeJS项目到阿里云ECS上, ... [详细]
  • docker安装到基本使用
    记录docker概念,安装及入门日常使用Docker安装查看官方文档,在"Debian上安装Docker",其他平台在"这里查 ... [详细]
  • 本文探讨了C语言中指针的应用与价值,指针在C语言中具有灵活性和可变性,通过指针可以操作系统内存和控制外部I/O端口。文章介绍了指针变量和指针的指向变量的含义和用法,以及判断变量数据类型和指向变量或成员变量的类型的方法。还讨论了指针访问数组元素和下标法数组元素的等价关系,以及指针作为函数参数可以改变主调函数变量的值的特点。此外,文章还提到了指针在动态存储分配、链表创建和相关操作中的应用,以及类成员指针与外部变量的区分方法。通过本文的阐述,读者可以更好地理解和应用C语言中的指针。 ... [详细]
  • vb6集成ad登录共享文件_SCSP实验2单点登录
    01—实验目的掌握单点登陆相关原理和深信服配置02—实验环境1.AC版本v12.0.42AC1地址:https:172.172.1.1AC2地址:htt ... [详细]
  • 不可或缺的Windows管理工具有哪些呢?
      1win10管理工具。Keepass一般的IT管理员都要维护大量的密码,并保证它们的准确性,这对于他们来说确实是一个艰巨的任务。Keepass就是为此 ... [详细]
  • 程度|也就是_论文精读:Neural Architecture Search without Training
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了论文精读:NeuralArchitectureSearchwithoutTraining相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 程序分析与优化9附录XLA的缓冲区指派
    本章是系列文章的案例学习,不属于正篇,主要介绍了TensorFlow引入的XLA的优化算法。XLA也有很多局限性,XLA更多的是进行合并,但有时候如果参数特别多的场景下,也需要进行 ... [详细]
author-avatar
浅浅的思恋的小媳妇
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有