複数のwaveファイルから、動画と同じ長さの無音を含む音声ファイルを作成してからffmpegで結合する
という方法も考えましたが、こちらも音声ファイルを任意の長さで、任意の場所で合成する方法が
わかりませんでした。
非圧縮(PCM)であればWAVEファイルは結構単純なファイル構造をしているので、ファイルを解析して自分で合成(新たなWAVEとして書き出す)するのはそれほど難しくはありません。
(特に今回のケースのようなSystem.SpeechのWAVEファイルを合成したい場合、WAVEファイルのフォーマット(モノラルとかステレオとかサンプリングレートだとか)は一種類だと思うので、そういう意味でも楽かなと思います)
WAV ファイルフォーマット
http://sky.geocities.jp/kmaedam/directx9/waveform.html
C#での編集方法はググっても結構でてきます。
https://www.google.com/search?q=WAVE+%E7%B7%A8%E9%9B%86+C%23
あと他に自分が知っている方法だとDirectShow Editing Serviceという動画編集機能を使えば、動画ファイル・静止画ファイル・音声ファイルを好きなタイミングで好きなだけ配置して書き出すことができます(サポートしている形式には限りがあります)。
既存の動画の好きな時間に好きな音声ファイルを追加することもできます。
ただ、動画として書き出すと再エンコが掛かって劣化するかもしれないので、
音声トラックだけを作成(ミックス)してWAVEとして書き出す事がもしできれば、そのファイルをffmpegで動画と合成するのがいいかもしれません。
一方、C#系でDirectShow Editing Serviceを扱うのはあまり楽でないのと、やっている人もあまりいないので検索しても資料はそれほど出てこないかもしれません(ここが最大のネックかも(^_^;))。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/12/25 05:21