DzenIT

HOME ZEN IT SOFT APK LIVE GAME OTHER W CONTACT SEARCH
Up

FFmpeg обработка видео и аудио

Для конвертации формата avi в mp4 без сжатия используют команду

ffmpeg.exe -i input.avi out.mp4

Скачать ffmpeg можно по ссылке тут

указываем битрейд и кодек

  • -b:v - битрейд в кбит/с
  • -c:v libx264 - кодек
  • 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.mkv
    ffmpeg

    Битрейт 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.


    ffmpeg добавить в cmd командную строку windows

    Сохраняем, перезагружаем.