阿里云服务器免费领卷啦。

捡代码论坛-最全的游戏源码下载技术网站!

 找回密码
 立 即 注 册

QQ登录

只需一步,快速开始

搜索
关于源码区的附件失效或欺骗帖, 处理办法
查看: 19953|回复: 38

[ios源码] Live:主流技术构建即时聊天室演示应用,直播源码

[复制链接]

4212

主题

210

回帖

12万

积分

管理员

管理员

Rank: 9Rank: 9Rank: 9

积分
127056
QQ
发表于 2016-7-19 10:09:01 | 显示全部楼层 |阅读模式
Live :服务端采用 RTMP(Nginx), WebSocket(Socket.io),客户端 VideoCore+IJKPlayer 构建即时聊天室演示应用。
这个项目是为了演示如何建立一个现场直播的应用程序。
它包括这些功能:
创建一个房间广播你的直播流
加入一个房间看现场
发送喜欢,礼物和评论
QQ截图20160719094846.png

简介:
怎么运行:
可以使用我建立的。一个测试服务器在139.196.179.230,所以你可以直接运行iOS项目。
1. Nginx RTMP server
你可以设置自己的RTMP服务器的指导可以在这里找到:
2. WebSocket server
进入live-server目录,运行npm install,然后启动服务器,命令为:node app.js


