一直播怎么分享网站源码分享?一直播平台怎么发小视频

这篇文章给大家聊聊关于一直播怎么分享网站源码分享,以及一直播平台怎么发小视频对应的知识点,希望对各位有所帮助,不要忘了收藏本站哦。

Live:服务端采用RTMP(Nginx),WebSocket(Socket.io),客户端VideoCore+IJKPlayer构建即时聊天室演示应用。

这个项目是为了演示如何建立一个现场直播的应用程序。

它包括这些功能:

创建一个房间广播你的直播流

加入一个房间看现场

发送喜欢,礼物和评论

简介:

RTMPserver–NginxRTMPmodule(https://github.com/arut/nginx-rtmp-module)

WebSocketserver–Socket.io(http://socket.io/)

iOSclient–VideoCore(https://github.com/jgh-/VideoCore)topushstream,IJKPlayer(https://github.com/Bilibili/ijkplayer)toplaystream

怎么运行:

可以使用我建立的。一个测试服务器在139.196.179.230,所以你可以直接运行iOS项目。

1.NginxRTMPserver

你可以设置自己的RTMP服务器的指导可以在这里找到:

https://github.com/arut/nginx-rtmp-module

InstallRTMPwithNginxonUbuntu14.04

2.WebSocketserver

进入live-server目录,运行npminstall,然后启动服务器,命令为:nodeapp.js

3.iOSclient

进入live-ios目录,运行podinstall(需要使用cocoapods的版本为0.39.0)

在Config.swift配置文件中,更新你的服务器地址:

12345structConfig{staticvarrtmpPushUrl=”rtmp://139.196.179.230/mytv/”staticvarrtmpPlayUrl=”rtmp://139.196.179.230/mytv/”staticvarserverUrl=”http://139.196.179.230:3000″}

该应用程序也可以运行在模拟器上,但要直播,你需要在一个真正的设备上运行它。

备注:

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,OSX和iOS产品的开发。那怎么使用呢?它打破了整体流成一系列小的基于HTTP的文件(。TS传输流)。这些传输流文件在文件索引m3u8。它需要先下载的m3u8播放列表播放直播。

对于媒体服务器,有几种选择:

Adobe媒体服务器

Red5

Nginx的rtmp模块

crtmpserver

在设置服务器,你可以测试使用ffmpeg

(installitbybrewinstallffmpeg).

推流

1ffmpeg-favfoundation-framerate30-i”1:0″-fflvrtmp://server-url

观看流:去这个网站:https://www.hlsplayer.net/rtmp-player

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

2.iOSRTMPlibs

有几个开源项目支持RTMP,本项目采用:

VideoCore(https://github.com/jgh-/VideoCore)topushrtmpstream

IJKPlayer(https://github.com/Bilibili/ijkplayer)topullrtmpstream

你可以在自己的项目页面找到这些库的使用。

3.Websocketserver

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

1234567891011121314151617181920212223242526272829303132varrooms=[]io.on(‘connection’,function(socket){socket.on(‘create_room’,function(roomKey){rooms.push(roomKey)socket.roomKey=roomKey;socket.join(roomKey);});socket.on(‘close_room’,function(roomKey){closeRoom(roomKey)});socket.on(‘disconnect’,function(roomKey){if(socket.roomKey){closeRoom(socket.roomKey)}});socket.on(‘join_room’,function(roomKey){socket.join(roomKey);});socket.on(‘upvote’,function(roomKey){io.to(roomKey).emit(‘upvote’)});socket.on(‘comment’,function(data){io.to(data.roomKey).emit(‘comment’,data)});});

在客户端,利用客户端socket.ioswift客户端(https://github.com/socketio/socket.io-client-swift),,

逻辑也很简单:

创建,加入或关闭一个房间

1234567891011socket.on(“connect”){data,ackinself.socket.emit(“create_room”,self.room.key)}socket.on(“connect”){data,ackinself.socket.emit(“join_room”,self.room.key)}socket.emitWithAck(“close_room”,room.key)(timeoutAfter:0){datainself.socket.disconnect()}

发布喜欢和评论事件:

12345socket.emit(“upvote”,room.key)socket.emit(“comment”,[“roomKey”:room.key,”text”:text])

监听喜欢和评论事件:

123456789socket.on(“upvote”){data,ackinself.emitterView.emitImage(R.image.heart()!)}socket.on(“comment”){data,ackinletcomment=Comment(dict:data[0]as![String:AnyObject])self.comments.append(comment)self.tableView.reloadData()}

更多详解:百度搜索捡代码论坛。

源码下载:百度搜索捡代码论坛。

关于一直播怎么分享网站源码分享的内容到此结束,希望对大家有所帮助。

Published by

风君子

独自遨游何稽首 揭天掀地慰生平