Попытка понять функциональность ffmpeg seek cut - PullRequest
0 голосов
/ 12 февраля 2020

У меня есть видео, где я хотел бы вырезать часть. Я использую команду:

ffmpeg -ss 526.623 -t 347.986 -i 'example.mp4' -c copy -avoid_negative_ts 1 -y res.mp4

Где ожидаемая длина 00:05:47.99. Журнал процесса показывает следующее:

...
frame=10582 fps=8258 q=-1.0 Lsize= 1061446kB time=00:05:47.98 bitrate=24987.8kbits/s speed= 272x    
video:1044531kB audio:16556kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.033789%

Как вы можете видеть time=00:05:47.98, как и ожидалось, но когда я проигрываю это видео в плеере, я вижу, что в конце у него есть дополнительные 5 секунд видео. Я проверяю продолжительность воспроизведения:

$ ffmpeg -i 'res.mp4' 2>&1 | grep Duration | cut -d ' ' -f 4 | sed s/,//
00:05:53.11

Что за ... Моя подсказка была I-рамкой GOP, но когда я изменял свои команды следующим образом:

ffmpeg -ss 526.623 -t 347 -i 'example.mp4' -c copy -avoid_negative_ts 1 -y res.mp4

Вывод показывает time=00:05:46.99 и фактическая длина видео составляет 00:05:52.13

В первом случае добавлено 5.13sec, во втором 5.14. Давайте возьмем 5.14 для обоих случаев, которые показывают, что это не имеет никакого отношения к I-кадру. В этом мире нет волшебников c (наверное). Но что тогда?

UPD: Это GOP в начале видео. Для этого видео это около 7 секунд.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...