ios视频直播(流媒体拉流播放、录制推流、推流服务器搭建)

因为文章比较长,先上效果图打点鸡血
电脑摄像头录制播放.png
iphone录制,模拟器播放.png

因为只有俩手机,没法拍照,手机录制、手机播放的就不贴图了,可以直接demo中修改自己服务器的ip地址即可

本文尽量只讲实现步骤,不讲原理,想看原理的移步以下两个博客
原理:http://www.jianshu.com/p/53059be61546
推流原理:http://www.jianshu.com/p/db7b2551538b

一、Homebrew安装

Homebrew是Mac OSX上的软件包管理工具,可以方便的管理mac上的软件安装、卸载。
1.首先使用man brew 命令在终端查看是否安装了该工具,如果安装了则会打印出如下一些信息,否则需要安装homebrew管理工具

man brew
已安装示图.png

2.安装homebrew

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

看到有"installation successful!"的提示,则表示安装成功了。

二、利用home brew安装nginx服务器

1.下载nginx

brew tap homebrew/nginx

2.安装nginx 和rtmp模块

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

3.安装结束后查看一下是否安装成功使用"nginx"命令开启nginx服务器

nginx

如果出现bind fail,8080端口被占用的情况,则查看是哪个进程端口占用了并关掉对应pid的进程

sudo lsof -n -P| grep :8080
//直接copy吧,空格和|不能少
假如对应pid是1945
kill 1945
如果杀不死可以强制杀 sudo kill 1945 或者去进程管理器里强制杀死
杀死后别忘记重新开启nginx

然后在浏览器输入http://localhost:8080
(localhost是本机地址,8080是nginx默认监听端口)查看是否能出现如下图所示

安装成功示图.png

如果需要卸载nginx,执行以下命令

brew uninstall nginx-full

三、配置rtmp参数

1.查看nginx配置文件安装在哪

brew info nginx-full

然后command+f搜索"The default port has been set in",后面的就是配置文件路径了

conf配置文件.png

2.然后command+shift+g 粘贴刚查询到的conf路径


前往配置文件.png

3.打开如下配置文件(xcode即可)


配置文件.png

在文本的最后面配置如下参数,然后保存

rtmp {
        server {
        listen 1990;
        application liveApp {
            live on;
            record off;
        }
    }
}
参数配置.png

4.重新加载nginx的配置文件,使其生效

nginx -s reload

四、安装ffmepg进行推流

1.安装ffmpeg后我们可以使用mac的摄像头、mic和桌面录屏进行数据推送

brew install ffmpeg

2、安装成功后进行ffmepg推流
ffmpeg -re -i (视频全路径) -vcodec copy -f flv (rtmp路径
比如我桌面有一个Worth.mp4,之前conf配置的路径是“rtmp://localhost:1990/liveApp/room”,那么我们如下进行推流

ffmpeg -re -i /Users/myMac/Desktop/Worth.mp4 -vcodec copy -f flv rtmp://localhost:1990/liveApp/room
推流.png

-re: 一定要加,代表按照帧率发送,否则ffmpeg会一股脑地按最高的效率发送数据
-i : 输入文件
-vcodec copy: 强制使用codec编解码方式,要加,否则ffmpeg会重新编码输入的H.264裸流
-f 强制转换为什么格式,后接格式

五、使用VLC播放rtmp推流

  1. 下载VLC安装👇这儿
    2.安装结束后打开vlc然后“command+n"快捷打开,在网络选项下输入conf中配置的地址"rtmp://localhost:1990/liveApp/room"
vlc配置.png

如果此时还在桌面视频的流推还在进行,那么此时双击右图中的地址活着播放按钮则会进行播放

六、利用mac摄像头、mic、屏幕录制进行推流测试

1.先看一下ffmpeg都支持哪些设备

ffmpeg -f avfoundation -list_devices true -i ""
设备支持清单.png

2.抓取桌面和摄像头进行推流(自己把回车符去下)

ffmpeg -f avfoundation -framerate 30 -i "0:0" -f avfoundation -framerate 30 -video_size 640x480 -i "0" -c:v libx264 -preset slow -filter_complex 'overlay=main_w-overlay_w-10:main_h-overlay_h-10' -acodec libmp3lame -ar 44100 -ac 1  -f flv rtmp://localhost:1990/liveApp/room

-f avfoundation 转换为avfoundation
-framerate 30 : 设置帧率 30
-i "1:0" : 设置输出,视频:Capture screen 音频:Built-in Microphone,前面的“1”表示视频(0摄像头,1:桌面截屏,出现画中画可以把1改成0),后面的"0"表示音频输入麦克风
-f avfoundation -framerate 30 -video_size 640x480 : 设置帧率和视频尺寸
-c:v libx264 设置视频编码,H.264编码 优点是同等清晰度,视频文件更小 缺点就是转换慢
-c:v flv 标准FLV编码 这个好处是速度快 清晰度高的话 视频文件会比较大
-preset slow 使用慢速模式 延迟长 清晰度高
ffmpeg的转码延时测试与设置优化 http://blog.chinaunix.net/uid-26000296-id-5747671.html
-filter_complex 'overlay=main_w-overlay_w-10:main_h-overlay_h-10':给视频打水印
-acodec libmp3lame 強制指定音频处理模式
-ac 1 声道选择
-ar 44100 音频赫兹
如此,你的

七、手机端拉流测试

手机端我是通过ljkplayer进行拉流播放的,几行代码的事,就不讲了,直接上demo,刚下载下来是没有集成ijkframework的,因为太大,github传不上去,所以上传到云端了( https://pan.baidu.com/s/1mhD9aqs ),从云端下载拖到framework文件夹即可。

缺失framework和流地址.png

记得改里面的流地址(你的服务器的ip地址+路径),如果你都是按上面的配置文件配置的话,直接替换你的ip地址就行(mac命令行ifconfig 或者网络偏好设置查看ip地址),
AFF392CE-2476-44C6-9E81-929C3ABFC2B5.png

拉流客户端demo

八、手机端推流测试

推流还是比较复杂的,因为涉及到视频、音频采集、裁剪、编码、推流等一系列操作,这个之前参考 下他的这篇文章,因为他的文章中只讲了视频的推流、关于服务器的搭建和拉流的内容没有涉及,所以放到本章是为了让大家对服务器、拉流客户端和推流客户端有一个闭环的实现,实现手机端录制、推送到服务器、手机端播放的功能,至于具体原理想了解的可以查看他们的博客

需要修改的地方.png

需要检测手机端数据是否发送到服务器的话可以进行端口监听

sudo tcpdump -i en0 'port 1990'  

推流客户端demo:Github

有问题的地方希望大家提出来,大家一起交流进步,不怎么会写博客,望小火车们多多谅解

前段时间模仿微信做了个小视频功能(95%还原度),下章将会讲小视频录制功能

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,029评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,395评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,570评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,535评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,650评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,850评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,006评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,747评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,207评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,536评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,683评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,342评论 4 330
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,964评论 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,772评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,004评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,401评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,566评论 2 349

推荐阅读更多精彩内容