Не могу добавить форсированные сабы в MP4 (ffmpeg, srt -> mov_text)

Страницы:  1
Ответить
 

sERGE-01

Стаж: 16 лет 8 месяцев

Сообщений: 343


sERGE-01 · 04-Янв-22 05:07 (3 года 6 месяцев назад)

Помогите разобраться с проблемой.
Есть видео в формате mp4 длиной 00:44:12
Хочу добавить в него форсированные сабы на непереведенный кусок.
Сабы начинанаются с 00:41:48 и заканчиваются на 00:43:23.
Пытаюсь добавить в контейнер:
Код:
ffmpeg -i video.mp4 -i subs.srt -map 0:v -map 0:a -map 1:s -c:v copy -c:a copy -c:s mov_text out.mp4
В итоге получаю варниннги:
скрытый текст
Код:

[mp4 @ 000001c7fbb9db40] Application provided duration: 2508949000 / timestamp: 2508949000 is out of range for mov/mp4 format
[mp4 @ 000001c7fbb9db40] pts has no value
[mp4 @ 000001c7fbb9db40] Application provided duration: 2510120999 / timestamp: 2512453000 is out of range for mov/mp4 format
[mp4 @ 000001c7fbb9db40] pts has no value
[mp4 @ 000001c7fbb9db40] Application provided duration: 2510322998 / timestamp: 2515055000 is out of range for mov/mp4 format
[mp4 @ 000001c7fbb9db40] pts has no value
[mp4 @ 000001c7fbb9db40] Application provided duration: 2510369997 / timestamp: 2518125000 is out of range for mov/mp4 format
[mp4 @ 000001c7fbb9db40] pts has no value
[mp4 @ 000001c7fbb9db40] Application provided duration: 2512811996 / timestamp: 2523397000 is out of range for mov/mp4 format
[mp4 @ 000001c7fbb9db40] pts has no value
[mp4 @ 000001c7fbb9db40] Application provided duration: 2513990995 / timestamp: 2528535000 is out of range for mov/mp4 format
[mp4 @ 000001c7fbb9db40] pts has no value
[mp4 @ 000001c7fbb9db40] Application provided duration: 2516527994 / timestamp: 2533040000 is out of range for mov/mp4 format
[mp4 @ 000001c7fbb9db40] pts has no value
[mp4 @ 000001c7fbb9db40] Application provided duration: 2516729993 / timestamp: 2534675000 is out of range for mov/mp4 format
[mp4 @ 000001c7fbb9db40] pts has no value
[mp4 @ 000001c7fbb9db40] Application provided duration: 2523771992 / timestamp: 2544618000 is out of range for mov/mp4 format
[mp4 @ 000001c7fbb9db40] pts has no value
[mp4 @ 000001c7fbb9db40] Application provided duration: 2524606991 / timestamp: 2549389000 is out of range for mov/mp4 format
[mp4 @ 000001c7fbb9db40] pts has no value
[mp4 @ 000001c7fbb9db40] Application provided duration: 2525180990 / timestamp: 2552659000 is out of range for mov/mp4 format
[mp4 @ 000001c7fbb9db40] pts has no value
[mp4 @ 000001c7fbb9db40] Application provided duration: 2525385989 / timestamp: 2554161000 is out of range for mov/mp4 format
[mp4 @ 000001c7fbb9db40] pts has no value
[mp4 @ 000001c7fbb9db40] Application provided duration: 2526362988 / timestamp: 2558699000 is out of range for mov/mp4 format
[mp4 @ 000001c7fbb9db40] pts has no value
[mp4 @ 000001c7fbb9db40] Application provided duration: 2526567987 / timestamp: 2563170000 is out of range for mov/mp4 format
[mp4 @ 000001c7fbb9db40] pts has no value
[mp4 @ 000001c7fbb9db40] Application provided duration: 2526802986 / timestamp: 2565839000 is out of range for mov/mp4 format
[mp4 @ 000001c7fbb9db40] pts has no value
[mp4 @ 000001c7fbb9db40] Application provided duration: 2527009985 / timestamp: 2568742000 is out of range for mov/mp4 format
[mp4 @ 000001c7fbb9db40] pts has no value
[mp4 @ 000001c7fbb9db40] Application provided duration: 2528013984 / timestamp: 2572613000 is out of range for mov/mp4 format
[mp4 @ 000001c7fbb9db40] pts has no value
[mp4 @ 000001c7fbb9db40] Application provided duration: 2528214983 / timestamp: 2575282000 is out of range for mov/mp4 format
[mp4 @ 000001c7fbb9db40] pts has no value
[mp4 @ 000001c7fbb9db40] Application provided duration: 2529191982 / timestamp: 2577351000 is out of range for mov/mp4 format
[mp4 @ 000001c7fbb9db40] pts has no value
[mp4 @ 000001c7fbb9db40] Application provided duration: 2529799981 / timestamp: 2580154000 is out of range for mov/mp4 format
[mp4 @ 000001c7fbb9db40] pts has no value
[mp4 @ 000001c7fbb9db40] Application provided duration: 2530534980 / timestamp: 2582322000 is out of range for mov/mp4 format
[mp4 @ 000001c7fbb9db40] pts has no value
[mp4 @ 000001c7fbb9db40] Application provided duration: 2530741979 / timestamp: 2586226000 is out of range for mov/mp4 format
[mp4 @ 000001c7fbb9db40] pts has no value
[mp4 @ 000001c7fbb9db40] Application provided duration: 2530947978 / timestamp: 2588662000 is out of range for mov/mp4 format
[mp4 @ 000001c7fbb9db40] pts has no value
[mp4 @ 000001c7fbb9db40] Application provided duration: 2532689977 / timestamp: 2591598000 is out of range for mov/mp4 format
[mp4 @ 000001c7fbb9db40] pts has no value
[mp4 @ 000001c7fbb9db40] Application provided duration: 2532892976 / timestamp: 2594201000 is out of range for mov/mp4 format
[mp4 @ 000001c7fbb9db40] pts has no value
[mp4 @ 000001c7fbb9db40] Application provided duration: 2533228975 / timestamp: 2595936000 is out of range for mov/mp4 format
[mp4 @ 000001c7fbb9db40] pts has no value
[mp4 @ 000001c7fbb9db40] Application provided duration: 2533440974 / timestamp: 2597638000 is out of range for mov/mp4 format
[mp4 @ 000001c7fbb9db40] pts has no value
[mp4 @ 000001c7fbb9db40] Application provided duration: 2534510973 / timestamp: 2600073000 is out of range for mov/mp4 format
[mp4 @ 000001c7fbb9db40] pts has no value
[mp4 @ 000001c7fbb9db40] Application provided duration: 2535346972 / timestamp: 2603377000 is out of range for mov/mp4 format
[mp4 @ 000001c7fbb9db40] pts has no value
Сабы добавляются, но тайминг их начинается с 00:00:00, а не с 00:41:48
Сколько не гуглил, так и не смог понять как это исправить.
Вроде как предлагают добавить опцию -fflags +genpts до -i но это не помогает.
Что подскажете?
[Профиль]  [ЛС] 

