关闭

[置顶] 基于iOS的网络音视频实时传输系统(一)- 前言

标签: 网络摄像头音视频实时传输socket
407人阅读 评论(2) 收藏 举报
分类:

演示图


(由于GIF大小限制,图做得比较模糊和不太流畅,实际的效果是不错的,可以自己下下来实际跑一下)

client端:




server端:





下载


GitHub:

client 端:https://github.com/AmoAmoAmo/Smart_Device_Client

server端:https://github.com/AmoAmoAmo/Smart_Device_Server

另还写了一份macOS版的server,但是目前还有一些问题,有兴趣的去看看吧:https://github.com/AmoAmoAmo/Server_Mac



简介


之前在做类似的网络协议的时候,突发奇想,想写一个网络视频监控,基于局域网的情况下,将MacBook摄像头捕获到的视频,在手机端显示,但是由于对macOS不是很熟悉,最终导致该计划流产。所以后来干脆使用手机捕获视频数据。

为了简化项目工作量,socket协议也只用到了一些必要的功能,其他细节如client端退出监控视频时,server端会crash,各位有需要可以自行去添加一些如设置select()函数,或者设置signal()函数忽略这个断开的信号。等等

项目中没有写录制设备视频的功能,所以没有用到MP4封装

更多其他的细节已经搭建过程,有兴趣的可以去我的GitHub上回退到各个版本看循序渐进的过程。关于音视频我也是初学者,欢迎各位斧正。



主要功能


client端:

1. udp局域网搜索设备(模拟设备的代码在这里),或者手动添加其他设备(并没有功能) 到plist
2. 点击已添加的监控设备,开始TCP音视频数据传输
3. 接收到音视频数据,进行解码,并用OpenGL es渲染显示到界面上 或openAL播放音频
4. 横竖屏功能

server端(摄像头):

1. 点击“reset”,进入“配对模式”,即开始UDP监听AP
2. 连接成功后,将自己的设备信息发送给client
3. 开始捕获音视频,并进行硬编码,发送给client



使用方法


第一次使用时,先点击“server”端的“reset”按钮,表示开始处于配对模式,

“client”端点击“+”按钮,开始去局域网里搜索(UDP)设备,就会得到设备的IP地址等信息,后面音视频传输就是用这个IP地址来建立TCP通信的。这个过程模拟实际应用中

这里音视频传输用TCP还是UDP没有什么讲究,主要是根据嵌入式工程师给的音视频协议文档里用到的是哪个。

这里就是用“server”端来模拟一种型号的监控摄像头。

找到设备后,信息会自动被填写到textField上,点击“添加”,设备就被写入plist文件里。

点击已添加的监控视频,即可开始音视频传输



相关文章


基于iOS的网络音视频实时传输系统(一)- 前言

基于iOS的网络音视频实时传输系统(二)- 捕获音视频数据

基于iOS的网络音视频实时传输系统(三)- VideoToolbox编码音视频数据为H264、AAC

基于iOS的网络音视频实时传输系统(四)- 自定义socket协议(TCP、UDP)

基于iOS的网络音视频实时传输系统(五)- 使用VideoToolbox硬解码H264

基于iOS的网络音视频实时传输系统(六)- AudioQueue播放音频,OpenGL渲染显示图像


0
0
查看评论

iOS下WebRTC音视频通话(二)-局域网内音视频通话

这里是iOS 下WebRTC音视频通话开发的第二篇,在这一篇会利用一个局域网内音视频通话的例子介绍WebRTC中常用的API。 如果你下载并编译完成之后,会看到一个iOS 版的WebRTC Demo。但是那个demo涉及到外网的通讯需要翻墙,而且还有对信令消息的封装理解起来非常的困难。 但是,我...
  • u011619283
  • u011619283
  • 2016-06-15 18:10
  • 4747

iOS 简单的视频直播功能开发(实时视音频流录制编码+RTMP传输+实时拉流解码播放)

http://blog.csdn.net/pilgrim1385/article/details/51681332 推流端:自己开发难度很大,视频直播就被卡死了,音频根本没来得及弄,最终使用了github上开源的框架。         ...
  • jeffasd
  • jeffasd
  • 2016-10-19 14:01
  • 2648

音视频聊天开发: 3 UDP的简单封装

视频的采集显示以及编码解码都实现了,下一步就要考虑把数据发出去,由其他客户端播放(设计是先做网络传输,一切都正常后再做音频,虽然叫音视频聊天,其实网络才是最重要的部分)。这里使用UDP进行发送和接收。        考虑到音视频聊天,需要...
  • Louis_815
  • Louis_815
  • 2017-03-21 14:27
  • 493

手机音视频开发 视频聊天APP应用

1.前言 随着手机技术不断发展,iPhone(iOS)以及Android等智能手机普及速度加快,越来越多的人选择使用手机终端进行各种音视频,比如视频聊天、视频会议、远程医疗、IM、在线开户等。根据市场研究机构comScore发布的最新消息,2011年8月,在美国Android和iOS设备控制了...
  • little_rui
  • little_rui
  • 2015-01-21 09:33
  • 2525

iOS音频编程之实时语音通信

iOS音频编程之实时语音通信需求:手机通过Mic采集PCM编码的原始音频数据,将PCM转换为AAC编码格式,通过MultipeerConnectivity框架连接手机并发送AAC数据,在接收端使用Audio Queue播放收到的AAC音频音频设置 对音频以44.1KHZ的采样率来采样,以6400...
  • IT_yangjing
  • IT_yangjing
  • 2016-07-14 15:46
  • 3960

Android音频实时传输与播放(二):服务端

转载请注明出处! 原文链接:http://blog.csdn.net/zgyulongfei/article/details/7750707 我偷懒就用java写了个简单的服务器,大家明白原理就好。 服务端共开放两个端口,一个udp上行端口用来接收amr音频流,另一个tcp下行端口用来...
  • zgyulongfei
  • zgyulongfei
  • 2012-07-16 11:22
  • 17335

android 发送语音功能和ios交互格式aac

android 发送语音功能和ios交互格式aac 看到标题大家应该都知道了,本文主要实现android发送语音功能 前面几篇博客写的webSocket,notifaction和service,当然了既然是即时通讯,怎么能少了语音聊天呢。 下面先简单说下语音功能的描述,在android中针对语音...
  • MINGZHNGLEI
  • MINGZHNGLEI
  • 2016-12-08 11:30
  • 1405

基于iOS的网络音视频实时传输系统(二)- 捕获音视频数据

获取音视频数据,这里使用的是AVCaptureSession,可以方便地自定义相机界面,看起来大概是这样的:
  • a997013919
  • a997013919
  • 2017-09-25 20:41
  • 251

基于iOS的网络音视频实时传输系统(三)- VideoToolbox编码音视频数据为H264、AAC

server端--编码音视频数据为H264、AAC 这部分花了好多时间,本身就不具备这方面的相关知识,查阅了不少资料,不过关于VideoToolbox和AudioToolbox方面的编码资料寥寥无几,虽然网上搜索结果看似特别多,其实一看 内容也大同小异,建议还是看看官方的文档。
  • a997013919
  • a997013919
  • 2017-10-12 15:33
  • 181

基于iOS的网络音视频实时传输系统(五)- 使用VideoToolbox硬解码H264

client端--接收音视频数据,并解码H264、AAC
  • a997013919
  • a997013919
  • 2017-10-12 15:34
  • 223
    个人资料
    • 访问:11071次
    • 积分:579
    • 等级:
    • 排名:千里之外
    • 原创:45篇
    • 转载:5篇
    • 译文:0篇
    • 评论:6条
    文章分类
    最新评论