2017-02-18 6 views
0

Я понимаю, что это может быть тривиальным вопросом, но до сих пор мне не повезло с различными решениями, которые я пробовал, и я уверен, что должен быть удобный способ достичь этого.python/video - удаление кадров без повторного кодирования

Как бы я мог удалить фреймы/миллисекунды из видеофайла без нарезки, слияния и повторного кодирования?
Все решения, которые я нашел, включали в себя различные варианты экспорта в различные форматы, и я надеюсь, что это не понадобится.

С ffmpeg/avconv необходимо преобразовать временные потоки в .ts, затем объединить и, наконец, перекодировать в исходном формате.

Python библиотека MoviePy, казалось, сделать совершенно точно, что мне нужно, но:

  • cutout функция возвращает файл, который не может быть экспортирован, как write_videofile функция пытается и не может извлечь удаленные кадры
  • Если я вместо этого перерезаю исходный файл в различные клипы, а затем объединим их с concatenate_videoclips, экспорт не прерывается, но занимает в два раза больше видео. Получающееся в результате видео имеет более быструю частоту кадров, при этом только ключевые точки для конкатенированных видеороликов будут своевременно размещены, а звук воспроизводится с нормальной скоростью. Также стоит отметить, что выходной файл, несмотря на то, что он на 5-7% короче по продолжительности, примерно на 15% больше.

Есть ли какая-либо другая библиотека, о которой я не знаю, я мог бы заглянуть?
То, что я пытаюсь представить, - это уровень абстракции, обеспечивающий легкий доступ к наиболее распространенным форматам видео, предоставляя мне возможность поместить нежелательные кадры и обновлять заголовки файлов, не вникая в специфику каждого формата.

ответ

0

Почему бы не использовать

#import os 
start = '00:00:08.345' # HH:MM:SS[.xxx] format 
duration = '00:00:10' 

os.system('ffmpeg -i path/to/input.mp4 -vcodec copy -acodec copy -ss ' + start + ' -t ' + end + ' path/to/file.mp4')` 

Это должно занять input.mp4 и сократить 10 секунд из, начиная с 8.345 секунды без повторного кодирования файла. Есть много FFMPEG-оболочек python, которые вы можете использовать, но это самый простой способ, о котором я могу думать.

Смежные вопросы