Для конвертации формата avi в mp4 без сжатия используют команду
ffmpeg.exe -i input.avi out.mp4
Скачать ffmpeg можно по ссылке тут
указываем битрейд и кодек
ffmpeg.exe -i input.avi -c:v libx264 -b:v 1000K out.mp4
объединения нескольких mp3
ffmpeg -i "concat:input1.mp3|input2.mp3|input3.mp3" -c:a copy [-metadata= ...] output.mp3
Конвертация FullHD в HD качество
Лучшее качество. Размер может быть по прежнему большой
ffmpeg -i MyMovie.mkv -vf scale=-1:720 -c:v libx264 -crf 0 -preset veryslow -c:a copy MyMovie_720p.mkv
Качество без потерь "на глаз"
ffmpeg -i MyMovie.mkv -vf scale=-1:720 -c:v libx264 -crf 18 -preset veryslow -c:a copy MyMovie_720p.mkv
Неплохое сжатие в mkv
ffmpeg -i in_video.mp4 -c:v vp9 -c:a libvorbis out_video.mkvffmpeg
Битрейт mp3
ffmpeg -i input.mp3 -codec:a libmp3lame -b:a 128k output.mp3
Уменьшить качество 720p в 480p ffmpeg
ffmpeg -i input.avi -vf scale=-2:480 output.mp4
Вырезаем фрагмент фильма с 00:06:40 по 00:13:20 без кодирования в ffmpeg
ffmpeg -ss 00:06:40 -i 01full.mp4 -to 00:13:20 -c copy 02.mp4
или так
ffmpeg -i 06-01.mp4 -ss 00:00:33 -to 00:22:55 -c copy sndk06-01.mp4
Чтобы вырезать часть видеофайла с помощью FFmpeg в Windows, вам нужно открыть командную строку и использовать следующую команду (вырезаем с 00:00:24 до конца видео):
ffmpeg -i input.mp4 -ss 00:00:24 -c copy output.mp4
Можно обработать несколько файлов сразу (windows)
for %i in (*.mp4) do ffmpeg -i %i -ss 00:00:24 -c copy new_%i
ffmpeg качаем потоковое видео m3u8
ffmpeg -i "URL" -bsf:a aac_adtstoasc -vcodec copy -c copy -crf 50 video.mp4
Команда для linux bash:
echo "Enter m3u8 link:";read link;echo "Enter output filename:";read filename;ffmpeg -i "$link" -bsf:a aac_adtstoasc -vcodec copy -c copy -crf 50 $filename.mp4
sh для термукс
echo "Enter m3u8 link:";read link;echo "Enter output filename:";read filename;ffmpeg -i "$link" -bsf:a aac_adtstoasc -vcodec copy -c copy -crf 50 $filename.mp4; mv *.mp4 storage/downloads/
ffmpeg кодирование при помощи gpu кодек H264:
ffmpeg -hwaccel cuda -i in.mp4 -c:v h264_nvenc out.mp4
ffmpeg.exe -hwaccel cuda -i inmovie.mp4 -c:v h264_nvenc -pix_fmt yuv420p -preset slow -rc vbr_hq -b:v 8M -maxrate:v 10M -c:a aac -b:a 224k outmovie.mp4
-hwaccel cuda uses NVidia CUDA GPU acceleration for decoding (also working: dxva2)
-c:v h264_nvenc uses NVidia h264 GPU Encoder
-pix_fmt yuv420p 4:2:0 color subsampling
-preset slow HQ gpu encoding
-rc vbr_hq uses RC option to enable variable bitrate encoding with GPU encoding
-qmin:v 19 -qmax:v 14 sets minimum and maximum quantization values (optional)
-b:v 6M -maxrate:v 10M sets average (target) and maximum bitrate allowed for the encoder
MP3 в MP4 без рисунка черный экран
ffmpeg -f lavfi -i color=c=black:s=1280x720:r=5 -i audio.mp3 -crf 0 -c:a copy -shortest output.mp4
Соотношение сторон
ffmpeg -i input.mp4 -aspect 16:9 -vf scale=1280:720 output.mp4
Ускорение и замедление
Замедлить видео в 5 раз:
ffmpeg -i input.mp4 -an -vf setpts=5*PTS result.mp4
Ускорить видео в 4 раза:
ffmpeg -i input.mp4 -an -vf setpts=0.25*PTS result.mp4
Ускорить видео в 4 раза:
ffmpeg -i input.mp4 -an -vf setpts=PTS/4 result.mp4
Ускорить видео в 20 раз:
ffmpeg -i input.mp4 -an -vf setpts=PTS/20 result.mp4
Ускорение замедление аудио
Для изменения темпа используется аудиофильтр atempo:
-af atempo=темп Темп должен быть в пределах 0.5...100
Ускорить аудио в 5 раз:
ffmpeg -i input.wav -af atempo=5 result.mp3
Замедлить аудио в 2 раза:
ffmpeg -i input.wav -af atempo=0.5 result.mp3
ffmpeg -i input.wav -af atempo=1/2 result.mp3
Для замедления аудио в 4 раза, нужно последовательно применить фильтр два раза:
ffmpeg -i input.wav -af atempo=0.5,atempo=0.5 result.mp3
Ускорить аудио и видео в 2 раза
ffmpeg -i input.mp4 -vf setpts=PTS/2 -af atempo=2 result.mp4
Замедлить аудио и видео в 2 раза
ffmpeg -i input.mp4 -vf setpts=PTS*2 -af atempo=0.5 result.mp4
Разбиваем видеофайл на части по 15 минут ffmpeg
ffmpeg -i 1-1.mp4 -ss 00:00:00 -t 00:15:00 -c copy 1-1(01).mp4 ffmpeg -i 1-1.mp4 -ss 00:15:00 -t 00:15:00 -c copy 1-1(02).mp4
Делаем это автоматически при помощи python:
import os input_file = "1-1.mp4" # Replace with the name of your input video file output_file_template = "1-1({:02d}).mp4" segments = ["00:00:00", "00:15:00", "00:30:00", "00:45:00", "01:00:00"] counter = 0 for segment in segments: counter += 1 output_file = output_file_template.format(counter) command = f"ffmpeg -i {input_file} -ss {segment} -t 00:15:00 -c copy {output_file}" os.system(command)
или
import os from datetime import datetime, date, timedelta input_file = "output.mp4" # Replace with the name of your input video file output_file_template = "1-1({:02d}).mp4" segments = ["00:00:00", "00:15:00"] counter = 0 while True: last_segment = segments[-1] last_segment_time = datetime.strptime(last_segment, '%H:%M:%S').time() new_segment_time = (datetime.combine(date.today(), last_segment_time) + timedelta(minutes=15)).time() new_segment = new_segment_time.strftime('%H:%M:%S') segments.append(new_segment) counter += 1 output_file = output_file_template.format(counter) command = f"ffmpeg -i {input_file} -ss {last_segment} -t 00:15:00 -c copy {output_file}" os.system(command) if new_segment == '23:59:59': break
Или обычный bat файл:
ffmpeg -i 1-1.mp4 -ss 00:00:00 -t 00:15:00 -c copy 1-1(01).mp4 ffmpeg -i 1-1.mp4 -ss 00:15:00 -t 00:15:00 -c copy 1-1(02).mp4 ffmpeg -i 1-1.mp4 -ss 00:30:00 -t 00:15:00 -c copy 1-1(03).mp4 ffmpeg -i 1-1.mp4 -ss 00:45:00 -t 00:15:00 -c copy 1-1(04).mp4 ffmpeg -i 1-1.mp4 -ss 01:00:00 -t 00:15:00 -c copy 1-1(05).mp4
Обьеденить файлы mp4
для windows cmd
(for %i in (*.mp4) do @echo file '%i') > mylist.txt
ffmpeg -f concat -safe 0 -i mylist.txt -c copy output.mp4
Замена аудиодорожки:
ffmpeg -i namevideo.mp4 -i nameaudio.mp3 -c:v copy -map 0:v -map 1:a -shortest output.mp4
-c:v copy, чтобы скопировать видеопоток из файла без изменений.
-map мы указываем карту потоков для видео и аудио: -map 0:v указывает, что мы хотим использовать видеопоток из первого входного файла, и -map 1:a указывает, что мы хотим использовать аудиопоток из второго входного файла.
-shortest мы указываем ffmpeg остановить запись, когда закончится аудиодорожка. Наконец, мы указываем выходной файл, названный "output.mp4".
Чтобы добавить звуковую дорожку «01.mp3» со 100% громкостью в файл «01.webp», сохраняя при этом исходную звуковую дорожку из «01.webp» с громкостью 85%, вы можете использовать следующую команду ffmpeg:
ffmpeg -i 01.webm -i 01.mp3 -filter_complex "[0:a]volume=0.85[a1]; [1:a]volume=1[a2]; [a1][a2]amix=inputs=2:duration=longest[out]" -map 0:v -map "[out]" -c:v copy -shortest output.webp
Процесс довольно длительный поэтому можно использовать gpu. Входной файл 02.webm, звук 02.mp3, выходной 02.mp4 пресет fast:
ffmpeg -hwaccel cuda -i 02.webm -i 02.mp3 -filter_complex "[0:a]volume=0.85[a1]; [1:a]volume=1[a2]; [a1][a2]amix=inputs=2:duration=longest[out]" -map 0:v -map "[out]" -c:v h264_nvenc -preset fast -shortest 02.mp4
ffmpeg -hwaccel cuda -i 03.mp4 -i 03.mp3 -filter_complex "[0:a]volume=0.85[a1]; [1:a]volume=1[a2]; [a1][a2]amix=inputs=2:duration=longest[out]" -map 0:v -map "[out]" -c:v h264_nvenc -preset fast -b:v 500K -maxrate:v 1M -shortest 03-cv.mp4
ffmpeg конвертация в gif
На конкретном примере мы обрежем видео с 00:04:24 до 00:04:47, уменьшим разрешения до 530:295 для уменьшения размера gif, снизим частоту кадров до 5 и сохраним в gif файл
ffmpeg -i input.mp4 -ss 00:04:24 -to 00:04:47 -vf "scale=530:295" -r 5 output.gif
Добавляем ffmpeg в командную строку windows
Мой компьютер - Свойства - Дополнительные параметры системы - Переменные среды
Выбираем строку где Path - изменить, потом Создать, прописываем расположение папки ffmpeg.exe.
Сохраняем, перезагружаем.