ilyachalov (ilyachalov) wrote,
ilyachalov
ilyachalov

Categories:

Редактирование видео: FFmpeg, MPC-HC, VLC

— Джонни, прошу тебя, сделай монтаж!
(из к/ф «Человек с бульвара Капуцинов»)

Работаю на Windows 7 Профессиональная (SP1).

1. Медиапроигрыватель VLC — бесплатный, свободный, кроссплатформенный. Разрабатывается с 1996 года, последняя на сегодня версия — 3.0.6 от 10.01.2019 г.

Сайт: https://www.videolan.org/vlc/
Вики: https://ru.wikipedia.org/wiki/VLC_(медиаплеер)

У меня стоит версия 2.2.4 от 05.06.2016 г. Использую, как основной проигрыватель (не считая системный WMP, который научил воспринимать контейнер mkv с помощью установки набора кодеков CCCP). Еще им удобно смотреть информацию о медиафайле (просмотр метаданных; информация о потоках, содержащихся в контейнере, кодеках) через пункт меню «Инструменты» (или Ctrl+I, Ctrl+J).

2. Медиапроигрыватель MPC-HC — свободный. Только для Windows. Ответвление (форк) медиапроигрывателя MPC (Media Player Classic), который разрабатывался в период 2003-2006 гг. MPC-HC разрабатывался в период 2006-2017 гг., последняя на сегодня версия — 1.7.13 от 16.07.2017 г.

Сайт: https://mpc-hc.org/
Вики: https://ru.wikipedia.org/wiki/Media_Player_Classic

Разработка, однако, продолжается другим ответвлением (2018-2019 гг.):
https://github.com/clsid2/mpc-hc
https://forum.doom9.org/showthread.php?t=175209

У меня стоит версия 1.7.8 от 18.10.2015 г. Использую для определения тайм-кодов начала и конца нужного фрагмента видео с точностью до миллисекунд в формате:
00:00:00.000
часы:минуты:секунды.миллисекунды
или для определения номера кадра начала и конца нужного фрагмента видео в формате:
0, 23.976
номер кадра, частота смены кадров
через пункт меню «Navigate – Go To...» (или Ctrl+G). С помощью этой опции можно определить тайм-код как для текущего местоположения, так и перейти к нужному местоположению.

3. FFmpeg — набор библиотек и утилит для работы с аудио- и видеоданными. Свободный, кроссплатформенный. Работа с утилитами происходит через командную строку. Документация очень сложная, бедная на примеры. Разрабатывается с 2000 года. Последняя на сегодня версия — 4.1.3 от 01.04.2019 г.

Сайт: https://ffmpeg.org/
Вики: https://ru.wikipedia.org/wiki/FFmpeg

У меня стоит новейшая версия. Использую для вырезания из видео нужных фрагментов и склеивания их в отдельное видео.

Простейший вариант запуска главной утилиты указан сразу на первой странице сайта проекта:
ffmpeg -i input.mp4 output.avi
создает файл-контейнер output.avi и копирует в него содержимое имеющегося файла-контейнера input.mp4, то есть выполняет преобразование mp4 в avi.

Вырезаем фрагмент из файла-контейнера mkv:
ffmpeg -ss 00:44:42.306 -to 00:44:47.852 -i movie.mkv fragment1.mkv
movie.mkv — исходный файл-контейнер с фильмом;
fragment1.mkv — файл с таким именем будет создан и в него будет записан нужный фрагмент;
00:44:42.306 — тайм-код начала фрагмента в исходном файле-контейнере с фильмом;
00:44:47.852 — тайм-код конца фрагмента в исходном файле-контейнере с фильмом.

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

Склеивание фрагментов. Предположим, есть два фрагмента fragment1.mkv и fragment2.mkv, вырезанные из одного и того же фильма (то есть характеристики их потоков и кодеков совпадают). Для их склеивания запустим следующую команду:
ffmpeg -f concat -i mylist.txt -c copy result.mkv
причем текстовый файл mylist.txt содержит список склеиваемых фрагментов:
file fragment1.mkv
file fragment2.mkv
ключ -f concat означает склеивание;
ключ -c copy означает, что перекодирование производиться не будет (характеристики фрагментов совпадают же, поэтому оно и не требуется).
Tags: Видео, Инструмент, Программирование
Subscribe

  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your IP address will be recorded 

  • 0 comments