Skip to content

KSYPlayRecord

xinbaicheng edited this page Aug 1, 2017 · 9 revisions

边播边录

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

1. 使用要求

  1. SDK版本要求

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

  3. 仅在软解时生效

2. 核心类及接口定义

2.1 核心类

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

/**
 * 视频编码配置与输出路径不可为空,否则会抛出异常,音频编码配置为空时便不会录制音频
 *
 * @param videoConfig 视频编码配置类
 * @param audioConfig 音频编码配置类
 * @param outputPath 输出路径
 */
public KSYMediaRecorder(VideoRecorderConfig videoConfig, AudioRecorderConfig audioConfig, String outputPath)

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

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

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

视频编码配置类VideoRecorderConfig

视频编码的宽高及帧率与视频源相关,并没提供设置接口

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

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

音频编码配置类AudioRecorderConfig相关接口

/**
 * 设置音频编码采样率, 默认值为 44100
 *
 * @param bitrate 音频编码采样率, 单位: Hz
 */
public void setAudioSampleRate(int sampleRate)

/**
 * 设置音频编码声道数, 默认值为 1
 *
 * @param channelCount 音频编码声道数
 */
public void setAudioChannelCount(int channelCount)

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

3. 使用示例

3.1 使用KSYMediaPlayer
KSYMediaPlayer mKsyMediaPlayer;
KSYMediaRecorder mMediaRecorder;
String outputPath = "/mnt/sdcard/output.mp4";
VideoRecorderConfig videoConfig = new VideoRecorderConfig();
AudioRecorderConfig audioConfig = new AudioRecorderConfig();

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

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

audioConfig.setAudioSampleRate(44100); // 音频采样率设置为 44100Hz
audioConfig.setAudioChannelCount(1); // 声道数设置为 1
audioConfig.setAudioBitrate(64*1000); // 音频编码码率设置为 64kbps

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

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

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

audioConfig.setAudioSampleRate(44100); // 音频采样率设置为 44100Hz
audioConfig.setAudioChannelCount(1); // 声道数设置为 1
audioConfig.setAudioBitrate(64*1000); // 音频编码码率设置为 64kbps

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