Skip to content

TextSticker

zanxiaofei edited this page Aug 25, 2017 · 4 revisions

编辑字幕

金山云短视频SDK提供字幕功能,支持在编辑部分添加字幕,并最终生合成到视频中 字幕提供旋转、缩放、移动位置等功能

1.1.2及以下版本字幕使用说明

关键类说明

  1. KSYTextView字幕预览控件,提供字幕的预览、添加、删除功能 (SDK内部提供)
  2. StickerHelpBoxInfo字幕辅助区域的画笔,用于提供字幕辅助区域的删除、旋转按钮及辅助区域绘制Paint (SDK内部提供)
  3. DrawTextParams 字幕信息数据类,包含字幕背景,字幕画笔,字幕内容等(SDK内部提供)
  4. StickerAdapter字幕背景列表适配器 (Demo示例)
  5. ColorPicker 字幕颜色选择器(Demo示例)

字幕功能说明

  1. 添加预览字幕view
    在编辑预览的xml中添加KSYStickerView控件来进行贴纸的预览,并需要将该对象设置给SDK内部
    //xml中添加控件
        <com.ksyun.media.shortvideo.view.KSYTextView
            android:id="@+id/text_panel"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:layout_gravity="center"
            android:visibility="gone"/>
    //获取控件实例
    mTextView = (KSYStickerView) findViewById(R.id.text_panel);   
  1. 字幕view设置给SDK
 mEditKit.addTextStickerView(mTextView);
  1. 添加字幕
  • KSYStickerView#setTextRectSelected(KSYTextView.OnTextRectSelected selected):提供选择字幕区域回调
  • KSYStickerView#setEditText(EditText):设置字幕内容输入控件
  • DrawTextParams:字幕内容信息,包含字幕背景,字幕画笔,字幕内容等
  • KSYStickerView#addTextSticker(DrawTextParams params, StickerHelpBoxInfo helpBoxInfo):添加字幕(可通过该接口添加多个字幕)
        //init begin
        //初始化,mTextInput为字幕文字的输入框控件
        mTextView.setEditText(mTextInput);
        //点击字幕区域回调
        mTextView.setTextRectSelected(mTextRectSelected);
        //字幕颜色选择器
        mColorPicker = new ColorPicker(this, 255, 255, 255);
        mTextColorSelect.setOnClickListener(mButtonObserver);
        //init done

        //字幕画笔信息
        DrawTextParams textParams = new DrawTextParams();
        textParams.textPaint = new TextPaint();
        textParams.textPaint.setTextSize(mTextView.getTextSize());  //字体大小
        textParams.textPaint.setColor(Color.WHITE);  //字体颜色
        textParams.textPaint.setTextAlign(Paint.Align.LEFT);  //文字对齐方式
        textParams.textPaint.setStyle(Paint.Style.FILL);  //文字样式
        textParams.textPaint.setAntiAlias(true); //抗锯齿
        textParams.autoNewLine = false;  //是否自动换行
        textParams.bitmap = null;   //字幕背景图
        textParams.text = mTextInput.getText().toString().trim();  //字幕内容

        //添加字幕  
         mTextView.addTextSticker(textParams, mStickerHelpBoxInfo);
  1. 变更字幕内容
  • KSYStickerView#setCurrentText(String):设置当前选中字幕的内容
 private TextWatcher mTextInputChangedListener = new TextWatcher() {
        @Override
        public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {

        }

        @Override
        public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {

        }

        @Override
        public void afterTextChanged(Editable editable) {
            String text = editable.toString().trim();
            //输入字幕内容
            mTextView.setCurrentText(text);
        }
    };
  1. 删除字幕
    在辅助区域点击关闭按钮,即可删除某一字幕

  2. 修改字幕颜色

  • KSYStickerView#setCurrentTextColor(int):修改当前字幕颜色
   private void changeTextColor(int newColor) {
        mTextColorSelect.setBackgroundColor(newColor);
        mTextView.setCurrentTextColor(newColor);
    }
  1. 更新字幕信息
  • KSYStickerView#updateTextParams(DrawTextParams):可用于更新当前字幕的信息
            DrawTextParams textParams = new DrawTextParams();
            textParams.textPaint = null;  //使用默认或者之前设置的画笔
            textParams.autoNewLine = false;
            if (path.contains("5")) {
                textParams.text_left_padding = 0.276f; //设置字幕可写区域相对背景左边的距离
                textParams.text_right_padding = 0.271f; //设置字幕可写区域相对背景右边的距离
                textParams.text_top_padding = 0.265f;  //设置字幕可写区域相对背景上边的距离
                textParams.text_bottom_padding = 0.245f;//设置字幕可写区域相对背景下边的距离
            }
           
            textParams.bitmap = getImageFromAssetsFile(path); //为null,默认使用初始添加时的背景  
            mTextView.updateTextParams(textParams);
Clone this wiki locally