在现实生活中,手机和移动设备使用地越来越多,如何将音视频点播和直播发布到移动设备,这就涉及到很多相关的知识,比如android接收的音视频有哪些格式,分辨率是什么样子的,而ios设备接收的情况又是什么样子,支持什么样的协议。
这里首先要几样东西:
1 就是ts流传输,不是文件ts传输,而是直播传输,因为文件点播可以用什么来解决呢,就是html5,html5相对来讲较为容易,因为浏览器已经帮我们解决了大部分问题,另外,大名鼎鼎的播放器jwplayer就能用两种方式传输音视频,一种是rtmp协议,另可使用html5来。
2 HLS是苹果专门用来传输到苹果设备ipad,iphone移动设备的解决方案,比较成熟,只支持ts流,按秒分割文件。
3 rtsp协议,rtsp服务器,rtp协议,ts over udp over rtp ,当然ts over udp 也能接收。
4 编码传输,编码接受的音视频就是h264+aac ,当然mp3也是可以的,不过最好使用aac编码。
5 h264 图像传输中的sps pps 以及音视频同步,最后是pts和dts等相关知识。
6 桌面传输,桌面传输的高分辨率采集速度是个问题,他不像采集卡哪儿快,最快能到几帧呢,终极传输方案也许只能用镜像驱动么?并不一定。传输的时候鼠标指针怎么采集,怎样判断桌面变化了。
7 如何将海康等设备的非标准h264图像和g.711等音频转过来桥接到rtsp服务器上呢,都可以做到,耐心就可以。
下表for iphone等ios设备。
8 如何存储呢,可以存成什么格式,答案是任何格式都可以,首先是存成mp4,以利于移动设备点播。
9 在接收的过程中可以进行图像识别吗,答案也是可以,用一个客户端连接上rtsp服务器,接收后转成yuv 格式取 y 分量进行图像识别,如果要省事,y 分量后面直接挂接
opencv就可以,如何进行人脸识别,也非常简单,还是pca算法,将y 分量挂接到你的插件里面,用插件形式来进行识别。
这里使用标准rtsp服务器的好处就是既可以用客户端连接上观看, 也可以用一个客户端连接上网络存储,更可以用客户端连接上来进行图像识别,最大的好处,当然是使用
移动设备可直接观看了。
基本编码for iPhone, iPod touch, iPad, and Apple TV, 16:9 | ||||
Connection | 分辨率 | 音视频码率 | 视频码率 | 帧率 |
Cellular | 480 x 320 | 64 kpbs | audio only | none |
Cellular | 480 x 224 | 150 kpbs | 110 kbps | 30 |
Cellular | 480 x 224 | 240 kpbs | 200 kbps | 45 |
Cellular | 480 x 224 | 440 kpbs | 400 kbps | 90 |
WiFi | 640 x 360 | 640 kpbs | 600 kbps | 90 |
当然1920*1080,所谓的1080p做到也是可能的,条件是带宽
for android
| SD (Low quality) | SD (High quality) | HD (部分设备支持) |
H264视频编码方案 | H.264 Baseline Profile | H.264 Baseline Profile | H.264 Baseline Profile |
视频分辨率 | 176 x 144 px | 480 x 360 px | 1280 x 720 px |
帧率 | 12 fps | 30 fps | 30 fps |
码率 | 56 Kbps | 500 Kbps | 2 Mbps |
音频编码 | AAC-LC | AAC-LC | AAC-LC |
音频通道 | 1 (mono) | 2 (stereo) | 2 (stereo) |
音频码率 | 24 Kbps | 128 Kbps | 192 Kbps |
以下是架构图,有能力的程序员可自行写出代码来,原理就是如此。
年前没时间再写了,年后整理代码放出,纯c++ 代码,在vs2010 下实现。qq:418511899