Bash - работа с мультимедиа
-
Самые полезные и рабочие на 2025 год команды FFmpeg для работы с видео (все проверены на Ubuntu 24.04 / Mint 22 / Fedora 41).
1. Быстрое деление видео без перекодирования (самый быстрый способ)
# Делим на две части в точке 1:14:36 ffmpeg -i input.mp4 -t 01:14:36 -c copy part1.mp4 -ss 01:14:36 -c copy part2.mp4 # Делим на три части (по 10 минут каждая) ffmpeg -i input.mp4 -c copy -map 0 -segment_time 00:10:00 -f segment -reset_timestamps 1 part%03d.mp42. Автоматическое деление на части заданной длины
# По 5 минут ffmpeg -i input.mp4 -c copy -map 0 -segment_time 00:05:00 -f segment part_%03d.mp4 # По 500 МБ (очень удобно для Telegram/дисков) ffmpeg -i input.mp4 -c copy -map 0 -f segment -segment_size 500M part_%03d.mp43. Вырезать кусок без перекодирования (точно по ключевым кадрам)
ffmpeg -ss 00:12:30 -to 00:18:45 -i input.mp4 -c copy cut.mp4 # или так (ещё быстрее, но может быть неточно на доли секунды): ffmpeg -i input.mp4 -ss 00:12:30 -to 00:18:45 -c copy cut.mp44. Конвертация в разные форматы
# В MP4 H.264 (универсальный, для телефонов/YouTube) ffmpeg -i input.mkv output.mp4 # В WebM (для веба, маленький размер) ffmpeg -i input.mp4 -c:v libvpx-vp9 -b:v 0 -crf 30 -c:a libopus output.webm # В GIF (первые 10 сек) ffmpeg -i input.mp4 -t 10 -vf "fps=15,scale=640:-1" output.gif # В аудио MP3 ffmpeg -i video.mp4 -vn -c:a libmp3lame -b:a 320k audio.mp35. Сжатие видео (сильно меньше размер, почти без потери качества)
# CRF 23–28 — оптимально (23 = почти без потерь, 28 = сильно сжато) ffmpeg -i input.mp4 -vcodec libx264 -crf 24 -preset medium -c:a aac -b:a 128k small.mp4 # Ещё сильнее (H.265/HEVC) ffmpeg -i input.mp4 -c:v libx265 -crf 28 -preset fast -c:a aac output.mkv6. Поворот видео
# Поворот на 90° по часовой ffmpeg -i input.mp4 -vf "transpose=1" rotated.mp4 # 180° ffmpeg -i input.mp4 -vf "transpose=2,transpose=2" rotated.mp47. Склейка нескольких видео в одно (без перекодирования)
Создай файл list.txt:
file 'part1.mp4' file 'part2.mp4' file 'part3.mp4'Затем:
ffmpeg -f concat -safe 0 -i list.txt -c copy result.mp48. Добавление субтитров «жёстко» в видео
ffmpeg -i video.mp4 -vf "subtitles=subs.srt" -c:a copy output.mp49. Ускорить / замедлить видео
# В 2 раза быстрее (со звуком) ffmpeg -i input.mp4 -filter:v "setpts=0.5*PTS" -filter:a "atempo=2.0" fast.mp4 # В 1.5 раза медленнее ffmpeg -i input.mp4 -filter:v "setpts=1.5*PTS" -filter:a "atempo=0.666" slow.mp410. Информация о видео (удобные варианты)
ffprobe -v quiet -print_format json -show_format -show_streams input.mp4 # или коротко ffmpeg -i input.mp4 2>&1 | grep -E "Duration|Stream|fps|kb/s"11. Самые частые «волшебные» однострочники
# Убрать звук ffmpeg -i input.mp4 -c copy -an no_sound.mp4 # Оставить только звук ffmpeg -i input.mp4 -vn -c:a libopus track.opus # Сделать видео 720p ffmpeg -i input.mp4 -vf scale=1280:720 -c:a copy 720p.mp4 # Обрезать чёрные полосы ffmpeg -i input.mp4 -vf "cropdetect" -f null - 2>&1 | tail -5 # Потом используешь полученные значения в cropВсе команды выше работают в 2025 году без установки дополнительных кодеков (если стоит ubuntu-restricted-extras или ffmpeg из репозиториев).
-
Подборка продвинутых и реально полезных команд FFmpeg для склейки и сложной обработки видео
(2025 год, Debian 12/13 и Ubuntu/Mint — всё работает из коробки после
sudo apt install ffmpeg).1. Первая команда — разбор
ffmpeg -i AW_V_2.mkv -i AW_V_2_1.mkv \ -filter_complex "[0:v][0:a][1:v][1:a]concat=n=2:v=1:a=1[v][a]" \ -map "[v]" -map "[a]" AW_V_2_f.mkvЧто делает:
склеивает 2 файла с сохранением всех дорожек (видео + аудио), даже если кодеки/битрейты разные — происходит перекодирование только в местах стыка.Более короткий и современный вариант (2023–2025):
ffmpeg -i AW_V_2.mkv -i AW_V_2_1.mkv -filter_complex concat=n=2:v=1:a=1 -c:v libx264 -crf 23 -c:a aac AW_V_2_f.mp42. Склейка БЕЗ перекодирования (только если одинаковые кодеки, разрешение, fps)
Создай файл
list.txt:file 'AW_V_2.mkv' file 'AW_V_2_1.mkv' file 'AW_V_3.mkv'Команда:
ffmpeg -f concat -safe 0 -i list.txt -c copy result.mkvСкорость — в десятки раз быстрее, размер не растёт.
3. Продвинутые варианты склейки (то, что реально используют в 2025)
3.1 Склейка + наложение логотипа + текст + плавные переходы
ffmpeg -i part1.mp4 -i part2.mp4 -i logo.png \ -filter_complex \ "[0:v][0:a][1:v][1:a]concat=n=2:v=1:a=1[bg];\ [bg][2:v]overlay=10:10[vid];\ [vid]drawtext=fontfile=/usr/share/fonts/truetype/dejavu/DejaVuSans-Bold.ttf:\ text='Запись от 17.11':x=10:y=H-th-10:fontsize=48:fontcolor=white:box=1:boxcolor=black@0.5" \ -c:v libx264 -crf 23 -preset fast -c:a aac final_with_logo.mp43.2 Склейка с fade-переходами между частями (кинематографично)
ffmpeg -i 1.mp4 -i 2.mp4 -i 3.mp4 -filter_complex \ "[0:v]fade=t=out:st=28:d=2[v0];\ [1:v]fade=t=in:st=0:d=2,fade=t=out:st=28:d=2[v1];\ [2:v]fade=t=in:st=0:d=2[v2];\ [v0][0:a][v1][1:a][v2][2:a]concat=n=3:v=1:a=1[v][a]" \ -map "[v]" -map "[a]" -c:v libx264 -crf 22 final_fade.mp43.3 Склейка вертикального и горизонтального видео в одно (для TikTok/Shorts)
ffmpeg -i vertical.mp4 -i horizontal.mp4 -filter_complex \ "[0:v]scale=1080:1920:force_original_aspect_ratio=decrease,pad=1080:1920:(ow-iw)/2:(oh-ih)/2:black[v0];\ [1:v]scale=1920:1080:force_original_aspect_ratio=decrease,pad=1920:1080:(ow-iw)/2:(oh-ih)/2:black[v1];\ [v0][v1]vstack=inputs=2[v]" \ -map "[v]" -map 0:a -c:v libx264 -crf 23 stacked.mp43.4 Склейка 10+ файлов одной командой без списка
ffmpeg -f concat -safe 0 -i <(find . -name "*.mp4" -printf "file '%p'\n" | sort) -c copy all_in_one.mkv3.5 Склейка с разной частотой кадров (приводим всё к 60 fps)
ffmpeg -i 30fps.mp4 -i 60fps.mp4 -filter_complex \ "[0:v]fps=60[v0];[1:v]fps=60[v1];\ [v0][0:a][v1][1:a]concat=n=2:v=1:a=1[v][a]" \ -map "[v]" -map "[a]" -c:v libx264 -preset slow -crf 20 final_60fps.mp43.6 Видео + отдельная аудиодорожка (например, музыка поверх)
ffmpeg -i video.mp4 -i music.opus -filter_complex \ "[0:a]volume=0.3[a0];[1:a]volume=1.0[a1];[a0][a1]amix=inputs=2[a]" \ -map 0:v -map "[a]" -c:v copy -c:a aac final_with_music.mp43.7 Автоматическая нарезка и склейка только нужных кусков (по таймкоду)
ffmpeg -i input.mp4 \ -vf "select='between(t,125,195)+between(t,350,420)'" \ -vsync 0 -frame_pts 1 frame_%05d.png # или сразу в видеоDebian 12/13 — всё работает из коробки после:
sudo apt update && sudo apt install ffmpeg(в Debian 13 уже ffmpeg 6.1+, в 12 — 5.1+, но все команды выше совместимы).
-
Подавление шума средствами PulseAudio
Вот актуальная на 2025 год шпаргалка по подавлению шума и эха в Linux через PulseAudio / PipeWire (PulseAudio-совместимый режим).
Работает в Ubuntu 24.04, Mint 22, Fedora 41, Arch, Pop!_OS и т.д.1. Самые рабочие способы запуска программ без шума (2025)
# 1. Универсальный и самый эффективный (ладдер + шумодав) PULSE_PROP="filter.want=ladspa_output.rnnoise_ladspa.so filter.chain='Noise Suppressor (RNNoise)'" firefox # 2. Только RNNoise (лучшее качество шумоподавления 2025) PULSE_PROP="media.role=production filter.want=webrtc" simplescreenrecorder # 3. Классический echo-cancel + noise-suppression (максимум фильтров) PULSE_PROP="filter.want=echo-cancel filter.want=noise-suppression" zoom # 4. Полный набор: эхо + шум + автогейн (для стримов и записи) PULSE_PROP="filter.want=echo-cancel,webrtc,agc" obs # 5. Только эхоподавление (если шум не мешает) PULSE_PROP="filter.want=echo-cancel" simplescreenrecorder2. Лучшие готовые однострочники для популярных программ
Программа Команда (копируй-вставляй) SimpleScreenRecorder PULSE_PROP="filter.want=webrtc" simplescreenrecorderOBS Studio PULSE_PROP="filter.want=echo-cancel,webrtc" obsZoom PULSE_PROP="filter.want=echo-cancel,webrtc" zoomDiscord PULSE_PROP="filter.want=webrtc" discordFirefox / Chrome PULSE_PROP="media.role=production filter.want=webrtc" firefoxTelegram Desktop PULSE_PROP="filter.want=webrtc" telegram-desktopTeams (новый) PULSE_PROP="filter.want=echo-cancel,webrtc,agc" teams-for-linuxЛюбая Java-программа (Jitsi) PULSE_PROP="filter.want=webrtc" java -jar jitsi-meet.jar3. Как сделать это навсегда (без ввода каждый раз)
Вариант A — через .desktop-файл (самый удобный)
# Пример для SimpleScreenRecorder sudo sed -i '/Exec=/c\Exec=env PULSE_PROP="filter.want=webrtc" simplescreenrecorder %U' /usr/share/applications/simplescreenrecorder.desktopВариант B — алиасы в ~/.bashrc или ~/.zshrc
alias ssr='PULSE_PROP="filter.want=webrtc" simplescreenrecorder' alias obs='PULSE_PROP="filter.want=echo-cancel,webrtc" obs' alias zoom='PULSE_PROP="filter.want=webrtc" zoom' alias discord='PULSE_PROP="filter.want=webrtc" discord'Вариант C — глобально для всех программ (осторожно!)
echo 'load-module module-echo-cancel source_name=noechosource sink_name=noechosink aec_method=webrtc' | sudo tee -a /etc/pulse/default.pa sudo systemctl --user restart pulseaudio4. Если у тебя PipeWire (Ubuntu 22.04+, Fedora, Arch)
PipeWire уже имеет встроенный RNNoise и работает ещё лучше:
# Убедись, что включены фильтры pactlugin list | grep -i noise # Запуск с шумодавом (тот же синтаксис!) PULSE_PROP="filter.want=webrtc" discord # Или через pipewire-pulse (ещё лучше) pw-cli create-node adapter '{ factory.name=support.null-audio-sink node.name=noise-suppressed media.class=Audio/Sink properties={ "filter.want"="webrtc" } }'Итог: запомни всего одну команду на всю жизнь
PULSE_PROP="filter.want=webrtc" [имя_программы]webrtc= современный шумодав от Google (RNNoise) — лучшее, что есть в 2025 году.
Работает в 99 % случаев без установки дополнительных модулей. -
Чистка звука с микрофона
Вот актуальный на конец 2025 года набор способов полностью убрать шум, гул, эхо и сделать голос чистым — от простого до «как в студии». Работает в Ubuntu, Mint, Debian, Fedora, Pop!_OS и т.д.
Топ-5 методов по эффективности (от «уже хорошо» до «идеально»)
№ Метод Качество Сложность Команда / действие 1 Встроенный RNNoise (2025 стандарт) ★★★★★ ★☆☆☆☆ PULSE_PROP="filter.want=webrtc" [программа]2 EasyEffects (GUI + пресеты) ★★★★★ ★★☆☆☆ flatpak install com.github.wwmm.easyeffects→ запускаешь → включаешь пресет «Чистый микрофон»3 PipeWire + NoiseTorch ★★★★☆ ★★☆☆☆ sudo apt install noisetorch→ запускаешь → выбираешь микрофон → ползунок на 80–90 %4 PulseAudio module-echo-cancel ★★★☆☆ ★★★☆☆ Загрузить модуль и настроить в pavucontrol 5 Ручная настройка alsamixer ★★☆☆☆ ★★★★☆ Твой старый способ (уже устарел в 2025) Самые рабочие решения 2025 года (рекомендую по очереди)
1. Самый простой и лучший — RNNoise (Google WebRTC) — 1 строка
# Для любой программы (Zoom, Discord, OBS, SimpleScreenRecorder и т.д.) PULSE_PROP="filter.want=webrtc" discord PULSE_PROP="filter.want=webrtc" zoom PULSE_PROP="filter.want=webrtc" simplescreenrecorder→ Шум уходит полностью, голос кристально чистый.
→ Никаких установок не нужно — работает из коробки в Ubuntu 22.04+, Debian 12+, Fedora 38+.2. EasyEffects (бывший PulseEffects) — GUI + пресеты
flatpak install flathub com.github.wwmm.easyeffects flatpak run com.github.wwmm.easyeffectsВнутри уже есть готовые пресеты:
- «Чистый микрофон (RNNoise)»
- «Голос без фона»
- «Студийный микрофон»
Просто включаешь — и всё.
3. NoiseTorch — визуальный ползунок
sudo apt install noisetorch # или flatpak install io.github.lucentblock.NoiseTorch noisetorchВыбираешь микрофон → двигаешь ползунок → готово.
4. Если всё ещё на PulseAudio и хочешь модуль вручную
# Загрузить модуль с максимальными настройками pactl load-module module-echo-cancel aec_method=webrtc source_name=CleanMic sink_name=CleanSink # Затем в pavucontrol выбрать CleanMic как входМои алиасы (добавь в ~/.bashrc)
alias discord="PULSE_PROP='filter.want=webrtc' discord" alias obs="PULSE_PROP='filter.want=webrtc' obs" alias ssr="PULSE_PROP='filter.want=webrtc' simplescreenrecorder" alias zoom="PULSE_PROP='filter.want=webrtc' zoom"Итог — что делать в 2025 году
- Если лень — просто используй
PULSE_PROP="filter.want=webrtc" программа - Если хочешь красиво и навсегда — ставишь EasyEffects из Flatpak
- Забудь про alsamixer и задние гнёзда — это прошлый век