Обработка видеозаписей

Можете пожалуйста объяснить почему при попытке вырезать кусок видео не получается задать точное рвемя?

Мне не нужна программа которая сможет это сделать, меня интересует сам принцип как это работает, мне просто интересно понять это, если можете объясните пожалуйста!

При попытке вырезать кусок видео без перекодирования (!) например через avidemux в зависимости от видео может не получаться указать точное время, т. е в самой программе задаешь допустим начальную точку на 1 минуте 15 секундах - а программа при сохранении видео все равно сдвинет начлаьную точку на 1 минуту 17 секунд.. иногда программа может не позволять задать точку вплоть до милисенд (покадрово) а иногда речь идет и секундах или даже десятке секунд! Почему так происходит? можете пожалуйста объяснить?
Сжатое видео современными кодеками можно резать только по ключевым кадрам (i-frame), поэтому и невозможно порезать точно.

Для точной нарезки существует SolveigMM Video Splitter, он перекодирует информацию до ближайшего ключевого кадра, а далее поток просто копирует.
Николай Ssssssss
Николай Ssssssss
15 387
Лучший ответ
Анатолий Чучалин большое спасибо!
Потому что, если вы режете без перекодирования, то резать можно только по ключевым кадрам.

Есть программы, которые позволяют резануть и не по ключевым, но в качестве бонуса вы получите вместо картинки мозаику от точки склейки до следующего ключевого кадра.
...дополню немного совершенно верный ответ камрада Казакова. Дело в том что в наиболее часто применяемых современных кодеках, таких как H.264, кодируется не каждый кадр в отдельности а сразу группа кадров - GOP (Group Of Pictures), которая содержит опорные кадры (I-frame), закодированные без ссылок на другие кадры, и P и B кадры в которых закодировано не все изображение а только разница с опорным и (или) с последующими и предыдущими. Поэтому резать без перекодирования можно в общем случае только с точность до GOP а они могут быть весьма длинными, до нескольких секунд (Long GOP). Еще одно из неприятных следствий такой структуры - сбой в одном кадре (например при потоковом вещании) приводит к ясно видимому продолжительному сбою в пределах GOP.
Анатолий Чучалин большое спасибо!
Плохая программа, что тут объяснять. Вообще куски видео вырезаются специальным инструментом типа ножниц, кликаешь на нужном отрезке и все, если надо милисекунды, приближаешь этот момент максимально и вырезаешь, зачем там вообще указывать время - не понятно. Если в вашей программе так неудобно сделать это действие, то используйте другую. Этих редакторов миллионы, а вы упрямо пользуетесь той, которая не подходит вам.
Анатолий Чучалин так я много программ пробовал, если она режит в режиме без перекодирования то везде такая проблема, взять допустим онлайн редактор online-video-cutter.com там есть возможность выбирать качество в том числе исходное либо без перекодирования, так вот в исходном либо другом разрешении он вырезает точно даже покадрово, но если задать режим - без перекодирования будет сохранять с разницей от пары милисекунд до десятка секунд в зависимости от видео.. (также как упомянутый avidemux).. вот мне и стало интересно почему так, как програимма воспринимает видео, что не дает ей сделать точную обрезку не используя перекодирование.
Анатолий Чучалин вот мне было интересно почему так) что же там такого с техническом плане что не дает обрезать покадрово без перекодирования..
посомтрим может кто занимается углубленно этой темой ответит, хочется удовлетворить любопытсво)
Именно потому, что пытаетесь резать БЕЗ ПЕРЕКОДИРОВАНИЯ между ключевыми кадрами!

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