新聞中心
這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
創(chuàng)新互聯(lián)鴻蒙OS教程:鴻蒙OS視頻錄制開發(fā)指導(dǎo)
場景介紹

成都創(chuàng)新互聯(lián)-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價(jià)比武城網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式武城網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋武城地區(qū)。費(fèi)用合理售后完善,十多年實(shí)體公司更值得信賴。
視頻錄制的主要工作是選擇視頻/音頻來源后,錄制并生成視頻/音頻文件。
接口說明
| 接口名 | 功能描述 |
|---|---|
| Recorder() | 創(chuàng)建 Recorder 實(shí)例。 |
| setSource(Source source) | 設(shè)置音視頻源。 |
| setAudioProperty(AudioProperty property) | 設(shè)置音頻屬性。 |
| setVideoProperty(VideoProperty property) | 設(shè)置視頻屬性。 |
| setStorageProperty(StorageProperty property) | 設(shè)置音視頻存儲屬性。 |
| prepare() | 準(zhǔn)備錄制資源。 |
| start() | 開始錄制。 |
| stop() | 停止錄制。 |
| pause() | 暫停錄制。 |
| resume() | 恢復(fù)錄制。 |
| reset() | 重置錄制。 |
| setRecorderLocation(float latitude, float longitude) | 設(shè)置視頻的經(jīng)緯度。 |
| setOutputFormat(int outputFormat) | 設(shè)置輸出文件格式。 |
| getVideoSurface() | 獲取視頻窗口。 |
| setRecorderProfile(RecorderProfile profile) | 設(shè)置媒體錄制配置信息。 |
| registerRecorderListener(IRecorderListener listener) | 注冊媒體錄制回調(diào)。 |
| release() | 釋放媒體錄制資源。 |
開發(fā)步驟
- 調(diào)用 Recorder() 方法,創(chuàng)建 Recorder 實(shí)例。
- 調(diào)用 setOutputFormat(int outputFormat) 方法,設(shè)置錄制文件存儲格式。
- 構(gòu)造數(shù)據(jù)源對象,并調(diào)用 Recorder 實(shí)例的 setSource(Source source) 方法,設(shè)置媒體源,代碼示例如下:
Recorder recorder = new Recorder();
FileDescriptor fd = in.getFD();
Source source = new Source(fd);
source.setRecorderAudioSource(Recorder.AudioSource.DEFAULT);
recorder.setSource(source);- (可選)構(gòu)造音頻屬性 AudioProperty 對象(不設(shè)置音頻則是只錄視頻),并調(diào)用 Recorder 實(shí)例的 setAudioProperty(AudioProperty property) 方法,設(shè)置錄制的音頻屬性,代碼示例如下:
final int AUDIO_NUM_CHANNELS_STEREO = 2;
final int AUDIO_SAMPLE_RATE_HZ = 8000;
AudioProperty audioProperty = new AudioProperty.Builder()
.setRecorderNumChannels(AUDIO_NUM_CHANNELS_STEREO)
.setRecorderSamplingRate(AUDIO_SAMPLE_RATE_HZ)
.setRecorderAudioEncoder(Recorder.AudioEncoder.DEFAULT)
.build();
recorder.setAudioProperty(audioProperty);- 構(gòu)造存儲屬性 StorageProperty 對象,并調(diào)用 Recorder 實(shí)例的 setStorageProperty(StorageProperty property) 方法,設(shè)置錄制的存儲屬性,代碼示例如下:
String path = "/path/audiotestRecord.mp4";
StorageProperty storageProperty = new StorageProperty.Builder()
.setRecorderPath(path)
.setRecorderMaxDurationMs(-1)
.setRecorderMaxFileSizeBytes(-1)
.build();
recorder.setStorageProperty(storageProperty);- (可選)構(gòu)造視頻屬性 VideoProperty 對象,并調(diào)用 Recorder 實(shí)例的 setVideoProperty(VideoProperty property) 方法,設(shè)置錄制的視頻屬性,代碼示例如下:
VideoProperty videoProperty = new VideoProperty.Builder()
.setRecorderVideoEncoder(Recorder.VideoEncoder.DEFAULT)
.setRecorderWidth(1080)
.setRecorderDegrees(0)
.setRecorderHeight(800)
.setRecorderBitRate(10000000)
.setRecorderRate(30)
.build();
recorder.setVideoProperty(videoProperty);- 調(diào)用 prepare(),準(zhǔn)備錄制。
- (可選)構(gòu)造錄制回調(diào),首先構(gòu)造對象 IRecorderListener,IRecorderListener 需要實(shí)現(xiàn) onError(int what, int extra),實(shí)現(xiàn)錄制過程收到錯(cuò)誤信息時(shí)做相應(yīng)的操作。下面的代碼例子中錄制異常時(shí),打印了相關(guān)的日志信息,代碼示例如下:
IRecorderListener listener = new RecorderErrorAndInfoListener() {
@Override
public void onError(int what, int extra) {
HiLog.error("EncodeWriteFileListener onError what:%{public}d, extra:%{public}d", what, extra);
}
}- 調(diào)用 start() 方法,開始錄制。
- (可選)調(diào)用 pause() 方法和 resume() 方法,可以實(shí)現(xiàn)暫停和恢復(fù)錄制。
- 調(diào)用 stop() 方法停止錄制。
- 錄制結(jié)束后,調(diào)用 release() 釋放資源。
分享標(biāo)題:創(chuàng)新互聯(lián)鴻蒙OS教程:鴻蒙OS視頻錄制開發(fā)指導(dǎo)
URL鏈接:http://fisionsoft.com.cn/article/cdegehj.html


咨詢
建站咨詢
