hisui 2025.3.3

Recording Composition Tool Hisui
// compose コマンド相当の処理を実行するパイプラインの例
{
  "pipeline": [
    // 音声の処理パイプライン: read -> decode -> mix -> encode
    { // メディアファイルからの音声データの読み込み
      "type": "audio_reader",
      "input_file": "audio.mp4", // [NOTE] 入力ファイルのパスは実際に使うものを指定すること
      "output_stream": "audio_raw#source1",
      "start_time": 0,
    },
    { // 音声をデコード
      "type": "audio_decoder",
      "input_stream": "audio_raw#source1",
      "output_stream": "audio_decoded#source1",
    },
    { // 音声を合成: この例では入力がひとつなので実質的には何もしない
      "type": "audio_mixer",
      "input_stream": ["audio_decoded#source1"],
      "output_stream": "mixed#audio",
    },
    { // 合成後の音声をエンコード
      "type": "audio_encoder",
      "input_stream": "mixed#audio",
      "output_stream": "encoded#audio",
    },

    // 映像の処理パイプライン: read -> decode -> mix -> encode
    { // メディアファイルからの映像データの読み込み
      "type": "video_reader",
      "input_file": "video.webm", // [NOTE] 入力ファイルのパスは実際に使うものを指定すること
      "output_stream": "video_raw#source1",
      "start_time": 0,
    },
    { // 映像をデコード
      "type": "video_decoder",
      "input_stream": "video_raw#source1",
      "output_stream": "video_decoded#source1",
    },
    { // 映像を合成: この例では入力がひとつなので実質的にはリサイズしているだけ
      "type": "video_mixer",
      "input_stream": ["video_decoded#source1"],
      "output_stream": "mixed#video",
      "resolution": "1280x720",
      "video_layout": {
        "main": {
          // TODO: "video_reader" の出力ストリーム ID を指定する必要があるのはわかりにくいので修正する
          "video_sources": ["video_raw#source1"]
        }
      }
    },
    { // 合成後の映像をエンコード
      "type": "video_encoder",
      "input_stream": "mixed#video",
      "output_stream": "encoded#video",
    },

    // エンコード後の音声と映像を MP4 ファイルに出力
    {
      "type": "mp4_writer",
      "input_stream": ["encoded#audio", "encoded#video"],
      "output_file": "output.mp4",
    }
  ],
}