笔记- iphone手机音频AAC视频H264推流(一) iphone手机推流最佳方案

这几个月一直在做iphone手机音视频的东西,由于个人比较懒,所以一直没整理,现在闲的蛋疼,并且以后项目要搁置了,在这里记录一下我做的iphone手机推流的东西。

项目都是个人的调研与实验,可能很多不好或者不对的地方请多包涵。

1    功能概况

*  实现音视频的数据的采集

*  实现音视频数据的编码,视频编码成h264,音频编码成aac

*  实现音视频数据的发布,将编码好的音视频数据传输到服务器

2 视频和音频编码方案

视频硬编码需要使用AVAssetWriter,但是他只支持直接将数据编码成h264并写入文件,不提供接口中途获取视频数据处理,我们需要在保存的文件中读出数据

据顶采用软编码,主流开源编解码器Xvid,x264,ffmpeg,Xvid是基于MPEG4协议的编解码器,x264是基于H.264协议的编码器,ffmpeg集合了各种音频,视频编解码协议,通过设置参数可以完成基于MPEG4,H.264等协议的编解码,基于效率,决定使用x264进行软编

Ios支持aac音频软编码和硬编码,硬编无需消耗cpu,效率高,决定使用硬编。使用Audio Queue

3. 技术流程图

4  相关技术

(1)x264编码器

x264是一个采用GPL授权的视频编码自由软件[1]。x264的主要功能在于进行H.264/MPEG-4 AVC的视频编码,而不是作为解码器(decoder)之用。

(2) 在xcode下编译x264库

*  下载x264的库

*  打开shell,执行编译,由于我们的饮食频道额采集在模拟器上不能进行,所以不编译i386的库,直接编译armv7的库

*  执行make,编译成功得到libx264.a

(3) Audioqueue简介

要在iOS设备上播放和录制音频,苹果推荐我们使用AVFoundation框架中的AVAudioPlayer和AVAudioRecorder类。虽然用法比较简单,但是不支持流式;这就意味着:在播放音频前,必须等到整个音频加载完成后,才能开始播放音频;录音时,也必须等到录音结束后,才能获取到录音数据。这给应用造成了很大的局限性。为了解决这个问题,我们就需要使用Audio Queue Services来播放和录制音频.

Audio Queue Services提供了在iOS 和 Mac OS X上直接录制和播放各种格式的音频,他能让你的应用程序在没有硬件接口知识的情况下使用硬件录音和播放设备,如microphones 和loudspeakers。

(4)  Audioqueue录制音频过程

一个Recording Audio Queue,包括Buffer(缓冲器)组成的Buffer Queue(缓冲队列),以及一个Callback(回调)

录音流程如下:

l 将音频填入第一个缓冲器中

l 当队列中的第一个缓冲器填满时,会自动填充下一个缓冲器。此时,会触发回调。

l 在回调函数中需要将音频数据流写入磁盘

l 然后,需要在回调函数中将该缓冲器重新放入缓冲队列,以便重复使用该缓冲器。重复步骤2。

Audio Queue录制aac音频数据如下流程:

5 rtmp发送音视频

xcode中编译librtmp库

在xcode中使用librtmp库可将音视频数据打成包,遵循rtmp协议,将数据发送到指定服务器,前提需要编译librtmp库并在xcode中使用此库

*  下载rtmpdump源码

*  shell下编译librtmp成librtmp.a并加入到xcode工程

*  拷贝rtmpdump的include文件夹到xcode下的相应工程,并将路径添加到User Header SearchPaths

*  在工程中引入使用librtmp

6. 音视频同步

采用时间戳技术,时间戳即为一帧的采集时间,音视频采取同一个参考时间,给每个帧打上时间戳

待续。。。

时间: 2024-10-13 09:26:35

笔记- iphone手机音频AAC视频H264推流(一) iphone手机推流最佳方案的相关文章

iOS音频AAC视频H264编码 推流最佳方案

项目都是个人的调研与实验,可能很多不好或者不对的地方请多包涵. 1    功能概况 *  实现音视频的数据的采集 *  实现音视频数据的编码,视频编码成h264,音频编码成aac *  实现音视频数据的发布,将编码好的音视频数据传输到服务器 2 视频和音频编码方案 视频硬编码需要使用AVAssetWriter,但是他只支持直接将数据编码成h264并写入文件,不提供接口中途获取视频数据处理,我们需要在保存的文件中读出数据 据顶采用软编码,主流开源编解码器Xvid,x264,ffmpeg,Xvid是

实验6 在应用程序中播放音频和视频