3. iOS client
进入live-ios目录,运行pod install(需要使用cocoapods的版本为0.39.0
Config.swift配置文件中,更新你的服务器地址:
  1. struct Config {
  2.     static var rtmpPushUrl = "rtmp://139.196.179.230/mytv/"
  3.     static var rtmpPlayUrl = "rtmp://139.196.179.230/mytv/"
  4.     static var serverUrl = "http://139.196.179.230:3000"
  5. }
复制代码
该应用程序也可以运行在模拟器上,但要直播,你需要在一个真正的设备上运行它。

备注:
1,流媒体
基本的流媒体流程:
广播->协议->媒体服务器-> CDN -> RTMP或HLS ->观众
最简单的情况下,我们不需要一个CDN服务器,然后流的过程
广播->协议->媒体服务器 -> RTMP或HLS ->观众

就像这样,boadcaster推直播使用RTMP协议的媒体服务器,观众将流从服务器使用RTMP或HLS协议。

对于RTMP和HLS的一些解释:
RTMP协议是用于:音频、视频或数据,是最初由Macromedia公司的专有协议(由Adobe)。该协议是基于TCP的,提供持久连接。总之,RTMP封装MP3 / AAC音频和MP4、FLV视频多媒体流。
HLS:HTTP直播流媒体称为HLS。顾名思义,它是流媒体基于HTTP通信协议;通过苹果的QuickTime,部分Safari,OS X和iOS产品的开发。那怎么使用呢?它打破了整体流成一系列小的基于HTTP的文件(。TS传输流)。这些传输流文件在文件索引m3u8。它需要先下载的m3u8播放列表播放直播。


对于媒体服务器,有几种选择:
Adobe媒体服务器
Red5
Nginx的rtmp模块
crtmpserver


在设置服务器,你可以测试使用ffmpeg
(install it by brew install ffmpeg).


推流
  1. ffmpeg -f avfoundation -framerate 30  -i "1:0" -f flv rtmp://server-url
复制代码
观看流:去这个网站:https://www.hlsplayer.net/rtmp-player

P.S.很多直播云已经覆盖了媒体服务器和CDN的部分。你只需要推/拉从它的流。

2. iOS RTMP libs
有几个开源项目支持RTMP,本项目采用:
你可以在自己的项目页面找到这些库的使用。
3. Websocket server

本项目采用socket.io处理客户端-服务器通信,逻辑很简单,在服务器端:
  1. var rooms = []

  2. io.on('connection', function(socket) {

  3.   socket.on('create_room', function(roomKey) {
  4.     rooms.push(roomKey)
  5.     socket.roomKey = roomKey;
  6.     socket.join(roomKey);
  7.   });

  8.   socket.on('close_room', function(roomKey) {
  9.     closeRoom(roomKey)
  10.   });

  11.   socket.on('disconnect', function(roomKey) {
  12.     if (socket.roomKey) {
  13.       closeRoom(socket.roomKey)
  14.     }
  15.   });

  16.   socket.on('join_room', function(roomKey) {
  17.     socket.join(roomKey);
  18.   });

  19.   socket.on('upvote', function(roomKey) {
  20.     io.to(roomKey).emit('upvote')
  21.   });

  22.   socket.on('comment', function(data) {
  23.     io.to(data.roomKey).emit('comment', data)
  24.   });
  25. });
复制代码
在客户端,利用客户端socket.io swift  客户端(https://github.com/socketio/socket.io-client-swift),

逻辑也很简单:
创建,加入或关闭一个房间
  1. socket.on("connect") {data, ack in
  2.     self.socket.emit("create_room", self.room.key)
  3. }

  4. socket.on("connect") {data, ack in
  5.     self.socket.emit("join_room", self.room.key)
  6. }

  7. socket.emitWithAck("close_room", room.key)(timeoutAfter: 0) {data in
  8.     self.socket.disconnect()
  9. }
复制代码
发布喜欢和评论事件:
  1. socket.emit("upvote", room.key)
  2. socket.emit("comment", [
  3.     "roomKey": room.key,
  4.     "text": text
  5. ])
复制代码


监听喜欢和评论事件:

  1. socket.on("upvote") {data ,ack in
  2.     self.emitterView.emitImage(R.image.heart()!)
  3. }

  4. socket.on("comment") {data ,ack in
  5.     let comment = Comment(dict: data[0] as! [String: AnyObject])
  6.     self.comments.append(comment)
  7.     self.tableView.reloadData()
  8. }
复制代码



源码下载地址:

游客,如果您要查看本帖隐藏内容请回复




Live:主流技术构建即时聊天室演示应用,直播源码
http://bbs.jiandaima.com/thread-512-1-1.html

。。

捡代码论坛-最全的游戏源码下载技术网站! - 论坛版权郑重声明:
1、本主题所有言论和图片纯属会员个人意见,与本论坛立场无关
2、本站所有主题由该帖子作者发表,该帖子作者与捡代码论坛-最全的游戏源码下载技术网站!享有帖子相关版权
3、捡代码论坛版权,详细了解请点击。
4、本站所有内容均由互联网收集整理、网友上传,并且以计算机技术研究交流为目的,仅供大家参考、学习,不存在任何商业目的与商业用途。
5、若您需要商业运营或用于其他商业活动,请您购买正版授权并合法使用。 我们不承担任何技术及版权问题,且不对任何资源负法律责任。
6、如无法链接失效或侵犯版权,请给我们来信:jiandaima@foxmail.com

回复

使用道具 举报

0

主题

1

回帖

10

积分

新手上路

Rank: 1

积分
10
发表于 2016-7-21 20:56:34 | 显示全部楼层
登录可见评论
回复

使用道具 举报

0

主题

4

回帖

22

积分

新手上路

Rank: 1

积分
22
发表于 2016-8-31 15:08:39 | 显示全部楼层
登录可见评论
回复

使用道具 举报

0

主题

6

回帖

36

积分

新手上路

Rank: 1

积分
36
发表于 2016-9-7 13:45:29 | 显示全部楼层
登录可见评论
回复

使用道具 举报

0

主题

6

回帖

36

积分

新手上路

Rank: 1

积分
36
发表于 2016-9-7 13:46:46 | 显示全部楼层
登录可见评论
回复

使用道具 举报

0

主题

1

回帖

10

积分

新手上路

Rank: 1

积分
10
发表于 2016-9-8 10:35:12 | 显示全部楼层
登录可见评论
回复

使用道具 举报

0

主题

4

回帖

37

积分

微信用户

Rank: 1

积分
37
发表于 2016-9-17 16:46:08 | 显示全部楼层
登录可见评论
回复

使用道具 举报

0

主题

1

回帖

10

积分

新手上路

Rank: 1

积分
10
发表于 2016-10-9 17:02:20 | 显示全部楼层
登录可见评论
回复

使用道具 举报

0

主题

18

回帖

120

积分

注册会员

Rank: 2

积分
120
发表于 2016-10-14 15:44:34 | 显示全部楼层
登录可见评论
回复

使用道具 举报

0

主题

17

回帖

53

积分

注册会员

Rank: 2

积分
53
发表于 2016-10-21 21:29:19 | 显示全部楼层
登录可见评论
回复

使用道具 举报

*滑块验证:
您需要登录后才可以回帖 登录 | 立 即 注 册

本版积分规则

技术支持
在线咨询
QQ咨询
3351529868

QQ|手机版|小黑屋|捡代码论坛-专业源码分享下载 ( 陕ICP备15015195号-1|网站地图

GMT+8, 2024-11-15 12:33

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表