Користувальницькькі налаштування

Налаштування сайту


video

Розбіжності

Тут показані розбіжності між вибраною ревізією та поточною версією сторінки.

Посилання на цей список змін

Both sides previous revision Попередня ревізія
Наступна ревізія
Попередня ревізія
video [2020/05/06 23:09]
wombat Извлечение кадров
video [2021/03/25 16:21]
wombat [Багато кадрів]
Рядок 39: Рядок 39:
  
  
 +
 +===== Из картинок =====
 +
 +
 +==== Один кадр ====
 +
 +[[https://​stackoverflow.com/​a/​25895709 | Creating a video from a single image for a specific duration in ffmpeg]]
 +
 +  ffmpeg -loop 1 -i image.png -c:v libx264 -t 15 -pix_fmt yuv420p -vf scale=320:​240 out.mp4
 +
 +Здесь ''​-t 15''​ обозначает длительность 15 секунд,​ а ''​-vf scale=320:​240''​ устанавливает ширину и высоту кадра.
 +
 +  ​
 +  ​
 +
 +==== Багато кадрів ====
 +
 +Якщо файли названо:​
 +
 +  img001.jpg
 +  img002.jpg
 +  img003.jpg
 +  ...
 +
 +то поєднати їх в одному відео можна наступною командою:​
 +
 +  ffmpeg -r 1/5 -i img%03d.png -c:v libx264 -vf "​fps=25,​format=yuv420p"​ out.mp4
 +
 +При цьому параметр "''​-r 1/​5''"​ позначає,​ що одне зображення триматиметься протягом 5 секунд відео. Якщо потрібно змінювати швидше,​ наприклад,​ 2 картинки на секунду відео, то можна вказати просто "''​-r 2''"​.
  
  
Рядок 48: Рядок 77:
  
 [[http://​www.openshot.org/​ | OpenShot]] -- простой видеоредактор. Хорош для простого монтажа и создания видео из фрагментов видеофайлов,​ аудиофайлов,​ картинок. Графический интерфейс написан на языке Python и использует библиотеку ''​PyQt''​. Версии 1.X были основаны на библиотеке [[https://​www.mltframework.org/​ | MLT]]. Начиная с версии 2.0 используется своя собственная библиотека [[http://​www.openshot.org/​libopenshot/​ | LibOpenShot]]. [[http://​www.openshot.org/​ | OpenShot]] -- простой видеоредактор. Хорош для простого монтажа и создания видео из фрагментов видеофайлов,​ аудиофайлов,​ картинок. Графический интерфейс написан на языке Python и использует библиотеку ''​PyQt''​. Версии 1.X были основаны на библиотеке [[https://​www.mltframework.org/​ | MLT]]. Начиная с версии 2.0 используется своя собственная библиотека [[http://​www.openshot.org/​libopenshot/​ | LibOpenShot]].
 +
 +==== Соединение роликов ====
 +
 +[[https://​video.stackexchange.com/​a/​10401 | How to concatenate clips from the same video with ffmpeg]]
 +
 +=== Демультиплескором ===
 +
 +Соединять видеоролики таким способом можно только при условии,​ что они имеют одинаковый формат:​ размеры кадра, кодеки,​ ... и т.д.
 +
 +Создаём файл, в котором перечислено,​ какие фрагменты из каких файлов необходимо соединить(([[http://​ffmpeg.org/​ffmpeg-formats.html#​concat-1 | FFmpeg Documentation]],​ [[https://​trac.ffmpeg.org/​wiki/​Concatenate | FFmpeg wiki: Concatenating media files]], [[https://​ffmpeg.org/​faq.html#​toc-How-can-I-join-video-files_003f | FFmpeg FAQ]])):
 +
 +<file txt concat.txt>​
 +file '​part1.mkv'​
 +
 +file '​part2.mkv'​
 +duration 00:​00:​04.080
 +inpoint 00:​00:​02.000
 +outpoint 00:​00:​03.000
 +
 +file '​part3.mkv'​
 +duration 300
 +inpoint 15
 +outpoint 25
 +</​file>​
 +
 +В этом файле ''​part1.mkv'',​ ''​part2.mkv''​ и ''​part3.mkv''​ -- видеоролики,​ части которых нам надо соединить. После параметра ''​duration''​ указывается длительность соответствующего ролика. Параметр ''​inpoint''​ показывает начальный момент времени,​ с которого нужно считывать фрагмент. Параметр ''​outpoint''​ показывает конечный момент времени в ролике,​ до которого его нужно считывать. Все эти параметры относятся к предшествующему параметру ''​file''​. Соответственно,​ аналогичные параметры,​ стоящие после второго упоминания ''​file'',​ будут относиться уже ко второму ролику.
 +
 +Как видим, время можно указывать либо в формате ''​чч:​мм:​сс.мс'',​ либо одним числом в секундах.
 +
 +Другой вариант этой процедуры -- сначала вырезать нужные фрагменты из каждого ролика:​
 +
 +  ffmpeg -ss 00:​00:​02.000 -i video2.mkv -t 1 part2.mkv
 +  ffmpeg -ss 15 -i video3.mkv -t 10 part3.mkv
 +
 +затем опустить все параметры в файле ''​concat.txt'',​ оставить только имена файлов:​
 +
 +<file txt concat.txt>​
 +file '​part1.mkv'​
 +file '​part2.mkv'​
 +file '​part3.mkv'​
 +</​file>​
 +
 +Затем, когда файл тем или иным образом составлен,​ можно запустить собственно соединение:​
 +
 +  ffmpeg -f concat -i concat.txt -codec copy output.mkv
 +
 +
 +=== Фильтром ===
 +
 +Применяя фильтр ''​concat'',​ можно соединять даже видеоролики,​ бывшие в разных форматах и закодированные разными кодеками. Использовать этот фильтр удобно в комбинации с фильтром ''​trim'',​ который вырезает нужный фрагмент из видеоролика. Важно при этом не забыть об одновременном применении фильтра ''​atrim'',​ который вырезает нужный фрагмент из аудиодорожки. Как правило,​ вырезанные фрагменты видео и аудио должны совпадать по времени.
 +
 +  ffmpeg -i part1.mkv -i part2.mkv -i part1.mkv \
 +  -filter_complex \
 +  "​[1:​v]trim=start=2:​end=3,​setpts=PTS-STARTPTS[v1];​ \
 +   ​[1:​a]atrim=start=2:​end=3,​asetpts=PTS-STARTPTS[a1];​ \
 +   ​[2:​v]trim=15:​25,​setpts=PTS-STARTPTS[v2];​
 +   ​[2:​a]atrim=15:​25,​asetpts=PTS-STARTPTS[a2];​ \
 +   ​[0:​v][0:​a][v1][a1][v2][a2]concat=n=3:​v=1:​a=1[out]"​ \
 +  -map "​[out]"​ output.mkv
 +
 +Такая команда передаст первый ролик из файла ''​part1.mkv''​ целиком в фильтр ''​concat'',​ т.к. мы не применяли к нему обрезку (''​trim''​). При этом видеодорожка из этого файла обозначается ''​[0:​v]'',​ а аудиодорожка -- ''​[0:​a]''​. Из второго входного файла ''​part2.mkv''​ будет вырезан фрагмент со 2й по 3ю секунды,​ и затем передан фильтру ''​concat''​ под обозначением ''​[v1]''​ для видео и ''​[a1]''​ для аудио. Из третьего файла ''​part1.mkv''​ будет вырезан фрагмент с 15й по 25ю секунды и тоже передан фильтру ''​concat''​. ​
 +
 +Если при вырезании фрагмента будет отсутствовать параметр ''​start='',​ это обозначает,​ что фрагмент должен начинаться с самого начала,​ а если отсутствует параметр ''​end='',​ это обозначает,​ что фрагмент должен длиться до конца.
 +
 +В качестве параметров фильтру ''​concat''​ передаётся количество входных фрагментов (''​n=3''​),​ количество видеодорожек в выходном файле (''​v=1''​) и количество аудиодорожек в выходном файле (''​a=1''​).
 +
 +
 +
  
  
video.txt · В останнє змінено: 2021/03/25 16:21 by wombat