Sofdec2-Unity/多字幕、多语种播放

Sofdec2支持多字幕的播放,所谓多字幕指的是在播放视频时,能够将字幕单独提取出来,然后根据我们选择的通道不同对应不同地区的字幕转变。

如此的方式通过将字幕和视频分离,我们可以仅仅添加字幕信息,而不用针对不同的区域去制作多个视频。

视频本身的占用空间高,而字幕为txt文件,占用空间极小因此通过字幕和视频拆分的方式,我们能够大大降低占用空间。

Sofdec2多字幕制作

Sofdec2中多字幕的制作可以参考文章:多字幕

通过Sofdec2将一个视频和多个字幕封装在一起,进行调取和播放。

Unity中制作

此次制作,我们结合上一文章中内容,通过在UI上播放视频来调用字幕显示:简单视频播放

为了显示字幕,我们需要创建UI Text组件:

text主要作用用于视频播放时通过调用视频中封装的字幕,来显示在UI上。

为了显示字幕,我们需要在text组件上添加脚本内容:

using System.Collections;
 using System.Collections.Generic;
 using UnityEngine;
 using UnityEngine.UI;
public class textshow : MonoBehaviour
{
    public CriManaMovieControllerForUI movieplay;
    private Text textwenzi;
    string subtitle;
    // Start is called before the first frame update
    void Start()
    {
        textwenzi = this.GetComponent<Text>();
        movieplay.player.SetSubtitleChannel(0);
    }
    // Update is called once per frame
    void Update()
    {
        subtitle = System.Runtime.InteropServices.Marshal.PtrToStringAuto(movieplay.player.subtitleBuffer);
        textwenzi.text = subtitle;
    }
}

添加上述脚本后,我们需要将播放视频的组件放置在text脚本中:

完成上述内容,运行场景就会看到播放视频的时候字幕也同时出现了。

注意

在使用多字幕时,Sofdec2会将不同的字幕放置在不同的通道中,因此,我们播放字幕时想变更字幕就需要变更通道:

上图所示,我们可以通过SetSubtitleChannel(1)中最后的通道数来变更显示字幕。

多语种播放

多语种和多字幕类似,但是多语种更为简单,因为多语种播放语音并不需要text这样的载体进行播放,因此当我们需要播放时直接进行set即可:

如上图所示代码,我们可以直接通过SetAudioTrack进行播放声音的切换。

注意

  1. 在视频播放中切音频内容不会生效,需要停止切换后播放。
  2. 在图中的代码内容中我们拥有两个,SetAudioTrack和SetSubAudioTrack,两个内容可以同时播放,也就是说播放音轨可以同时播放两个,一个是用于非语种的其他音频内容播放,另一个是用于切换语种音频。

Ringo

CRI Middleware Global Expansion Group

发表评论

电子邮件地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据