Skip to content

KSYPlayRecord

xinbaicheng edited this page Sep 6, 2017 · 9 revisions

边播边录

金山云Android播放SDK提供了边播边录功能, 即在播放过程中可以录制视频与声音并生成MP4, 且录制生成的视频内容不包含UI等信息

1. 使用要求

  1. SDK版本要求

    • 播放SDK: v2.0.5 及以上版本
  2. Android系统版本: Android 4.3 (API Level 18)及以上

  3. 仅在软解时生效

  4. 不建议录制高分辨率的视频

2. 核心类及接口定义

2.1 核心类

边播边录的和核心类KSYMediaPlayerRecorder, 其构造函数及接口如下

/**
 * 音视频编码配置与输出路径不可为空,否则会抛出异常
 *
 * @param config 音视频编码配置类
 * @param outputPath 输出路径
 */
public KSYMediaRecorder(KSYMediaRecorderConfig config, String outputPath)

/**
 * 初始化接口
 *
 * @param player 播放器对象
 * @throws IOException
 */
public void init(KSYMediaPlayer player) throws IOException

/**
 * 开始录制
 */
public void start()

/**
 * 结束录制
 */
public void stop()
2.2 音视频编码配置类

视频编码配置类KSYMediaRecorderConfig

音频编码的采样率和声道数与视频源有关,并没提供设置接口
视频编码的宽高及帧率与视频源相关,并没提供设置接口

/**
 * 设置视频编码码率, 默认值为 800kbps
 *
 * @param bitrate 视频码率, 单位: bit
 */
public void setVideoBitrate(int bitrate)

/**
 * 设置视频编码关键帧间隔, 默认值为 3s
 *
 * @param second 视频关键帧间隔, 单位: 秒
 */
public void setKeyFrameIntervalSecond(int second)

/**
 * 设置音频编码码率, 默认值为 64kbps
 *
 * @param bitrate 音频码率, 单位: bit
 */
public void setAudioBitrate(int bitrate)

/**
 * 设置是否录制音频, 默认值为 TRUE
 * @param state true表示录制音频, 反之则否
 */
public void setAudioRecordState(boolean state)

3. 使用示例

3.1 使用KSYMediaPlayer
KSYMediaPlayer mKsyMediaPlayer;
KSYMediaRecorder mMediaRecorder;
String outputPath = "/mnt/sdcard/output.mp4";
KSYMediaRecorderConfig mediaConfig = new KSYMediaRecorderConfig();

mKsyMediaPlayer.setDataSource("http://xxx.xx.com/test.mp4");
mKsyMediaPlayer.prepareAsync();

// ...
mediaConfig.setVideoBitrate(800 * 1000); //码率设置为 800kbps
mediaConfig.setKeyFrameIntervalSecond(3); //关键帧间隔为 3s
mediaConfig.setAudioBitrate(64*1000); // 音频编码码率设置为 64kbps

mMediaRecorder = new KSYMediaRecorder(mediaConfig, outputPath);
mMediaRecorder.init(mKsyMediaPlayer); // 初始化
mMediaRecorder.start(); // 开始录制
// ...
mMediaRecoder.stop(); // 结束录制
3.2 使用KSYTextureView
KSYTextureView mVideoView;
KSYMediaRecorder mMediaRecorder;
String outputPath = "/mnt/sdcard/output.mp4";
KSYMediaRecorderConfig mediaConfig = new KSYMediaRecorderConfig();

mVideoView.setDataSource("http://xxx.xx.com/test.mp4");
mVideoView.prepareAsync();

// ...
mediaConfig.setVideoBitrate(800 * 1000); //码率设置为 800kbps
mediaConfig.setKeyFrameIntervalSecond(3); //关键帧间隔为 3s

mediaConfig.setAudioBitrate(64*1000); // 音频编码码率设置为 64kbps

mMediaRecorder = new KSYMediaRecorder(mediaConfig, outputPath);
mMediaRecorder.init(mVideoView.getMediaPlayer()); // 初始化
mMediaRecorder.start(); // 开始录制
// ...
mMediaRecoder.stop(); // 结束录制
Clone this wiki locally