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进行播放声音的切换。
注意
- 在视频播放中切音频内容不会生效,需要停止切换后播放。
- 在图中的代码内容中我们拥有两个,SetAudioTrack和SetSubAudioTrack,两个内容可以同时播放,也就是说播放音轨可以同时播放两个,一个是用于非语种的其他音频内容播放,另一个是用于切换语种音频。