Skip to content

rawData

shixuemei edited this page Aug 3, 2017 · 7 revisions

在播放过程中,可以通过设置block的方式使得SDK将解码后的视频或音频数据上抛出来

一、方法

@property (nonatomic, copy) KSYPlyVideoDataBlock videoDataBlock;
@property (nonatomic, copy) KSYPlyAudioDataBlock audioDataBlock

二、说明

  • 解码后的视频数据格式为YUV
  • 解码后的音频数据格式为PCM
  • 上抛的音频和视频数据是经过同步处理的
  • 如果希望由上层来进行渲染动作,而不是底层播放器,建议将播放器属性shouldHideVideo设置为YES,底层则不再进行视频的渲染,不建议采用不绑定view的方式来隐藏画面
  • 如果希望由上层控制音频输出,建议将播放器属性shouldMute设置为YES
  • 该方法中返回的视频数据,为播放内容中的原始数据,如果内容自带rotate信息,渲染后看到的宽高与原始数据的宽高正好相反,可通过naturalRotate获取内容中的rotate信息

三、使用AVFoundation录制原始数据示例

在demo中,演示了如何使用AVFoundation方法将原始音频数据(不含有UI)保存为MP4文件。

如果你希望录制带有UI的文件,请参考这里

使用方法:进入播放页面,点击右上角的"其它"按钮,选择"开始/停止录制"滑块即可,录制下来的文件为:/Documents/PlayerRec.mp4

v2.3.0及以上版本支持该功能

3.1 初始化KSYAVWriter类

_AVWriter = [[KSYAVWriter alloc]initWithDefaultCfg];

3.2 参数配置

如果觉得默认值合适,可忽略该步骤

属性 说明 默认值
bWithVideo 是否录制视频 YES
videoBitrate 视频码率 单位是kbps,默认值为2000kbps
audioBitrate 音频码率 单位是kbps,默认值为64kbps
_AVWriter.videoBitrate = 1000;
_AVWriter.videoBitrate = 48

3.3 设置原始音视频编码参数

demo中录制下来的视频宽高,音频采样率、声道数等编码参数,均使用的是原始音视频编码参数

[_AVWriter setMeta:[_player getMetadata:MPMovieMetaType_Audio] type:KSYAVWriter_MetaType_Audio];
[_AVWriter setMeta:[_player getMetadata:MPMovieMetaType_Video] type:KSYAVWriter_MetaType_Video];

如果不希望按照原始参数录制,可自行修改KSYAVWriter中的相关配置,并忽略该步骤。

3.4 设置文件存储路径

url为文件在沙盒中的存储路径,后缀必须为".mp4",目前暂时只支持这种格式

[_AVWriter setUrl:[NSURL URLWithString:[NSString stringWithFormat:@"%@%s", NSHomeDirectory(), "/Documents/PlayerRec.mp4"]]];

3.5 开始写入

[_AVWriter startRecord];

3.6 写入视频数据

调用KSYAVWriter中的processVideoSampleBuffer方法写入视频的CMSampleBufferRef数据

_player.videoDataBlock = ^(CMSampleBufferRef sampleBuffer){
  //写入视频sampleBuffer
  [weakSelf.AVWriter processVideoSampleBuffer:sampleBuffer];
};

3.7 写入音频数据

调用KSYAVWriter中的processAudioSampleBuffer方法写入音频的CMSampleBufferRef数据

_player.audioDataBlock = ^(CMSampleBufferRef sampleBuffer){
  [weakSelf.AVWriter processAudioSampleBuffer:sampleBuffer];
};

3.8 停止写入音视频数据,生成指定文件

//停止写入
[_AVWriter stopRecord];
Clone this wiki locally