Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Видео и аудио: обработка и кодирование (http://forum.oszone.net/forumdisplay.php?f=45)
-   -   Как разбить mkv-файл точно (http://forum.oszone.net/showthread.php?t=350936)

lost8923142 25-03-2022 14:19 2982265

Как разбить mkv-файл точно
 
Здравствуйте.
Возможно ли разбить mkv-файл так, чтобы совокупность получившихся частей была того же размера и продолжительности, что и исходный файл.
Пока что имеет дело с этим.

Исходный файл:


Совокупность 3-х файлов:

bredych 25-03-2022 17:07 2982277

вероятно, там ключевой кадр был. И кусок сцены от предыдущего ключевого кадра- просто теряется.
Отрезать можно и точно, ффмпегом, например.
Но чтоб эта часть не пропала, надо полностью перекодировать ролик. Да, теряя качество, само собой.
Если это вас не пугает, то пожалст -
ffmpeg -i input.mkv -t 00:15:00 out1.mkv -ss 00:15:00 -t 00:15:00 out2.mkv
дополнительно настройки качества, кодеков, т.д. - добавлять по желанию и вкусу :)

lost8923142 26-03-2022 00:30 2982291

А без перекодирования можно?

bredych 26-03-2022 01:57 2982292

нет.
русским по белому же написал:
ключевой кадр. Он в ДРУГОМ видео. То есть, всё, что было до следующего, - без перекодировки пропадает. И это самый лучший вариант.
В других - просто отказ воспроизведения видео.

mralexov 19-07-2022 01:22 2988786

lost8923142,
Почти.

Для разбивки видео нужно делать это по ключевым кадрам. Это можно сделать как раз программой Avidemux которой Вы пользуетесь.
В практическом тесте я взял запись в mkv контейнере avc / aac, 30FPS (запись из программы OBS Studio).

В Avidemux есть навигация по ключевым кадрам вперед-назад (стрелки вверх-вниз). Я остановился на таком кадре. Сначала вырезал всё что было после него, сохранил. Потом сделал отмену, вырезал всё что было до него, сохранил, и у меня получилось две части по размеру примерно равные исходному.

Точного совпадения размеров до байта я не ожидаю, потому что в N файлах будет N заголовков, а исходному файлу заголовок нужен один.

Резка по ключевым кадрам скорее всего не будет точно 15 минут.

У меня.
Исходный файл: 1:01:56.133
Первая часть: 30:54.033
Вторая часть: 31:02.099


АХЪ. Потеряна аж одна сотая секунды длины видео. Учитывая что частота -- 30 кадров в секунду, полагаю что такую погрешность можно пережить.

lost8923142 20-11-2022 10:43 2996938

Цитата:

Цитата mralexov
Резка по ключевым кадрам...
Потеряна аж одна сотая секунды длины »

Странно, я тоже по ключевым кадрам резал. Погрешность получилась 1.76 секунды.

bredych 19-01-2023 01:22 3001237

кстати, а в ffmpeg-e есть возможность резки по ключевым кадрам?

имею в виду, чтоб он сам находил i-frame, ближайший к указанной секунде, и резал по нему.
Цель - чтоб не требовалась перекодировка для корректного соответствия аудиодорожке и прочих вещей.

https://superuser.com/questions/1076...-codec-copying - читал.
более интересно это -
https://superuser.com/questions/5369...-to-3rd-minute
но тут найденную картинку просто сохраняют, а не находят её таймстамп и не передают его в значение трима

DJ Mogarych 19-01-2023 10:57 3001261

Цитата:

Using -ss as input option together with -c:v copy might not be accurate since ffmpeg is forced to only use/split on i-frames.
https://trac.ffmpeg.org/wiki/Seeking

bredych 19-01-2023 18:07 3001308

правильно ли понимаю, что надо юзать
Цитата:

Previous behavior (seeking only to the nearest preceding keyframe, even if not precisely accurate) can be restored with the -noaccurate_seek option.
ака

ffmpeg -ss 06 -i 160.mp4 -noaccurate_seek -t 280 -c copy output.mp4
?

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


Время: 04:28.

Время: 04:28.
© OSzone.net 2001-