Я пытаюсь удалить части видео, где нет (или мало) звука. Для этого я использую audacity ( анализ - >Sound finder) и экспортировать Метка Track. Это приводит к чему-то вроде этого:
0.000000 5.170000 1
12.520000 12.630000 2
14.400000 15.660000 3
17.430000 22.150000 4
...
С этим регулярным выражением:([d]+.[d]{6})t([d]+.[d]{6})t([d]+)n
> ffmpeg -i VL1.mp4 -strict -2 -ss -to buff.mp4nffmpeg -f concat -i <(echo "file '/home/rene/videotest/output.mp4'nfile '/home/rene/videotest/buff.mp4'") -c copy output2.mp4nrm buff.mp4nmv output2.mp4 output.mp4n
и некоторые ручного редактирования я получаю это:
#!/bin/bash
ffmpeg -i VL1.mp4 -strict -2 -ss 0.000000 -to 5.170000 output.mp4
ffmpeg -i VL1.mp4 -strict -2 -ss 12.520000 -to 12.630000 buff.mp4
ffmpeg -f concat -i <(echo "file '/home/rene/videotest/output.mp4'
file '/home/rene/videotest/buff.mp4'") -c copy output2.mp4
rm buff.mp4
mv output2.mp4 output.mp4
ffmpeg -i VL1.mp4 -strict -2 -ss 14.400000 -to 15.660000 buff.mp4
ffmpeg -f concat -i <(echo "file '/home/rene/videotest/output.mp4'
file '/home/rene/videotest/buff.mp4'") -c copy output2.mp4
rm buff.mp4
mv output2.mp4 output.mp4
ffmpeg -i VL1.mp4 -strict -2 -ss 17.430000 -to 22.150000 buff.mp4
ffmpeg -f concat -i <(echo "file '/home/rene/videotest/output.mp4'
file '/home/rene/videotest/buff.mp4'") -c copy output2.mp4
rm buff.mp4
mv output2.mp4 output.mp4
...
это работает довольно хорошо, и я получаю файл output.mp4
, который содержит только те части, которые я хочу.
к сожалению, это невероятно медленно, и я боюсь, что это разрушит мой жесткий диск (так как для каждой части есть файл buff.mp4
создан, новый файл, содержащий все существующие части плюс этот короткий клип записывается на жесткий диск и старый файл, содержащий существующие части удаляется). Поскольку большинство клипов очень короткие (обычно менее нескольких секунд) моя идея заключалась в том, чтобы не писать в файл buff.mp4
на жесткий диск, но вместо этого передать это в ffmpeg через <
(так держать в оперативной памяти?). Второе, что нужно было добавить к output.mp4
и не рерайт файл каждый раз.
к сожалению, для обеих вещей мои знания о ffmpeg и bash в целом слишком тонкие. Кто-нибудь может мне помочь?
Я должен быть в состоянии написать хороший сценарий без ручного регулярное вещи. И, конечно, я опубликую это позже.