| Порівняння попередніх версійПопередня ревізіяНаступна ревізія | Попередня ревізія |
| video [2017/05/14 08:14] – [Монтаж] OpenShot wombat | video [2021/03/25 14:21] (поточний) – [Багато кадрів] wombat |
|---|
| |
| 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 |
| | |
| | |
| | |
| | |
| | |
| ====== Создание ====== | ====== Создание ====== |
| |
| |
| |
| | |
| | ===== Из картинок ===== |
| | |
| | |
| | ==== Один кадр ==== |
| | |
| | [[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''". |
| |
| |
| |
| [[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''). |
| | |
| | |
| | |
| |
| |
| 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 ===== |
| |