Використання лаконічного контуру (додайте тишу до початку та / або кінця)
Використовуйте concat demuxer, якщо ви хочете уникнути повторного кодування основного сегмента. Цей метод працює на додавання тиші до початку або кінця (або обох).
Використовуйте фільтр джерела звуку anullsrc для створення безшумного звуку. Вам потрібно буде відповідати формату, макету каналу та швидкості вибірки основного аудіофайлу. Приклад скласти 5,1-канальний, частота вибірки 48000 Гц, 1-секундний тихий аудіофайл AC3 (так це був формат у запитанні):
ffmpeg -f lavfi -i anullsrc=channel_layout=5.1:sample_rate=48000 -t 1 silence.ac3
Тепер зробіть текстовий файл з ім'ям, input.txt
який містить список файлів, які потрібно об'єднати:
file 'silent.ac3'
file 'main.ac3'
Якщо ви хочете тишу в кінці, просто замініть порядок файлів input.txt
.
Тепер ви можете об'єднати файли за допомогою concat demuxer :
ffmpeg -f concat -i input.txt -codec copy output.ac3
Використовуючи фільтр concat (додайте тишу до початку та / або кінця)
Використовуйте фільтр concat, якщо ви хочете виконати все в одній команді, або якщо ви хочете вивести інший формат, ніж вхідний (оскільки цей спосіб все одно перекодується). Цей метод працює на додавання тиші до початку чи кінця або обох.
Приклад для додавання 1 секунди тиші до початку стерео, вхідної частоти вибірки 44100 Гц:
ffmpeg -f lavfi -t 1 -i anullsrc=channel_layout=stereo:sample_rate=44100 -i audio.oga -filter_complex "[0:a][1:a]concat=n=2:v=0:a=1" output.m4a
Фільтрування призведе до повторного кодування, в той час як демаксер-конмат не буде.
У anullsrc рекомендується відповідати компоновці каналу та частоті вибірки вводу.
Якщо ви хочете додати тишу до кінця , а не просто змінити порядок входів даних на Concat фільтр: [1:a][0:a]concat=n=2:v=0:a=1
.
Використання фільтра аделай (додати тишу до початку)
Використовуйте звуковий фільтр аделай, якщо ви хочете виконати все в одній команді або якщо ви хочете вивести інший формат, ніж вхідний (оскільки цей спосіб все одно перекодується). Це працює лише для створення тиші на початку файлу.
Цей приклад додасть 1 секунду тиші до початку стерео входу:
ffmpeg -i input.flac -af "adelay=1000|1000" output.opus
- Фільтрування призведе до повторного кодування, в той час як демаксер-конмат не буде.
- Значення в мілісекундах. Користувачі останніх версій (поточний майстер git або щось новіше, ніж FFmpeg 4.1) можуть замість цього використовувати
1s
одну секунду.
- Кожен канал потребує власної затримки. Наприклад, моно вхід використовує
adelay=1000
, тоді як 5.1 вхід використовує adelay=1000|1000|1000|1000|1000|1000
.
Використання фільтра apad (додайте тишу до кінця)
Використовуйте звуковий фільтр apad, якщо ви хочете виконати все в одній команді, або якщо ви хочете вивести інший формат, ніж вхідний (оскільки цей спосіб все одно перекодується). Це працює лише для створення тиші в кінці файлу.
Цей приклад додасть 1 секунду тиші до кінця:
ffmpeg -i input.wav -af "apad=pad_dur=1" output.m4a
Фільтрування призведе до повторного кодування, в той час як демаксер-конмат не буде.
pad_dur
Опція була додана після виходу FFmpeg 4.1, так що вам потрібно буде використовувати свіжий білд від головного відділення мерзотника або чекати FFmpeg 4.2.