Обрезать последние x секунд аудиофайлов

Вы меняете права доступа к папке, а не к файлам внутри. Вместо этого попробуйте

sudo chmod -R 777 configSite/
3
26.11.2020, 17:23
3 ответа

Вы должны использовать обходной подход. Дважды загрузите файл и сместите временные метки второго ввода на длительность в конце, который вы хотите обрезать. Затем направьте оба потока на другой экземпляр ffmpeg с установленным -shortest. Во втором экземпляре ffmpeg сохраните только поток из второго входа.

ffmpeg -i in.mp3 -itsoffset 1 -i in.mp3 -map 0:a:0 -map 1:a:0 -c copy -shortest -f nut - | ffmpeg -f nut -i - -c copy -map 0:1 out.mp3

3
18.03.2021, 22:47

Вы можете использовать mediainfo , чтобы получить продолжительность (в мс ), а затем сократить до продолжительности -1:

duration=$(mediainfo FILE.mp3 --Inform="Audio;%Duration%")
ffmpeg -to $(($duration / 1000 - 1)) -i FILE.mp3 -c copy FILE_NEW.mp3
3
18.03.2021, 22:47

Вдохновившись ответами на другие вопросы на этом сайте, я тоже смог кое-что придумать. Эту команду можно передать в findкак опцию exec

.
ffmpeg -i FILE1.wma -ss 0 -to $(echo $(ffprobe -i FILE1.wma -show_entries format=duration -v quiet -of csv="p=0") - 1 | bc) -c copy FILE2.wma

Часть в середине $(echo $(ffprobe -i FILE1.wma -show_entries format=duration -v quiet -of csv="p=0") - 1 | bc)первой получает желаемую продолжительность. Конвейер к bcдолжен вычисляться в плавающем формате. Результат этого затем передается в качестве аргумента -toв основной команде.

Чтобы разбить длинную однострочную команду выше, для простоты понимания:

    ffmpeg -i FILE1.wma -ss 0 -to
      $(echo 
        $(ffprobe -i FILE1.wma -show_entries format=duration -v quiet -of csv="p=0") 
        - 1 | bc
        )
    -c copy FILE2.wma
1
18.03.2021, 22:47

Теги

Похожие вопросы