sERGE-01

Стаж: 16 лет 8 месяцев

Сообщений: 343


sERGE-01 · 04-Янв-22 10:14 (спустя 5 часов, ред. 04-Янв-22 10:14)

В общем, нашел "хак". Если в начало сабов добавить еще одну строчку:
Код:

0
00:00:00,000 --> 00:15:00,000
Тогда варнинги пропадают и тайминги нормальные.
Т.е. в начало добавляется "пустая строка" (U+2002)
Насколько я понял, в mp4 проблема с 32-битными числами длин "кусков" сабов.
Бред... И что теперь вручную так извращаться? У меня в автомате несколько тысяч видео переконвертировано с этим багом...


Вроде бы разобрался. Поправьте если не так.
По умолчанию, если просто добавлять сабы в контейнер, им выставляется максимальный фреймрейт: time_base=1/1000000
Поэтому timestamp принимает очень большие значения и не влезает в 32 бита.
Если добавить опцию -time_base, то она выставляется для сабов и этих проблем уже нет.
Я выставлял такую же как и у дороги видео (1/16000), т.е.:
Код:
ffmpeg -i video.mp4 -i subs.srt -map 0:v -map 0:a -map 1:s -c:v copy -c:a copy -c:s mov_text -time_base 1:16000 out.mp4
Только вот не пойму можно ли задавать какое-то фиксированное, универсальное, значение для всех видео?
[Профиль]  [ЛС] 
 
Ответить
Loading...
Error