2016-12-30 6 views
-1

У меня есть две записи одного и того же события различной длины, начатые в разное время. Я хочу синхронизировать их, время смещения известно. Я хочу достичь:C# - обрезка файла WAV и добавление тишины

  1. Выровнять второй по времени по временному смещению.
  2. Обрезать второй, чтобы соответствовать длине первого
  3. Когда нет ничего, чтобы обрезать, добавьте тишину, чтобы она соответствовала длине первого.

    Я нашел способ обрезать аудио, но я не мог найти решение для добавления молчания. Есть ли способ сделать это с помощью NAudio, ffmpeg или Aurio?
+0

Это можно сделать с помощью ffmpeg. Предоставьте подробную информацию о продолжительности и о том, какое смещение/обрезка/тишина необходимы, и я напишу команду. – Mulvya

ответ

0

Извините, что не ответил, но я решил проблему с использованием ffmpeg. Вот как я это сделал:

ffmpeg -f lavfi -i aevalsrc=0:d=8.375 -i inputfile.wav -filter_complex "[0:0] [1:0] concat=n=2:v=0:a=1" -ss 0 -to 63.787 outputfile.wav

-i aevalsrc=0:d=8.375 генерирует тишину для продолжительности (d) из 8.375 секунд.
-filter_complex "[0:0] [1:0] concat=n=2:v=0:a=1 объединяет тишину и входной файл. - Concatenation
-ss 0 -to 63.787 обрежет выход (от начала до длины первого файла, то есть 63,787, если вход короче, чем, выходной файл имеет длительность входного файла) - Seeking

Если значение смещения является отрицательным, то это:

ffmpeg -i inputfile.wav -ss 22.316 -t 54.213 outputfile.wav

Таким образом, выходной файл является входным файлом, начиная с 22.316 секунд на протяжении 54.213

Я использовал NReco.VideoConverter в качестве обертки ffmpeg.

 Смежные вопросы

  • Нет связанных вопросов^_^