Я понимаю, что это может быть тривиальным вопросом, но до сих пор мне не повезло с различными решениями, которые я пробовал, и я уверен, что должен быть удобный способ достичь этого.python/video - удаление кадров без повторного кодирования
Как бы я мог удалить фреймы/миллисекунды из видеофайла без нарезки, слияния и повторного кодирования?
Все решения, которые я нашел, включали в себя различные варианты экспорта в различные форматы, и я надеюсь, что это не понадобится.
С ffmpeg
/avconv
необходимо преобразовать временные потоки в .ts
, затем объединить и, наконец, перекодировать в исходном формате.
Python библиотека MoviePy
, казалось, сделать совершенно точно, что мне нужно, но:
cutout
функция возвращает файл, который не может быть экспортирован, какwrite_videofile
функция пытается и не может извлечь удаленные кадры- Если я вместо этого перерезаю исходный файл в различные клипы, а затем объединим их с
concatenate_videoclips
, экспорт не прерывается, но занимает в два раза больше видео. Получающееся в результате видео имеет более быструю частоту кадров, при этом только ключевые точки для конкатенированных видеороликов будут своевременно размещены, а звук воспроизводится с нормальной скоростью. Также стоит отметить, что выходной файл, несмотря на то, что он на 5-7% короче по продолжительности, примерно на 15% больше.
Есть ли какая-либо другая библиотека, о которой я не знаю, я мог бы заглянуть?
То, что я пытаюсь представить, - это уровень абстракции, обеспечивающий легкий доступ к наиболее распространенным форматам видео, предоставляя мне возможность поместить нежелательные кадры и обновлять заголовки файлов, не вникая в специфику каждого формата.