LINUX.ORG.RU

Как сделать так, чтобы в FFmpeg при вырезании звука его длина не уменьшалась?

 ,


0

1

Перелазил много чего, не могу найти ответ. Сделал переконвертацию звука, и он стал короче. Т.е в самом видео 55 секунд, а в мп3 файле 51-53, как это можно исправить? Чтобы он брал полностью весь звук без сжатий. https://imgur.com/a/AmNp13e https://imgur.com/a/M9zav3m

Ответ на: комментарий от anonymous

-i output2.mp4 -codec:a libmp3lame -qscale:a 2 audio.mp3

-i input_file_with_mp3_audio.mp4 -c:v copy -c:a libfdk_aac -b:a 128k mp4.mp4

-i source_video.avi -vn -ar 44100 -ac 2 -ab 192K -f mp3 sound.mp3

Такие.

Вообще у меня изначальный файл был нормальным, но после заливки на ютуб : https://www.youtube.com/watch?v=vyo5cbFoNew . У него звук стал пропадать с определённой периодичностью. https://imgur.com/a/atx4Gkd . Я решил переконвертировать в Avi (на ютубе было нормальное качество звука), но появилась зернистость, 30 секунд он у меня обрабатывал 20 минут (убирал зернистость) и я решил что-то делать со звуком.

Nixens ()
Ответ на: комментарий от Nixens

Обрабатывал перед ютубом так :

-i PS.mp4 -i Logo.png -filter_complex «[0:v][1:v]overlay=0:0» result.mp4 Добавляю вотермарку

Конвертирую два видео

-i Intro.mp4 -acodec copy -vcodec copy -vbsf h264_mp4toannexb -f mpegts mov1.ts -i result.mp4 -acodec copy -vcodec copy -vbsf h264_mp4toannexb -f mpegts mov2.ts

Склеиваю два видео -i «concat:mov1.ts|mov2.ts» -vcodec copy -acodec copy output.mp4

Nixens ()

У тебя какой-то нестандартный исходный файл (где ты его взял?). Как будто для звука указана растяжка средствами контейнера (игрался в mkvtoolnix/yamb?). ffmpeg по умолчанию вытаскивает звук без учета таймкодов (чтобы учитывал нужно -c:a pcm_f32le -async 1). Это приводит к рассинхрону и другой длине. youtube видимо применяет async и вставляет тишину для поддержания синхронизации.

Другое предположение: своими резками, клейками в разные форматы без пересжатия ты исказил заголовок/параметры.

Залей на файлобменник исходный файл, я пощупаю его.

Или пользуйся нормальными видеомонтажками вместо ffmpeg. На ютуб заливай любой формат, он понимает всё, специально «кодировать под ютуб» не надо. Лучше всего mkv.

anonymous ()

Где то явно накосячено с частотами кадров и/или передескретизации аудио. Кажется формат .ts вообще не синхронизирует потоки и о метках времени у него отдалённое представление. Явного косяка я не вижу, сути всех команд не понял, но думаю копать надо сюда. Может быть указать все частоты везде и в явном виде?

kirill_rrr ★★★★★ ()
Ответ на: комментарий от kirill_rrr

передескретизации аудио

А вот кстати да. Я скачал звук с ютуба и удалил все звуковые пустоты в Audacity. Получилась разница примерно 1.088, а это 48000/44100. Или PAL<>NTSC по два раза. Коэффициент 25>23.

Не думаю, что растяжка в контейнере делала бы такие большие паузы. Скорее были бы чаще, но меньше. А вот на глюк передискретизации вполне похоже. kirill_rrr ты молодец догадался. Значит там в контейнере gap's стоят каждые 1.2 секунды по 108 мс.

anonymous ()
Ответ на: комментарий от kirill_rrr

Кажется формат .ts вообще не синхронизирует потоки и о метках времени у него отдалённое представление

Синхронизирует, о метках времени у него нормальное представление. delay и gaps из mkv в ts отлично переносятся, в отличии от avi.

anonymous ()