使用和了解EasyRTMP组件的朋友们应该清楚,手机屏幕推流时支持直播推送、屏幕推送、录像等功能,不拘泥于手机品牌与网络环境,实现课堂直播、互联网直播、手机直播等,符合现行条件下网络突飞猛进的需求。
EasyRTMP是结合了多种音视频缓存及网络技术的一个rtmp直播推流端,包括:圆形缓冲区(circular buffer)、智能丢帧、自动重连、rtmp协议等多种技术,能够非常有效地适应各种平台(Windows、Linux、ARM、Android、iOS),各种网络环境(有线、wifi、4G),以及各种情况下的直播恢复(服务器重启、网络重启、硬件设备重启)。
EasyRTMP_File:EasyRTMP做为RTMP推送端,将本地文件推送到RTMP流媒体服务器;
EasyRTMP_RTSP:将RTSP/RTP数据获取到本地,再通过EasyRTMP推送到RTMP服务器;
EasyRTMP-Android:Android安卓RTMP直播推流,采集安卓手机前/后摄像头、麦克风音视频推送直播;项目地址:https://github.com/EasyDSS/EasyRTMP-Android
EasyRTMP-iOS:iOS苹果RTMP直播推流,采集苹果手机前/后摄像头、麦克风音视频推送直播;项目地址
提出问题
EasyRTMP-iOS录像的实现方式是什么?
分析问题
iOS在实现视频录制功能的时,如果单纯的使用AVCaptureMovieFileOutput将录制的视频文件进行输出,则会导致录制的视频文件太过于大。而使用AVAssetWriter 实现高分辨率录制视频,生成低体积的视频文件。
解决问题
AVAssetWriter实现视频录制的流程如下:
1、初始化AVAssetWriter,需要输入文件在沙盒中的路径,并设置视频文件的大小已属性:
2、将AVCaptureAudioDataOutputSampleBufferDelegate的回调中获取到的视频和音频的原始数据写入到文件中:
写入视频数据:
写入音频数据:
3、同时可以将录像的进度回调出去:
4、最后完成视频的录制: