上云无忧 > 文档中心 > 百度智能云短视频 SDK Android开发 - 字幕
短视频 SDK
百度智能云短视频 SDK Android开发 - 字幕

文档简介:
创建字幕控制器: 创建字幕控制器,使用字幕相关功能,需要创建字幕轨并添加到媒体轨道中心,并创建一个字幕片段,配合字幕UI逻辑使用,详见智能小视频源码,涉及组件BDHKVlogSubtitlesView(字幕位置),BDMVSubtitleInputAccessoryView(字幕输入框),BDMVInputEventBottomBar(字幕确认框)。
*此产品及展示信息均由百度智能云官方提供。免费试用 咨询热线:400-826-7010,为您提供专业的售前咨询,让您快速了解云产品,助您轻松上云! 微信咨询
  免费试用、价格特惠

创建字幕控制器

  • 创建字幕控制器,使用字幕相关功能,需要创建字幕轨并添加到媒体轨道中心,并创建一个字幕片段,配合字幕UI逻辑使用,详见智能小视频源码,涉及组件BDHKVlogSubtitlesView(字幕位置),BDMVSubtitleInputAccessoryView(字幕输入框),BDMVInputEventBottomBar(字幕确认框)
  • 代码示例如下:

//创建字幕控制器
		        mUgcSubtitleEditController = new UgcSubtitleEditController(this,
 mUgcPreViewFrameLayout, mVideoView);
        mUgcSubtitleEditController.setUgcVideoPreviewActivity(this);
        mUgcSubtitleEditController.setSubtitleEditControllerListener(
                new UgcSubtitleEditController.SubtitleEditControllerListener() {
                    @Override
                    public List<MultiMediaData> getDataList() {
                        return mDataSourceList;
                    }

                    @Override
                    public void updateSubtitleList(List<SubTitleUnit> subTitleUnits) {
                        if (mVlogEditManager != null) {
                            mVlogEditManager.setSubtitle(subTitleUnits);
                        }
                        if (mAEffectProcessor != null) {
                            mAEffectProcessor.changeEffect(mVlogEditManager.getShaderConfigMap(),
                                    mVlogEditManager.getUpdateMediaTracks());
                        }
                        if (mUgcSubtitleEditController != null) {
                            mUgcSubtitleEditController.changeSubtitleIcon(!ListUtils.isEmpty(subTitleUnits));
                        }
                    }

                    @Override
                    public String getThemeId() {
                        return "";
                    }

                    @Override
                    public void updateSubtitleConfig(SubTitleConfig subTitleConfig) {
                        if (mVlogEditManager != null) {
                            mVlogEditManager.setSubtitleConfig(subTitleConfig);
                        }

                        VideoDraftBean videoDraftBeanDb = getVideoDraftBeanDb();
                        if (videoDraftBeanDb != null) {
                            videoDraftBeanDb.setVideoSubtitleConfig(SubTitleConfig.beanToJson(subTitleConfig));
                            CurrentVideoBeanManager.updateVideoDraftBean(videoDraftBeanDb);
                        }
                    }

                    @Override
                    public void setIsNeedPauseWhenEdit(boolean isNeedPauseWhenEdit) {
                        mIsNeedPauseWhenEdit = isNeedPauseWhenEdit;
                    }
                    
                    @Override
                    public void saveSubtitleDraft(List<SubTitleUnit> subTitleUnits) {
                        VideoDraftBean videoDraftBeanDb = getVideoDraftBeanDb();
                        if (videoDraftBeanDb != null) {
                            videoDraftBeanDb.setVideoSubtitleData(SubTitleUnit.arrayToJson(subTitleUnits));
                            CurrentVideoBeanManager.updateVideoDraftBean(videoDraftBeanDb);
                        }
                    }

                    @Override
                    public void updateIsPauseByUser(boolean isPauseByUser) {
                        mIsPausePlayByUser = isPauseByUser;
                        if (mIsPausePlayByUser) {
                            if (mVlogEditManager != null) {
                                mVlogEditManager.pause();
                            }
                            if (mPreviewMusicPlayer != null) {
                                mPreviewMusicPlayer.onPause();
                            }
                        }
                    }
                });

设置字幕画面位置

  • 设置字幕画面位置,可以调整字幕轨道上某个字幕的显示位置
  • 代码示例如下:
private void inflateDragSubtitleLayout() {
        if (mDragSubtitleViewStub == null) {
            return;
        }
        mDragSubtitleLayout = (DragSubtitleLayout) mDragSubtitleViewStub.inflate();
        mDragSubtitleLayout.setOnDragItemClickListener(this);
        mDragSubtitleViewStub = null;
        if (mSubTitleConfig != null) {
            mDragSubtitleLayout.setSubtitleConfig(mSubTitleConfig);
        }
        mDragSubtitleLayout.setOnDragItemMovedListener(new DragSubtitleLayout.OnDragItemMovedListener() {
            @Override
            public void onDragItemMoved() {
                mIsChangeSubtile = true;
            }
        });
        mDragSubtitleLayout.setOnCancelFocusManuallyListener(new DragSubtitleLayout.OnCancelFocusManuallyListener() {
            @Override
            public void onCancelFocusManually(SubTitleUnit subTitleUnit) {
                if (mSubtitleEditLayout != null && mSubtitleEditLayout.getVideoShaft() != null
                        && mIPlayerDataSource != null) {
                    mSubtitleEditLayout.getVideoShaft().clearSelectState();
                }
            }
        });
相似文档
  • 录制的相关接口是在com.baidu.ugc.record.RecordManager类里,包括录制、美颜、贴纸和滤镜。 初始化接口: 设置预览画面: void setGLSurfaceView(GLSurfaceView view) 初始化录像机: void init(RecordManager.ICamera cameraManager, int cameraFrameRate, int videoBitrate, boolean isCameraFront, java.lang.Stri
  • 注册账号及实名认证请您参考注册账号和实名认证。短视频SDK目前对个人认证还是企业认证不做要求,推荐您进行企业认证。
  • 支持的系统与设备: 手机设备:- 华为、小米、OPPO、VIVO等主流机型。 - iphone6及以上。 操作系统:- ios 9.0以上系统。 - Android 4.4以上系统。
  • 短视频SDK中集成了AR特效的能力,您可以选择下载您申请的license中的AR版本对应的SDK版本。
  • 1 Demo下载 我们提供完整的demo APP,包含AR特效能力和短视频拍摄&编辑全能力; 您可扫描以下二维码下载安装体验。 下载demo需要密码,密码为:bdcloud。 2 特效demo体验: (1)互动特效case-人脸特效。 多人脸贴纸特效。
官方微信
联系客服
400-826-7010
7x24小时客服热线
分享
  • QQ好友
  • QQ空间
  • 微信
  • 微博
返回顶部