

## やりたいこと

複数オーディオトラックの入ったmp4ファイルのトラックを指定して再生がしたく、  
最終的にはトラック1をLで再生、トラック2をRで再生というようなことがしたいです。  
ブラウザはChromeです。

WebAudioAPI を使えばなんとなくできそうだと思っていたのですが、うまくいきません。(ドキュメントの読み込みが甘いかもしれません)

下記で試してみたのはとりあえずトラックを指定してLRで再生させようとしています。

もしWebAudioAPIでできないのであれば、代案はありますでしょうか？

## ためしたこと

[code]

    <html>
      <head>
        <script type="text/javascript" src="./jquery/jquery-1.11.3.min.js"></script>
      </head>
      <body>
        <video id="player" src=".test.mp4" height="300" controls></video>
        <br />
        <button type="button" class="track" data-track="0">1</button>
        <button type="button" class="track" data-track="1">2</button>
        <button type="button" class="track" data-track="2">3</button>
        <button type="button" class="track" data-track="3">4</button>
        <button type="button" class="track" data-track="4">5</button>
        <button type="button" class="track" data-track="5">6</button>
        <button type="button" class="track" data-track="6">7</button>
        <button type="button" class="track" data-track="7">8</button>
    
        <script type="text/javascript">
          var player = document.getElementById('player');
          var audioCtx = new (window.AudioContext || window.WebKitAudioContext)();
          var audioSource = audioCtx.createMediaElementSource(player);
    
          trackSelect = function (track) {
            var splitter = audioCtx.createChannelSplitter(8); // ここで8トラックに分けている・・・つもり
            var merger = audioCtx.createChannelMerger(2);
    
            audioSource.disconnect();
            audioSource.connect(splitter);
    
            splitter.connect(merger, track, 0); // L指定
            splitter.connect(merger, track, 1); // R指定
            merger.connect(audioCtx.destination);
          };
          player.onplay = function () {
            audioCtx.resume();
          };
          player.onpause = function () {
            audioCtx.suspend();
          };
    
          trackSelect(0);
    
          $('.track').on('click', function () {
            trackSelect(+$(this).data('track'));
          });
        </script>
      </body>
    </html>
    
[/code]


CC BY-SA 4.0
2021-06-25T01:49:50.920
77770
2021-07-01T01:36:02.943
2021-06-27T06:40:06.600
3060
29651
question
javascript 動画
ブラウザ上で複数オーディオトラックのmp4のトラックを指定して再生できますか？


コメントいただきありがとうございました。  
mp4ファイルからffmpegでトラックごとに音声を抽出し  
トラック数分のaudio(video)タグを用意し、同時再生することで対応しようと思います。


CC BY-SA 4.0
2021-07-01T01:36:02.943
77893
2021-07-01T01:36:02.943
29651
77770
answer