Показаны различия между двумя версиями страницы.
Предыдущая версия | |||
— | fedora:040-multimedia [16.12.2023 22:16] (текущий) – [Картинка в картинке из двух видео] Oleg Kochkin | ||
---|---|---|---|
Строка 1: | Строка 1: | ||
+ | ====== Мультимедиа ====== | ||
+ | ===== Видео в png и png в видео ===== | ||
+ | ffmpeg -i input.mkv " | ||
+ | ffmpeg -framerate 10 -i " | ||
+ | |||
+ | ===== Все png файлы в jpg ===== | ||
+ | mogrify -format jpg *.png | ||
+ | mogrify -format jpg *.png && rm *.png | ||
+ | |||
+ | ===== Скачивание видеофайла с URL с ограничением скорости и продолжительности ===== | ||
+ | youtube-dl --hls-prefer-native -r 3m -o - <URL> | ffmpeg -y -i - -t 300 -c copy test.ts | ||
+ | Скачивает файл "< | ||
+ | |||
+ | ===== Сглаживание перехода между кадрами (minterpolate) ===== | ||
+ | ffmpeg -i inpit.mkv -filter:v " | ||
+ | |||
+ | https:// | ||
+ | |||
+ | ===== Видео в webp (ffmpeg) ===== | ||
+ | На март 2021г. в репах rpmfusion для Fedora 33 ffmpeg (4.3.2) был собран без возможности кодирования в webp, поэтому был использован [[https:// | ||
+ | |||
+ | 4.3.2: | ||
+ | $ ffmpeg -hide_banner -codecs | grep webp | ||
+ | D.VILS webp WebP | ||
+ | 4.3.1-static: | ||
+ | $ ffmpeg-alt -hide_banner -codecs | grep webp | ||
+ | DEVILS webp WebP (encoders: libwebp_anim libwebp ) | ||
+ | |||
+ | ffmpeg-alt -i input.mp4 -vcodec libwebp -lossless 1 -q 60 -loop 0 -preset default -an -vsync 0 output.webp | ||
+ | |||
+ | < | ||
+ | WebP (9.1 Mb) vs Gif (58.1 Mb):< | ||
+ | <a href=" | ||
+ | </ | ||
+ | ===== Поворот видео на 90º без перекодирования ===== | ||
+ | ffmpeg -i in.mp4 -metadata: | ||
+ | Поворачивает видео на 90º по часовой стрелке. Не сохраняет метаданные в MKV. | ||
+ | |||
+ | ===== Записать ffmpeg-ом поток в виде фрагментированного MP4 ===== | ||
+ | ffmpeg по умолчанию записывает нефрагментированный поток MP4, из-за чего, невозможно просматривать записываемый файл одновременно с записью, | ||
+ | |||
+ | Для получения фрагментированного MP4 файла, необходимо добавить параметр **-movflags frag_keyframe** и, как правило, | ||
+ | |||
+ | ===== Изменение FPS без перекодирования ===== | ||
+ | Из исходного файла **in.mp4** удаляется звук, устанавливается 10 fps и сохраняется в файл **in-10fps.mkv**: | ||
+ | mkvmerge --output in-10fps.mkv --no-audio --default-duration 0:10p in.mp4 | ||
+ | И, уже с 10 fps в mp4: | ||
+ | ffmpeg -i in-10fps.mkv -c copy out-10fps.mp4 | ||
+ | |||
+ | ===== Анимационный gif с плавным переходом из двух (или более) картинок ===== | ||
+ | convert 1.png 1.png 2.png 2.png 1.png -morph 10 -set delay 10 out.gif | ||
+ | [[https:// | ||
+ | ===== Опции FFMPEG для захвата HTTP потока плохого качаства ===== | ||
+ | ffmpeg -reconnect 1 -reconnect_at_eof 1 -reconnect_streamed 1 -reconnect_delay_max 2 -timeout 10000000 -i ... | ||
+ | [[https:// | ||
+ | |||
+ | ===== Получение из одной картинки видео заданной продолжительности (10 секунд) ===== | ||
+ | ffmpeg -filter_complex aevalsrc=0 -loop 1 -i picture.png -t 10 -vcodec huffyuv -y out.avi | ||
+ | или одна картинка с аудиотреком: | ||
+ | ffmpeg -loop 1 -i picture.jpg -i sound.mp3 -t 05:40 -c:v libx264 -c:a copy -y out.mkv | ||
+ | |||
+ | ===== Добавление текста к видео ===== | ||
+ | ffmpeg -i input.mkv -vf drawtext=" | ||
+ | font=URW Chancery L: \ | ||
+ | fontcolor=red@.5: | ||
+ | shadowcolor=gray@.5: | ||
+ | shadowx=1: \ | ||
+ | shadowy=1: \ | ||
+ | fontsize=20: | ||
+ | x=5: y=5" \ | ||
+ | -acodec copy -crf 20 -vcodec libx264 -y output.mkv | ||
+ | |||
+ | [[https:// | ||
+ | |||
+ | ===== Комбинирование нескольких видео в одно (мозаика) ===== | ||
+ | |||
+ | Исходные видео: | ||
+ | * **1-up.avi** - Размер 1920x768 (должно будет располагаться сверху) | ||
+ | * **2-bt.avi** - Размер 1920x312 (должно будет располагаться снизу) | ||
+ | |||
+ | Необходимо получить видео с общим размером 1920x1080. | ||
+ | |||
+ | Команда: | ||
+ | ffmpeg -i 1-up.avi -i 2-bt.avi -filter_complex " | ||
+ | |||
+ | Подробнее [[https:// | ||
+ | |||
+ | Ещё один пример (**" | ||
+ | ffmpeg -i left.mkv -i right.mkv -filter_complex " | ||
+ | ffmpeg -i top.mkv -i bottom.mkv -filter_complex " | ||
+ | **" | ||
+ | **" | ||
+ | |||
+ | ===== Картинка в картинке из двух видео ===== | ||
+ | ffmpeg -hide_banner -y -i big.mp4 -i little.mkv -map 1:1 -filter_complex " | ||
+ | Полупрозрачный | ||
+ | ffmpeg -hide_banner -y -i big.mp4 -i little.mkv -map 1:1 -filter_complex " | ||
+ | |||
+ | Встраиваемая (little.mkv) уменьшается в пять раз (scale=iw/ | ||
+ | ===== Добавить логотип в видео ===== | ||
+ | |||
+ | ffmpeg -i input.mkv -i logo.png -filter_complex " | ||
+ | |||
+ | input.mkv - Входной видео файл\\ | ||
+ | logo.png - Файл логотипа\\ | ||
+ | output.mkv - Выходной видео файл\\ | ||
+ | 8:8 - координаты логотипа (0:0 - верхний левый угол). | ||
+ | |||
+ | [[http:// | ||
+ | |||
+ | ===== Сжатие динамического диапазона для аудио (DRC) ===== | ||
+ | Выравнивает громкость аудио. | ||
+ | sox input.wav output.wav compand 0.3,.8 -120,-10 -10 -100 .1 | ||
+ | < | ||
+ | {{: | ||
+ | < | ||
+ | |||
+ | < | ||
+ | {{: | ||
+ | < | ||
+ | |||
+ | === Для ffmpeg. === | ||
+ | ffmpeg -i input.ts -vcodec copy -af " | ||
+ | [[http:// | ||
+ | |||
+ | === Для PulseAudio. === | ||
+ | Установить пакет ladspa-swh-plugins\\ | ||
+ | В файл / | ||
+ | load-module module-ladspa-sink sink_name=drc sink_master=speakers plugin=sc4_1882 label=sc4 control=1, | ||
+ | update-sink-proplist drc device.description=" | ||
+ | В данном примере, | ||
+ | |||
+ | ===== Собрать анимационный GIF из видеофайла ===== | ||
+ | mplayer -vo jpeg input.avi | ||
+ | |||
+ | * Создаёт кучу JPG файлов в текущей папке. | ||
+ | * input.avi должен быть того разрешения, | ||
+ | * Частота кадров должна соответствовать задержке анимации. | ||
+ | |||
+ | convert *.jpg -delay 100 -layers optimize output.gif | ||
+ | |||
+ | * Собирает из кучи JPG файлов анимированный output.gif. | ||
+ | * Задержка между картинками в GIF файле - 100 миллисекунд, | ||
+ | |||
+ | А можно ещё проще: | ||
+ | ffmpeg -i input.avi output.gif | ||
+ | Более качественный вариант: | ||
+ | ffmpeg -i input.avi -r 10 -f image2pipe -vcodec ppm - | convert -delay 5 -loop 0 -layers Optimize - output.gif | ||
+ | |||
+ | Прямое и обратное проигрывание.\\ | ||
+ | Прямой файл: | ||
+ | convert in.avi forward.gif | ||
+ | Обратный файл: | ||
+ | convert in.avi -reverse reverse.gif | ||
+ | Слияние полученных файлов: | ||
+ | convert -coalesce forward.gif reverse.gif out.gif | ||
+ | |||
+ | ===== Просмотр потока с ТВ тюнера на VLC ===== | ||
+ | vlc v4l2:/// | ||
+ | /dev/video0 - тюнер\\ | ||
+ | SECAM - стандарт вещания\\ | ||
+ | hw:1,0 - аудио устройство (" | ||
+ | ----- | ||
+ | |||
+ | ===== Перекодировка тегов mp3 файлов из CP1251 в UTF8 ===== | ||
+ | find -iname ' | ||
+ | Необходим пакет python-mutagen\\ | ||
+ | [[http:// | ||
+ | ----- | ||
+ | |||
+ | ===== Захват части экрана в видеофайл ===== | ||
+ | // | ||
+ | |||
+ | ffmpeg -y -t 600 -s 800x600 -f x11grab -i : | ||
+ | |||
+ | Опции: | ||
+ | | ||
+ | -y - Перезаписывать существующий файл | ||
+ | -t 600 - Продолжительность записи в секундах | ||
+ | -s 800x600 | ||
+ | -f x11grab | ||
+ | -i : | ||
+ | -vpre libx264-lossless_ultrafast - Предустановки видеокодека (быстрый способ, | ||
+ | / | ||
+ | |||
+ | **В Fedora 27 вместо "-vpre libx264-lossless_ultrafast" | ||
+ | |||
+ | Содержимое файла предустановок ("/ | ||
+ | vcodec=libx264 | ||
+ | flags=+loop+cgop | ||
+ | partitions=-parti8x8-parti4x4-partp8x8-partp4x4-partb8x8 | ||
+ | me_method=dia | ||
+ | subq=0 | ||
+ | me_range=16 | ||
+ | g=250 | ||
+ | keyint_min=25 | ||
+ | sc_threshold=40 | ||
+ | i_qfactor=0.71 | ||
+ | b_strategy=1 | ||
+ | qcomp=0.6 | ||
+ | qmin=0 | ||
+ | qmax=69 | ||
+ | qdiff=4 | ||
+ | |||
+ | [[http:// | ||
+ | |||
+ | Со звуком: | ||
+ | ffmpeg -y -t 600 -s 1920x1080 -f x11grab -i :0.0+0,0 -f alsa -ac 2 -i pulse -vpre libx264-lossless_ultrafast / | ||
+ | Весь экран с кодеком HuffYUV: | ||
+ | ffmpeg -y -s 1920x1080 -f x11grab -i :0.0+0,0 -vcodec huffyuv -y screen.avi | ||
+ | |||
+ | ----- | ||
+ | |||
+ | ===== Сохранение в wmv без перекодирования ===== | ||
+ | Сохраняются дорожки 1 (audio) и 4 (video): | ||
+ | mencoder input.wmv -of lavf -ovc copy -oac copy -aid 1 -vid 4 -o output.wmv | ||
+ | |||
+ | ===== Кодирование звукового файла DTS -> AC3 ===== | ||
+ | |||
+ | < | ||
+ | Audio | ||
+ | Format | ||
+ | Format/ | ||
+ | Format profile | ||
+ | Duration | ||
+ | Bit rate mode : Variable | ||
+ | Bit rate : 1 750 Kbps / 1 510 Kbps | ||
+ | Channel(s) | ||
+ | Channel positions | ||
+ | Sampling rate : 48.0 KHz | ||
+ | Bit depth : 16 bits | ||
+ | Compression mode : Lossless / Lossy | ||
+ | < | ||
+ | |||
+ | Команда: | ||
+ | ffmpeg -i audio.dts -ab 448000 -ar 48000 -ac 6 -acodec ac3 -y audio.ac3 | ||
+ | < | ||
+ | Audio | ||
+ | Format | ||
+ | Format/ | ||
+ | Mode extension | ||
+ | Duration | ||
+ | Bit rate mode : Constant | ||
+ | Bit rate : 448 Kbps | ||
+ | Channel(s) | ||
+ | Channel positions | ||
+ | Sampling rate : 48.0 KHz | ||
+ | Bit depth : 16 bits | ||
+ | Compression mode : Lossy | ||
+ | Stream size : 388 MiB (100%) | ||
+ | < | ||
+ | |||
+ | ===== Преобразовать DVD в один vob файл с сохранением всех аудиодорожек. ===== | ||
+ | |||
+ | vobcopy -i VIDEO_TS -l -n 3 | ||
+ | |||
+ | **-i VIDEO_TS** - Папка с структурой DVD.\\ | ||
+ | **-l** - Возможность создать vob файл размером более 2Гб.\\ | ||
+ | **-n 3** - Создавать файл из третьего заголовка. | ||
+ | |||
+ | Параметры DVD можно узнать командой\\ | ||
+ | Краткая информация: | ||
+ | lsdvd VIDEO_TS | ||
+ | Полная информация: | ||
+ | lsdvd VIDEO_TS -x | ||
+ | |||
+ | ===== Параметры аудиофильтра " | ||
+ | |||
+ | Нумерация каналов: | ||
+ | |||
+ | 0 - Front Left (Передний Левый) - FL\\ | ||
+ | 1 - Front Right (Передний Правый) - FR\\ | ||
+ | 2 - Rear Left (Задний Левый) - RL\\ | ||
+ | 3 - Rear Right (Задний Правый) - RR\\ | ||
+ | 4 - Front Center (Передний Центральный) - FC\\ | ||
+ | 5 - Subwoofer (Сабвуфер) - SW\\ | ||
+ | |||
+ | Преобразование шестиканального звука в двухканальный, | ||
+ | |||
+ | |||||||||||| | ||
+ | || FL || FR || RL || RR || FC || SW || | ||
+ | | 0.5 | 0 | 0 | 0.5 | 0.5 | 0 | 0 | 0.5 | 1 | 1 | 0.5 | 0.5 | | ||
+ | |||||||||||| | ||
+ | | L | R | L | R | L | R | L | R | L | R | L | R | | ||
+ | |||
+ | {{ mencoder-pan.png? | ||
+ | Т.е.:\\ | ||
+ | * Передний Левый входной на 0.5 громкости в Левый выходной, | ||
+ | * Передний Левый входной на 0 громкости в Правый выходной, | ||
+ | * Передний Правый входной на 0 громкости в Левый выходной, | ||
+ | * Передний Правый входной на 0.5 громкости в Правый выходной, | ||
+ | * Задний Левый входной на 0.5 громкости в Левый выходной, | ||
+ | * Задний Левый входной на 0 громкости в Правый выходной, | ||
+ | * Задний Правый входной на 0 громкости в Левый выходной, | ||
+ | * Задний Правый входной на 0.5 громкости в Правый выходной, | ||
+ | * Передний Центральный входной на 1 громкости в Левый выходной, | ||
+ | * Передний Центральный входной на 1 громкости в Правый выходной, | ||
+ | * Сабвуфер входной на 0.5 громкости в Левый выходной, | ||
+ | * Сабвуфер входной на 0.5 громкости в Правый выходной, | ||
+ | |||
+ | Первый параметр устанавливает количество выходных каналов. | ||
+ | |||
+ | **-af pan=2: | ||
+ | |||
+ | Преобразование 6 -> 6 с усилением тыловых и переднего центрального каналов и ослаблением сабвуфера: | ||
+ | **-af pan=6: | ||
+ | |||
+ | Пример для ffmpeg:\\ | ||
+ | ffmpeg -i 4359-rus.dts -ab 128000 -vf pan=" | ||
+ | |||
+ | ===== Разобрать DVD на файлы по главам. ===== | ||
+ | $ cat dvd-chapters-to-mpg VIDEO_TS 5 7 | ||
+ | | ||
+ | # | ||
+ | | ||
+ | $folder=@ARGV[0]; | ||
+ | $chapter_start=@ARGV[1]; | ||
+ | $chapter_end=@ARGV[2]; | ||
+ | if (" | ||
+ | print " | ||
+ | print " | ||
+ | exit; | ||
+ | } | ||
+ | if (" | ||
+ | if (" | ||
+ | for ($i=$chapter_start; | ||
+ | $chap=$i; | ||
+ | while (length ($chap)< | ||
+ | print " | ||
+ | `mencoder dvd:// -dvd-device \" | ||
+ | } | ||
+ | |||
+ | Параметры запуска; | ||
+ | dvd_folder - папка со структурой DVD диска (VIDEO_TS)\\ | ||
+ | chapter_start - начальная глава (5)\\ | ||
+ | chapter_end - конечная глава (7) | ||
+ | |||
+ | ===== Создание скриншотов из видеофайла. ===== | ||
+ | |||
+ | mplayer file.avi -vo png -nosound -sstep 60 | ||
+ | |||
+ | ===== Перекодирование файлов ape в mp3. ===== | ||
+ | |||
+ | Преобразование ape в wav: | ||
+ | |||
+ | mac file.ape file.wav | ||
+ | |||
+ | Преобразование wav в mp3: | ||
+ | |||
+ | lame --preset insane file.wav file.mp3 | ||
+ | |||
+ | Разрезание файла mp3 на треки (необходим cue файл): | ||
+ | |||
+ | mp3splt -c file.cue file.mp3 -o "@n - @a - @t" | ||
+ | |||
+ | Где @n - номер дорожки, | ||
+ | |||
+ | Необходимые пакеты, | ||
+ | |||
+ | {{: | ||
+ | {{: | ||
+ | {{: | ||
+ | |||
+ | ===== Исправление и декодинг AVI файлов. ===== | ||
+ | Исправление индексов: | ||
+ | mencoder -idx input.avi -ovc copy -oac copy -o output.avi | ||
+ | |||
+ | Перекодирование 1.mkv в o1.avi (первый проход): | ||
+ | mencoder 1.mkv -nosound -ovc xvid -xvidencopts vhq=1: | ||
+ | |||
+ | (второй проход): | ||
+ | mencoder 1.mkv -oac mp3lame -aid 1 -ovc xvid -xvidencopts vhq=1: | ||
+ | |||
+ | ---- | ||
+ | |||
+ | ===== Извлечение звуковой дорожки из видео файлов. ===== | ||
+ | mplayer видеофайл.avi -dumpaudio -dumpfile аудиофайл.ac3 | ||
+ | |||
+ | ---- | ||
+ | |||
+ | ===== Изменение соотношения сторон в заголовке AVI файла. ===== | ||
+ | mencoder -vf dsize=4/3 ... | ||
+ | |||
+ | ---- | ||
+ | |||
+ | ===== Соединение avi файлов. ===== | ||
+ | Для соединения двух (и более) avi файлов: | ||
+ | |||
+ | mencoder -oac copy -ovc copy -o out.avi in-1.avi in-2.avi | ||
+ | |||
+ | ---- | ||
+ | |||
+ | ===== Указание выходного контейнера видео.===== | ||
+ | mencoder -of mpeg | ||
+ | mencoder -of help (доступные контейнеры) | ||
+ | |||
+ | ---- | ||