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

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


video

Розбіжності

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

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

Порівняння попередніх версійПопередня ревізія
Наступна ревізія
Попередня ревізія
video [2017/05/14 08:14] – [Монтаж] OpenShot wombatvideo [2021/03/25 14:21] (поточний) – [Багато кадрів] wombat
Рядок 14: Рядок 14:
  
   youtube-dl -g https://www.youtube.com/watch?v=<video_ID> | vlc -   youtube-dl -g https://www.youtube.com/watch?v=<video_ID> | vlc -
 +
 +
 +===== Извлечение кадров =====
 +[[https://stackoverflow.com/a/10962408 | Fastest way to extract frames using ffmpeg?]]
 +  ffmpeg -i file.mpg -r 1/1 $filename%03d.bmp
 +
 +
 +
 +
 +
 ====== Создание ====== ====== Создание ======
  
Рядок 29: Рядок 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''".
  
  
Рядок 38: Рядок 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'').
 +
 +
 +
  
  
Рядок 265: Рядок 372:
   mkvmerge -o show_31.mkv 2010-05-23-07\:37\:34.avi -y 0:400 show_31.ogg   mkvmerge -o show_31.mkv 2010-05-23-07\:37\:34.avi -y 0:400 show_31.ogg
  
 +
 +Объединение видеодорожки из файла ''Video.mkv'' и аудиодорожки из файла ''Separate_audio.ogg'' без перекодирования:
 +
 +  ffmpeg -i Video.mkv -i Separate_audio.ogg -map 0:v -map 1:a -сodec copy ResultVideo.mkv
 +
 +То же самое, с перекодированием только аудиодорожки:
 +
 +  ffmpeg -i Video.mkv -i separate_audio.wav -map 0:v -map 1:a -vcodec copy -acodec libvorbis -q 3 ResultVideo.mkv
 +  
 +Название аудиодорожек(([[https://superuser.com/a/835069 | How do I name an audio track with ffmpeg]])):
 +  ffmpeg -i Video.mkv -i audio1.ogg -i audio2.ogg -map 0:v -map 1:a -map 2:a -codec copy -metadata:s:a:0 title="Звуковая дорожка 1" -metadata:s:a:1 title="Звуковая дорожка 2" ResultVideo.mkv
 +  
 +  
 ===== Создание DVD ===== ===== Создание DVD =====
  
video.1494749640.txt.bz2 · Востаннє змінено: повз wombat