jquery 如何从阵列列表中添加多个音轨

k5ifujac  于 2022-11-03  发布在  jQuery
关注(0)|答案(4)|浏览(174)

我想有多个音轨为一个单一的video文件类似于这个https://codepen.io/eabangalore/pen/NZjrNd他们正在使用自己的js与videojs
我有要切换的音轨列表:

var usersAudioTrackList =  ["https://cdnjs.cloudflare.com/ajax/libs/ion-sound/3.0.7/sounds/glass.mp3","https://cdnjs.cloudflare.com/ajax/libs/ion-sound/3.0.7/sounds/door_bump.mp3","https://cdnjs.cloudflare.com/ajax/libs/ion-sound/3.0.7/sounds/camera_flashing_2.mp3"]

我已阅读文档,但不理解:https://docs.videojs.com/tutorial-audio-tracks.html
请参阅codepen https://codepen.io/eabangalore/pen/pXPbwp?editors=1010(因为下面的代码不工作)。

尝试了类似以下的操作:

第一个

**问题:**我希望获得与此https://codepen.io/eabangalore/pen/NZjrNd类似的结果
Codepen(工作代码):https://codepen.io/eabangalore/pen/pXPbwp?editors=1010

请帮我提前致谢!!

mzsu5hc0

mzsu5hc01#

看起来您正在将空的曲目数据推送到播放列表中。请尝试:

usersAudioTrackList.forEach( data => {
  const track = new videojs.AudioTrack(data);
  player.audioTracks().addTrack(track);
});
5us2dqdw

5us2dqdw2#

我想你完全误解了这个概念视频有音频轨道en和西班牙语。

audioTracks = myPlayer.audioTracks();

在这里,他们从视频中提取音轨,然后根据浏览器语言,如果是英语或西班牙语,他们会播放正确的视频和正确的音频。你要做的是播放一个titanic视频,它有自己的音频glass.mp3,你想把你的叮声glass.mp3上。如果你想做音频混合使用Audacity音频审计工具,而不是JavaScript。https://www.youtube.com/watch?v=iDf8BV8kj8Q

f4t66c6m

f4t66c6m3#

我认为您忽略了文档中的一个重要警告:Video.js仅存储曲目表示形式.切换要播放得音频曲目不由Video.js处理,必须在其他地方处理-例如,videojs-contrib-hls处理切换音频曲目以支持通过UI进行曲目选择.
Videojs播放您提供的视频文件,仅此而已。该视频文件应包含所有必要的音频轨道和视频轨道。这在您提供的codepen中得到了进一步证明,因为您没有看到指向声音文件的外部源链接,只有链接到视频本身。视频文件的结构和创建与几个轨道内置为不同的语言,他们已经提供。这就是您需要做的。您看到的和您创建的那些音轨定义只是告诉videojs视频文件中存在这些音轨,以便您可以在存在的音轨之间切换,而不是向播放中添加全新的音频文件。
或者,正如引用中提到的,还有其他库声称他们可以做这类事情,但这不是videojs试图解决的问题。

e4yzc0pl

e4yzc0pl4#

根据文档,您需要执行以下步骤:
1.首先从列表中的轨迹创建轨迹对象:

// Create a track object.
      var track = new videojs.AudioTrack({
            id: 'my-spanish-audio-track',
            kind: 'translation',
            label: 'Spanish',
            language: 'es'
   });

1.通过循环播放曲目列表,将该曲目添加到播放机的音频曲目列表:

// Add the track to the player's audio track list.
   player.audioTracks().addTrack(track);
const usersAudioTrackList = [{
  id: 'my-1',
  kind: 'translation',
  label: 'kannada',
  language: 'kannada',
  audio:'https://cdnjs.cloudflare.com/ajax/libs/ion-sound/3.0.7/sounds/glass.mp3',
},

{
  id: 'my-2',
  kind: 'translation',
  label: 'tamil',
  language: 'tamil',
  audio:'https://cdnjs.cloudflare.com/ajax/libs/ion-sound/3.0.7/sounds/door_bump.mp3',
},

{
  id: 'my-3',
  kind: 'translation',
  label: 'marathi',
  language: 'marathi',
  audio:'https://cdnjs.cloudflare.com/ajax/libs/ion-sound/3.0.7/sounds/camera_flashing_2.mp3',
}];

var player = videojs('my_video_1');
usersAudioTrackList.forEach(track => {

  player.audioTracks().addTrack(
      new videojs.AudioTrack(track) // Create a track object.
   );
 });

因此,在tracklist上循环时,您需要将曲目传递给player

相关问题