实验报告 课程名称 基于Android平台移动互联网开发 实验日期 4月15日 实验项目名称 在应用程序中播放音频和视频 实验地点 S3002 实验类型 □验证型    √设计型    □综合型 学  时 一.实验目的及要求(本实验所涉及并要求掌握的知识点) 实现在应用程序中处理音频和视频. [要求] 1) 实现播放音频,音频播放控制: 2) 实现播放视频,视频播放控制: 3) 使用Service服务播放项目源文件中的音乐. 二.实验环境(本实验所使用的硬件设备和相关软件) (1)PC机 (2)

关于iphone自动播放音频和视频问题的解决办法

大家都知道 做移动端 会遇到音频和视频无法自动播放问题(我也遇到了)于是想办法解决这个问题 我只是找到了在微信中解决的办法(如果谁有在别的浏览器有这个办法  请私聊我 )我是没有发现 document.getElementById('demo').play(); //必须在微信Weixin JSAPI的WeixinJSBridgeReady才能生效 document.addEventListener("WeixinJSBridgeReady", function () { docume

手机Android音视频采集与直播推送,实现单兵、移动监控类应用

恰逢2014 Google I/O大会,不难看出安卓在Google的推进以及本身的开放性作用下,已经快延生到生活的各个方面了,从安卓智能手机.平板,到可穿戴的Android Ware.眼镜.手表.再到Android汽车.智能家居.电视,甚至最近看新闻,日本出的几款机器人都是Android系统的,再把目光放回监控行业,传统监控中的移动终端设备,例如:单兵设备.手持设备.车载终端设备,包括家庭监控中用到的智能设备,都可以用Android系统替代了,不仅开发容易,而且易扩展,设备也更加智能了. 图 -

使用系统类播放音频和视频

iOS的系统类中提供了用于播放音频和视频的类,支持常见的多媒体格式 ? 框架支持:MediaPlayer.framework, ? ?AVFoundation.framework 1.音频 类: AVAudioPlayer ? 支持格式:?AAC,AMR,ALAC,iLBC,IMA4,PCM,MP3 初始化方法: initWithContentOfURL: error: initWithDate: error:? ? file type hint:是一个在AVMEdiiaFormat.h中声明的

【基于libRTMP的流媒体直播之 AAC、H264 解析】

前文我们说到如何在基于 libRTMP 库的流媒体直播过程中推送 AAC .H264 音视频流.本文以上文为基础,阐释如何对 RTMP 包进行解析.重组得到原始的 AAC 音频帧以及 H264 码流. 在继续阅读本文之前,我们首先假设读者已经能够使用 libRTMP 库从 RTMP 直播服务器不断地获取 RTMP 包,如前提不成立,请自行阅读 [抛开flash,自己开发实现C++ RTMP直播流播放器] 一文,实现一个简单的 RtmpDownloader 测试用例.这一部分恕 Bill 不再赘述

【基于libRTMP的流媒体直播之 AAC、H264 推送】

这段时间在捣腾基于 RTMP 协议的流媒体直播框架,其间参考了众多博主的文章,剩下一些细节问题自行琢磨也算摸索出个门道,现将自己认为比较恼人的 AAC 音频帧的推送和解析.H264 码流的推送和解析以及网上没说清楚的地方分享给各位. RTMP 协议栈的实现,Bill 直接使用的 libRTMP,关于 libRTMP 的编译.基本使用方法,以及简单的流媒体直播框架,请参见博文[C++实现RTMP协议发送H.264编码及AAC编码的音视频],言简意赅,故不再赘述. 言归正传,我们首先来看看 AAC 

常见图片、音频、视频格式总结

常见图片.音频.视频格式总结 常见图片音频视频格式总结 常见图片格式总结 图片的有损压缩和无损压缩 PSD格式 JPGJPEG 格式 GIF 格式 BMP 格式 PNG 格式 SWF 格式 CDR 格式 AI 格式 TIFF 格式 SVG格式 EPS格式 DXF格式 TGA格式 HDRI格式 RAW格式 EXIF格式 FPX格式 TGA格式 ICO格式图标 PCX格式 常见音频格式总结 1MP3格式 2WMA格式 3WAV格式 4ASF格式 5AAC格式 6Mp3Pro格式 7VQF格式 8FL

android视频录制、另一部手机实时观看方案

最近调研android视频录制.另一部手机实时观看,大致有以下几种思路. 1. android手机充当服务器,使用NanoHTTPD充当服务器,另一部手机或者pc通过输入http://手机的ip:8080网址观看. 这种方案可以参考 ipcamera-for-android开源项目,网址  http://code.google.com/p/ipcamera-for-android/source/checkout 可以运行的源代码可以在这下载            http://download.