FMUSER更轻松地传输视频和音频!
es.fmuser.org
it.fmuser.org
fr.fmuser.org
de.fmuser.org
af.fmuser.org ->荷兰语
sq.fmuser.org ->阿尔巴尼亚人
ar.fmuser.org ->阿拉伯语
hy.fmuser.org - >亚美尼亚
az.fmuser.org ->阿塞拜疆
eu.fmuser.org ->巴斯克
be.fmuser.org ->白俄罗斯语
bg.fmuser.org - >保加利亚
ca.fmuser.org ->加泰罗尼亚语
zh-CN.fmuser.org ->中文(简体)
zh-TW.fmuser.org - >中国(繁体)
hr.fmuser.org ->克罗地亚语
cs.fmuser.org ->捷克
da.fmuser.org ->丹麦语
nl.fmuser.org - >荷兰
et.fmuser.org ->爱沙尼亚语
tl.fmuser.org ->菲律宾
fi.fmuser.org ->芬兰语
fr.fmuser.org - >法国
gl.fmuser.org ->加利西亚语
ka.fmuser.org ->乔治亚
de.fmuser.org ->德语
el.fmuser.org - >希腊
ht.fmuser.org ->海地克里奥尔语
iw.fmuser.org ->希伯来语
hi.fmuser.org ->印地语
hu.fmuser.org - >匈牙利
is.fmuser.org ->冰岛语
id.fmuser.org ->印尼语
ga.fmuser.org ->爱尔兰
it.fmuser.org - >意大利
ja.fmuser.org ->日语
ko.fmuser.org ->韩文
lv.fmuser.org ->拉脱维亚
lt.fmuser.org - >立陶宛
mk.fmuser.org ->马其顿语
ms.fmuser.org ->马来语
mt.fmuser.org ->马耳他语
no.fmuser.org - >挪威
fa.fmuser.org ->波斯语
pl.fmuser.org ->波兰语
pt.fmuser.org ->葡萄牙语
ro.fmuser.org - >罗马尼亚
ru.fmuser.org ->俄语
sr.fmuser.org ->塞尔维亚语
sk.fmuser.org ->斯洛伐克
sl.fmuser.org - >斯洛文尼亚
es.fmuser.org ->西班牙语
sw.fmuser.org ->斯瓦希里语
sv.fmuser.org ->瑞典语
th.fmuser.org - >泰国
tr.fmuser.org ->土耳其语
uk.fmuser.org ->乌克兰语
ur.fmuser.org ->乌尔都语
vi.fmuser.org - >越南
cy.fmuser.org ->威尔士语
yi.fmuser.org - >意第绪语
1,开发手机视频直播
可以看出,从PC到手机,越来越多的直播应用在线上,并且移动直播进入了前所未有的爆炸阶段。 但是,对于大多数移动实时广播,它仍然主要由本机客户端实现,但是HTML5在移动实时广播端也起着不可替代的作用,例如HTML5。HTML5具有传输速度快,易于发布的优点,因此也可以实时播放视频何时才是最重要的。
完整的现场直播可以分为以下几类:
(1)视频记录终端:一般来说,它是计算机音频和视频输入设备,或者是移动终端上的摄像头或麦克风。 当前,手机视频是主要部分。
(2)视频播放器:它可以是计算机上的播放器,也可以是手机上的本机播放器,并且可以是HTML5的视频标签。 目前,它仍然是手机上的主要本地播放器。
(3)视频服务器:通常为Nginx服务器,用于接受视频录制方提供的视频源,并向视频播放端提供流媒体服务。
2,HTML5录制视频:
对于HTML5视频录制,强大的webrtc(WEB实时通信)是一项支持Web浏览器中的实时语音或视频对话的技术。 缺点是它仅在PC chrome上支持更好,而移动端则不理想。
使用webrtc录制视频的基本过程是:
调用window.navigator.webkitGetUserMedia(获取用户PC摄像机的视频数据)。
将获取的视频流数据转换为window.webkitRTCPeerConnection(视频流数据格式)。
使用websocket将视频流数据传输到服务器
由于很多方法都需要以浏览器为前缀,因此许多移动浏览器不支持webrtc,因此实际的视频录制仍由客户端(IOS,Android)实现,效果会更好。
3,HTML5直播视频:
对于视频播放,可以使用HLS(HTTP实时流)协议播放实时流。 IOS和Android都自然支持此协议。 直接配置和使用视频标签很简单。
这是使用视频播放实时视频的简单代码:
(1)什么是HLS协议:
简而言之,整个流被分成小文件,这些文件是根据HTTP下载的。 一次仅下载一些。 HTML3广播实时视频中引入的.M8u5先前提到的文件基于HLS协议,该协议存储视频流的元数据。
每个.M3u8文件对应于几个TS文件,它们是真实视频存储的数据。 m3u8文件仅存储某些TS文件的配置信息和相关路径。 播放视频时,.M3u8文件是动态更改的。 视频标签将解析该文件并找到要播放的相应TS文件。 因此,为了加快速度,.M3u8文件将用于分析文件并找到相应的TS文件进行播放。 因此,为了加快速度,.M3u8文件将用于分析文件并找到相应的TS文件进行播放。 因此,为了加快速度,请将其放在Web服务器上,并将TS文件放在CDN上。
.M3u8文件实际上是使用UTF-3编码的M8U文件。 该文件不能单独播放,只能播放包含播放信息的文本文件。
(2)HLS请求过程:
HTTP请求m3u8的URL。
服务器返回m3u8的播放列表,该列表会实时更新。 通常,一次提供5个数据段的URL。
客户端解析m3u8的播放列表,然后请求每个段的URL,以获得TS数据流。
(3)HLS直播延迟:
我们知道,HLS协议将实时流划分为一小段视频,以供下载和播放。 因此,假设列表包含5个TS文件,每个TS文件包含5秒的视频内容,则总延迟为25秒。 因为当您看到这些视频时,主持人已录制了该视频并上传了该视频,所以延迟是由此引起的。 当然,可以缩短单个TS文件的列表长度和大小,以减少延迟。 在极端情况下,列表长度可以减小为1,TS持续时间为1s。 但是,这将增加请求数量并增加服务器压力。 当网络速度较慢时,将产生更多的缓冲区。 因此,苹果官方推荐的TS时间为10s,因此将大大改变30s的延迟时间。 因此,服务器接收流,进行代码转换,保存,剪切该块,然后将其分发给客户端。 这是延迟的根本原因。
有关延误的更多问题,请参阅Apple的官方地址:
https://developer.apple.com/library/ios/documentation/NetworkingInternet/Conceptual/StreamingMediaGuide/FrequentlyAskedQuestions/FrequentlyAskedQuestions.html
但是,HTML5实时视频具有一些不可替代的优势:
①良好的沟通,易分享等操作。
②可以动态发布,有利于产品需求的实时迭代和快速发布。
③不安装应用程序,直接打开浏览器。
4,IOS采集(记录)音视频数据OS
对于音频和视频的采集和记录,首先,需要阐明以下概念:
(1)视频编码:视频编码是指将视频格式的文件通过特定的压缩技术转换为另一视频格式的文件的方式。 我们使用iPhone录制的视频必须先经过编码,上传和解码,然后才能在用户端播放器中播放。
(2)编解码标准:视频流传输中最重要的编解码标准包括ITU的H.261,H.263和H.264,其中HLS协议支持H.264格式编码。
(3)音频编码:类似于视频编码,原始音频流按照一定的标准进行编码,上传,解码,然后在播放器中播放。 当然,音频也有许多编码标准,例如PCM码,wma码,AAC码等。我们的HLS协议支持的音频编码方法是AAC码。
视频和音频数据采集主要分为以下步骤:
(1)在IOS上使用摄像头采集视频和音频数据
(2)在IOS中,原始音频和视频数据流可以通过avcapturesession和avcapturedevice收集。
(3)视频采用h264编码,音频采用AAC编码。 在IOS中,已经有打包的编码库来实现音频和视频的编码。
(4)对编码后的音视频数据进行组装和密封处理;
(5)建立RTMP连接并将其推送到服务器。
以下是收集音频和视频数据的具体过程:
(1)关于RTMP:
实时消息协议(RTMP)是Macromedia开发的一组实时视频协议,现在属于Adobe。 与HLS一样,它可以用于视频广播。 区别在于RTMP无法在基于Flash的IOS浏览器中播放,但其实时性优于HLS。 因此,该协议通常用于上传视频流,即视频流被推送到服务器。
(2)推流
所谓的流媒体是指将我们已编码的音频和视频数据发送到视频流服务器。 在IOS代码中,通常使用RTMP流。 Librtmp IOS,一个第三方库,可用于流式传输。 Librtmp封装了一些核心API供用户调用。 例如,推送API等,配置服务器地址,然后将转码视频流推送到服务器。
那么如何构建流服务器?
构建简单的流服务器。 由于我们上传的视频流基于RTMP协议,因此服务器必须支持RTMP。 它可能会采取以下步骤:
(1)安装一个nginx服务器。
(2)已安装nginx的RTMP扩展名。 为Nginx配置conf文件
(3)重启nginx,将RTMP的流地址写为rtmp:// ip:1935 / hls / mystream,其中HLS_ Path代表生成的地址。M3u8和TS文件,HLS_ Fragment代表slice的长度,mystream代表一个实例。 可以自行设置要生成的文件名。
5,直播中的用户互动:
对于实时广播中的用户交互,可以将其大致分为:
送礼物。
评论或玩
对于礼品交付,可以使用DOM和CSS3实现礼品发送的逻辑以及HTML5上的一些特殊礼品动画。 技术上的困难不是很大。
对于弹幕来说,要稍微复杂一点,您可能需要注意以下几点:
弹丸的实时性能可以通过webscock实时发送和接收并进行渲染。
对于不支持websocket的浏览器,只能将其降级为长时间轮询或发送请求以获取实时弹出窗口的前端计时器。
渲染中的动画和碰撞检测(即无重叠)等
|
输入电子邮件以获取惊喜
es.fmuser.org
it.fmuser.org
fr.fmuser.org
de.fmuser.org
af.fmuser.org ->荷兰语
sq.fmuser.org ->阿尔巴尼亚人
ar.fmuser.org ->阿拉伯语
hy.fmuser.org - >亚美尼亚
az.fmuser.org ->阿塞拜疆
eu.fmuser.org ->巴斯克
be.fmuser.org ->白俄罗斯语
bg.fmuser.org - >保加利亚
ca.fmuser.org ->加泰罗尼亚语
zh-CN.fmuser.org ->中文(简体)
zh-TW.fmuser.org - >中国(繁体)
hr.fmuser.org ->克罗地亚语
cs.fmuser.org ->捷克
da.fmuser.org ->丹麦语
nl.fmuser.org - >荷兰
et.fmuser.org ->爱沙尼亚语
tl.fmuser.org ->菲律宾
fi.fmuser.org ->芬兰语
fr.fmuser.org - >法国
gl.fmuser.org ->加利西亚语
ka.fmuser.org ->乔治亚
de.fmuser.org ->德语
el.fmuser.org - >希腊
ht.fmuser.org ->海地克里奥尔语
iw.fmuser.org ->希伯来语
hi.fmuser.org ->印地语
hu.fmuser.org - >匈牙利
is.fmuser.org ->冰岛语
id.fmuser.org ->印尼语
ga.fmuser.org ->爱尔兰
it.fmuser.org - >意大利
ja.fmuser.org ->日语
ko.fmuser.org ->韩文
lv.fmuser.org ->拉脱维亚
lt.fmuser.org - >立陶宛
mk.fmuser.org ->马其顿语
ms.fmuser.org ->马来语
mt.fmuser.org ->马耳他语
no.fmuser.org - >挪威
fa.fmuser.org ->波斯语
pl.fmuser.org ->波兰语
pt.fmuser.org ->葡萄牙语
ro.fmuser.org - >罗马尼亚
ru.fmuser.org ->俄语
sr.fmuser.org ->塞尔维亚语
sk.fmuser.org ->斯洛伐克
sl.fmuser.org - >斯洛文尼亚
es.fmuser.org ->西班牙语
sw.fmuser.org ->斯瓦希里语
sv.fmuser.org ->瑞典语
th.fmuser.org - >泰国
tr.fmuser.org ->土耳其语
uk.fmuser.org ->乌克兰语
ur.fmuser.org ->乌尔都语
vi.fmuser.org - >越南
cy.fmuser.org ->威尔士语
yi.fmuser.org - >意第绪语
FMUSER更轻松地传输视频和音频!
联系我们
分类目录
订阅电子邮件