Перейти к содержанию
Asterios

FFmpeg для записи видео и звука (эксперименты)


zuz

Рекомендуемые сообщения

Всем привет. Хочу поделиться опытом использования FFmpeg. Этим инструментом можно записывать и конвертировать видео и аудио. Если тонко все настроить можно добиться боле лучшей картинки, чем при использовании допустим той же obs. И что, не мало важно, без рендера. Видео сразу можно грузить на Ютуб. В настройках записи FFmpeg указаны стандартные параметры, которые можно скорректировать по своему усмотрению для баланса качества и размера файла.  Сразу скажу, что я не профи, а делюсь тем, с чем получилось немного разобраться. Приветствуется критика и исправление ошибок. FFmpeg будем использовать в скриптах, что позволит упростить понимание и автоматизировать процесс. От пользователя нужно будет только подредактировать текст настроек FFmpeg, при желании, и все. Для проверки устройств, с которыми может работать  FFmpeg есть команда для терминала: ffmpeg -list_devices true -f dshow -i dummy

После ввода команды в терминале список устройств будет выглядеть примерно так:

Скрытый текст
[dshow @ 000001e4ab3c0440] "USB2.0 HD UVC WebCam" (video)
[dshow @ 000001e4ab3c0440]   Alternative name "@device_pnp_\\?\usb#vid_2b7e&pid_b597&mi_00#7&10c33a28&0&0000#{65e8773d-8f56-11d0-a3b9-00a0c9223196}\global"
[dshow @ 000001e4ab3c0440] "screen-capture-recorder" (video)
[dshow @ 000001e4ab3c0440]   Alternative name "@device_sw_{860BB310-5D01-11D0-BD3B-00A0C911CE86}\{4EA69364-2C8A-4AE6-A561-56E4B5044439}"
[dshow @ 000001e4ab3c0440] "OBS Virtual Camera" (none)
[dshow @ 000001e4ab3c0440]   Alternative name "@device_sw_{860BB310-5D01-11D0-BD3B-00A0C911CE86}\{A3FCE0F5-3493-419F-958A-ABA1250EC20B}"
[dshow @ 000001e4ab3c0440] "Microphone (C-Media(R) Audio)" (audio)
[dshow @ 000001e4ab3c0440]   Alternative name "@device_cm_{33D9A762-90C8-11D0-BD43-00A0C911CE86}\wave_{257C02F9-C948-4960-A974-755869C15688}"
[dshow @ 000001e4ab3c0440] "virtual-audio-capturer" (audio)
[dshow @ 000001e4ab3c0440]   Alternative name "@device_sw_{33D9A762-90C8-11D0-BD43-00A0C911CE86}\{8E146464-DB61-4309-AFA1-3578E927E935}"
[dshow @ 000001e4ab3c0440] "Line 1 (Virtual Audio Cable)" (audio)
[dshow @ 000001e4ab3c0440]   Alternative name "@device_cm_{33D9A762-90C8-11D0-BD43-00A0C911CE86}\wave_{13039C72-8BFB-49DC-A601-A37F5EBE803D}"
[dshow @ 000001e4ab3c0440] "AI Noise-cancelling Input (ASUS Utility)" (audio)
[dshow @ 000001e4ab3c0440]   Alternative name "@device_cm_{33D9A762-90C8-11D0-BD43-00A0C911CE86}\wave_{389795C2-CD53-4CAF-9403-078961B82614}"
[dshow @ 000001e4ab3c0440] "System Virtual Line (ASUS Utility)" (audio)
[dshow @ 000001e4ab3c0440]   Alternative name "@device_cm_{33D9A762-90C8-11D0-BD43-00A0C911CE86}\wave_{631D166E-C820-4BE9-9AC4-4A709FE98658}"

 

Настройка записи звука: 

Для записи звука с помощью FFmpeg есть некоторые моменты. Стандартно писать звук не выйдет.  В настройках записи FFmpeg нужно указывать конкретное устройство, с которого будет писаться звук. Для этого нам нужен драйвер Screen.Capturer.Recorder. Его  нужно скачать и установить с github. Ссылка на github. После установки драйвера появится устройство: "virtual-audio-capturer" (audio). Которое мы в скриптах и будем использовать для записи звука. Этот драйвер позволит писать системный звук, - "звук с экрана". Тесть звук с игры или болтовню сопартийцев в мамбле.

Создание скрипта(батника):

Открыть блокнот или Notepad++, вставить туда текст(код скрипта), сохранить. При сохранении выбрать "все файлы", присвоить имя файла с расширением .bat. Пример: запись.bat

Установка ffmpeg

Скрытый текст

Текста много, но все достаточно просто:
1. скачать сборку ffmpeg для Windows и распаковать в удобном месте. Создать в корне диска C папку ffmpeg, перенести сюда содержимое распакованного архива. Ссылка на FFmpeg, качать ffmpeg-git-full.7z(фул сборка)
2.Добавить FFmpeg в переменную среды PATH:
Расскажу на примере Windows 11:
-лкм по мой компьютер - "Свойства"
-"Дополнительные параметры системы".
-Во вкладке "Дополнительно" нажмите на кнопку "Переменные среды".
-В разделе "Переменные среды" найдите переменную среды PATH в списке системных переменных и выберите ее для редактирования.
-Нажмите "Изменить" и добавьте путь к каталогу с исполняемыми файлами FFmpeg (например C:\ffmpeg\bin)
Нажмите "OK", чтобы закрыть все окна.
3.Проверка установки:
-Откройте командную строку и введите команду ffmpeg -version. Если установка прошла успешно, вы увидите информацию о версии FFmpeg.
Теперь FFmpeg должен быть установлен и готов к использованию на вашем компьютере.

Универсальный скрипт для записи видео и звука (включает в себя все популярные кадыки)

Скрытый текст

Код скрипта:

@echo off
chcp 65001 > nul
setlocal enabledelayedexpansion

set datetime=%date:/=-%_%time::=-%
set datetime=%datetime: =0%
set datetime=%datetime:.=_%
set datetime=%datetime:~0,19%

rem Путь сохранения видео
if not exist "D:\video\" mkdir "D:\video"

rem Настройки записи видео
echo кодеки программного кодирования (используется процессор)1,2,3
echo кодеки аппаратного ускорения на встроенной графике Intel(работоспособность не проверялась) 4,5
echo кодеки аппаратного ускорения на встроенной графике AMD(работоспособность не проверялась) 6,7
echo кодеки аппаратного ускорения AMD(используется видеокарта AMD,работоспособность не проверялась) 8,9
echo кодеки аппаратного ускорения NVIDIA(используется видеокарта NVIDIA)10,11.12

set "video_settings[1]=-c:v libx264 -video_size 1920x1080 -framerate 30 -b:v 5M -preset slow"
set "video_settings[2]=-c:v libx265 -vf "scale=1920:1080" -framerate 30 -crf 28 -preset medium"
set "video_settings[3]=-c:v libaom-av1 -video_size 1920x1080 -framerate 30 -crf 20 -b:v 10M -cpu-used 8"			
set "video_settings[4]=-c:v h264_qsv -s 1920x1080 -r 30 -preset fast -b:v 5M"
set "video_settings[5]=-c:v hevc_qsv -s 1920x1080 -r 30 -preset slow -b:v 5M"	
set "video_settings[6]=-c:v h264_amf -s 1920x1080 -r 30 -preset fast -b:v 5M"
set "video_settings[7]=-c:v hevc_amf -s 1920x1080 -r 30 -preset slow -b:v 5M"			
set "video_settings[8]=-c:v h264_amf -usage transcoding -quality balanced -b:v 5M"
set "video_settings[9]=-c:v hevc_amf -usage transcoding -quality balanced -b:v 5M"	
set "video_settings[10]=-c:v h264_nvenc -video_size 1920x1080 -framerate 30 -cq 18 -b:v 10M -maxrate 25M -bufsize 50M -preset slow"
set "video_settings[11]=-c:v hevc_nvenc -video_size 1920x1080 -preset slow -rc vbr -cq 20 -b:v 20M -g 60 -refs 5 -profile:v main10 -rc-lookahead 20"
set "video_settings[12]=-c:v av1_nvenc -preset p7 -b:v 10M

rem Настройки записи аудио
set "audio_settings[1]=-c:a aac -ac 2 -b:a 128k"
set "audio_settings[2]=-an"

echo Выберите настройки для записи видео:
for /L %%i in (1,1,12) do (
    echo %%i: !video_settings[%%i]!
)

set /p "choice=Введите номер настройки видео (1-12): "

if not defined video_settings[%choice%] (
    echo Неверный выбор. Попробуйте еще раз.
    goto :EOF
)

set "selected_settings=!video_settings[%choice%]!"

:audio_settings_selection
echo Выберите настройки для записи аудио:
echo 1. Записывать звук
echo 2. Не записывать звук

set /p audio_choice="Введите номер выбранной настройки аудио (1-2): "
if "%audio_choice%"=="1" (
    set "selected_audio_settings=-f dshow -rtbufsize 1024M -i audio="virtual-audio-capturer""
) else if "%audio_choice%"=="2" (
    set "selected_audio_settings="
)

rem Команда ffmpeg для записи с выбранными параметрами
ffmpeg -f gdigrab -probesize 50M -i desktop ^
  !selected_audio_settings! ^
  %selected_settings% ^
  -vf "format=yuv420p,eq=brightness=0.1:contrast=1.2:saturation=1.5,unsharp=3:3:1.0:3:3:0.0" ^
  -fps_mode cfr -async 1 -fflags +genpts ^
  "D:\video\output_%datetime%.mkv"

pause

:invalid_video_choice
echo Неверный выбор настроек видео. Попробуйте снова.
goto input_video

 

 

Запись видео с помощи ffmpeg,  кодек    h264_nvenc

Скрытый текст

Создаем батник, запускаем, пойдет запись в терминале. Если нужно прекратить запись, просто закрываем терминал. Данный скрипт захватывает экран с частотой 30fps с переменным битрейтом, разрешение будет равно разрешению экрана, кодек NVidia. 
Применяются фильтры для цветокоррекции и стабильности улучшая качества видео. Записанное видео сохраняется в папку D:\video с именем файла, включающим текущую дату и время.

Код скрипта без звука:

Скрытый текст

@echo off
set datetime=%date:/=-%_%time::=-%
set datetime=%datetime: =0%
set datetime=%datetime:.=_%
set datetime=%datetime:~0,19%

rem Путь сохранения видео
if not exist "D:\video\" mkdir "D:\video"

ffmpeg -f gdigrab -framerate 30 -probesize 50M -i desktop ^
  -vf "format=yuv420p,eq=saturation=1.5,unsharp=5:5:1.5,hqdn3d=1.5:1.5:6:6,setpts=PTS/1.001,deshake" ^
  -c:v h264_nvenc -preset fast -qp 18 -b:v 10M -maxrate 30M -bufsize 50M ^
  -g 60 -bf 2 -refs 5 -profile:v high ^
  -fps_mode cfr -fflags +genpts ^
  -r 30 "D:\video\output_%datetime%.mkv"

Описание настроек скрипта:
-if not exist "D:\video\" mkdir "D:\video" - это путь сохранения записанного видео, если такой папки на диске D нет, то скрипт ее создаст.
-f gdigrab: устанавливает формат захвата экрана для Windows.
-framerate 30: задает частоту кадров 30 FPS.
-probesize 100M: устанавливает размер буфера для анализа в 100 мегабайт.
-i desktop: указывает, что входным источником является рабочий стол.
-строка vf: применяет серию фильтров к видеопотоку для улучшения качества (насыщенность, резкость, шумоподавление, стабилизация и др.)
-c:v h264_nvenc: использует аппаратное кодирование H.264 через NVENC.
-preset fast: задает быстрый пресет для кодирования.
-qp 18: задает качество кодирования.
-b:v 10M: задает битрейт в 10 мегабит в секунду.
-maxrate 30M: устанавливает максимальный битрейт в 30 мегабит в секунду.
-bufsize 50M: устанавливает размер буфера в 50 мегабайт.
-g 60: задает интервал ключевых кадров.
-bf 2: устанавливает количество bi-frames.
-refs 5: задает количество ссылок на фреймы.
-profile:v high: использует высокий профиль H.264.
-fps_mode cfr: устанавливает постоянную частоту кадров.
-fflags +genpts: генерирует временные метки.
-r 30: задает выходную частоту кадров 30 FPS.
"D:\video\output_%datetime%.mkv": задает имя выходного файла, включающее текущую дату и время для уникальности.
Код скрипта с записью звука и видео:

Скрытый текст

@echo off
set datetime=%date:/=-%_%time::=-%
set datetime=%datetime: =0%
set datetime=%datetime:.=_%
set datetime=%datetime:~0,19%

rem Check if the output directory exists, create if it doesn't
if not exist "D:\video\" mkdir "D:\video"

rem Run ffmpeg with admin privileges
ffmpeg -f gdigrab -framerate 30 -probesize 50M -i desktop ^
  -f dshow -rtbufsize 1024M -i audio="virtual-audio-capturer" ^
  -vf "scale=1920:1080,unsharp=5:5:1,deshake,eq=saturation=1.2" ^
  -c:v h264_nvenc -pix_fmt yuv420p -cq 18 -preset slow ^
  -b:v 10M -maxrate 25M -bufsize 50M ^
  -c:a aac -b:a 192k ^
  -g 60 -bf 2 -refs 5 -profile:v high -rc-lookahead 20 ^
  -colorspace bt709 -color_primaries bt709 -color_trc bt709 ^
  -fps_mode cfr -async 1 -fflags +genpts ^
  "D:\video\output_%datetime%.mkv"

 

Альтернативный скрипт для записи видео без звука

Скрытый текст
Скрытый текст

@echo off
set datetime=%date:/=-%_%time::=-%
set datetime=%datetime: =0%
set datetime=%datetime:.=_%
set datetime=%datetime:~0,19%

rem Путь сохранения видео
if not exist "D:\video\" mkdir "D:\video"

ffmpeg -f gdigrab -framerate 30 -probesize 50M -i desktop ^
  -vf "format=yuv420p,eq=saturation=1.2,unsharp=5:5:1,deshake" ^
  -c:v h264_nvenc -preset fast -qp 18 ^
  -g 60 -bf 2 -refs 5 -profile:v high ^
  -fps_mode cfr -fflags +genpts ^
  -r 30 "D:\video\output_%datetime%.mkv"

Тут ключевой параметр влияющий на качество это -qp.

Чем ниже значение -qp, тем выше качество и больше размер файла: Более низкие значения -qp приводят к меньшему сжатию и, следовательно, к более высокому качеству изображения, но при этом размер файла будет больше. Например, -qp 18 обеспечит высокое качество, но при этом размер файла будет больше, чем при более высоком значении -qp.

Чем выше значение -qp, тем ниже качество и меньше размер файла: Более высокие значения -qp приводят к большему сжатию и, следовательно, к меньшему размеру файла, но качество изображения становится хуже. Например, при использовании -qp 28 файл будет меньше, но качество изображения будет ниже, чем при -qp 18.
 

Запись видео с помощи ffmpeg,  кодек  h265 (более современный с большей степенью сжатия без потери качества)

Скрытый текст

Код скрипта для записи видео и звука:

Скрытый текст

@echo off
set datetime=%date:/=-%_%time::=-%
set datetime=%datetime: =0%
set datetime=%datetime:.=_%
rem Оставляем только первые 19 символов, чтобы избежать проблем с именами файлов в Windows
set datetime=%datetime:~0,19%

rem Проверяем существование выходной директории, создаем ее, если она не существует
if not exist "D:\video\" mkdir "D:\video"

rem Запускаем ffmpeg
ffmpeg -f gdigrab -framerate 30 -probesize 50M -i desktop ^
  -f dshow -rtbufsize 1024M -i audio="virtual-audio-capturer" ^
  -vf "scale=1920:1080,unsharp=5:5:1,deshake,eq=saturation=1.2" ^
  -c:v hevc_nvenc -preset slow -rc vbr -cq 20 -b:v 20M ^
  -g 60 -refs 5 -profile:v main10 -rc-lookahead 20 ^
  -c:a aac -b:a 192k ^
  -fps_mode cfr -r 30 -async 1 -fflags +genpts ^
  "D:\video\output_%datetime%.mkv"

 

Скрипт для записи с ускорением

Скрытый текст
Скрытый текст

@echo off
set datetime=%date:/=-%_%time::=-%
set datetime=%datetime: =0%
set datetime=%datetime:.=_%
set datetime=%datetime:~0,19%

rem Путь сохранения видео
if not exist "D:\video\" mkdir "D:\video"

ffmpeg -f gdigrab -framerate 30 -probesize 50M -i desktop ^
  -vf "setpts=0.5*PTS,format=yuv420p,eq=saturation=1.2,unsharp=5:5:1,deshake" ^
  -c:v h264_nvenc -preset fast -qp 18 ^
  -g 60 -bf 2 -refs 5 -profile:v high ^
  -fps_mode cfr -fflags +genpts ^
  -r 30 "D:\video\output_%datetime%.mkv"

В этом скрипте фильтр setpts=0.5*PTS, который умножает временные метки кадров на 0.5, что ускоряет видео в два раза. Можно изменить это значение на другое число, чтобы получить другую степень ускорения. Например, setpts=0.25*PTS ускорит видео в четыре раза. Идеально для записи гвг-шки)

 

Обрезка видео

Скрытый текст

1.Нужно перетащить видео на скрипт

2.Указать с какой секунды обрезать

3.Продолжительность обрезки в секундах

Допустим видео 60с, нам нужно обрезать первые 5с и последние 5с. Первый параметр указываем 5, второй 50.

Обрезка происходит без перекодирования с сохранением исходного качества.

Скрытый текст

@echo off
setlocal

REM Установка кодировки UTF-8
chcp 65001 >nul

REM Проверка наличия ffmpeg
where ffmpeg >nul 2>nul
if %errorlevel% neq 0 (
    echo "Ошибка: ffmpeg не найден."
    exit /b
)

REM Проверка наличия входного файла
if "%~1"=="" (
    echo "Ошибка: Пожалуйста, перетащите видеофайл на скрипт."
    pause
    exit /b
)

REM Получение имени входного файла без пути и расширения
for %%I in ("%~1") do (
    set "input_name=%%~nI"
    set "input_ext=%%~xI"
)

REM Ввод пользователем начального времени и длительности
set /p start_time="Введите начальное время обрезки (в формате ЧЧ:ММ:СС.ММ): "
set /p duration="Введите длительность обрезки (в секундах): "

REM Формирование имени выходного файла
set output_name=%input_name%_cut

REM Обрезка видео с заданными параметрами
ffmpeg -ss %start_time% -i "%~1" -t %duration% -c:v copy -c:a copy -avoid_negative_ts 1 "%output_name%%input_ext%"

pause
exit /b

 

Склеивание нескольких видео

Скрытый текст

1.Создаем папку, допустим с именем fraps

2.Кидаем туда видео которые хотим склеить

3.Создаем простой текстовый файл, в который прописываем пути и имя файлов c расширением, которые будем склеивать. Не забываем кавычки как в примере. Очередность склейки файлов видео будет такой, какую вы указали в текстовом файле.

Пример текстового файла:

file 'D:\video\fraps\output_10_06_2024_20-10-51.mkv'
file 'D:\video\fraps\output_10_06_2024_20-10-51_cut.mkv'
file 'D:\video\fraps\output_10_06_2024_20-32-09.mkv'

4.Перетаскиваем созданный текстовый файл на скрипт.

Склеивание произойдет без перекодирования с сохранением исходного качества. Можно добавить и переходы, но нужно будет перекодировать все.

Текст скрипта для склейки:

Скрытый текст

@echo off
setlocal

REM Установка кодировки UTF-8
chcp 65001 >nul

REM Проверка наличия ffmpeg
where ffmpeg >nul 2>nul
if %errorlevel% neq 0 (
    echo "Ошибка: ffmpeg не найден."
    exit /b
)

REM Проверка наличия файла со списком видеофайлов
if "%~1"=="" (
    echo "Ошибка: Пожалуйста, перетащите файл со списком видеофайлов на скрипт."
    pause
    exit /b
)

REM Установка имени выходного файла
set /p output_name="Введите имя выходного файла (без расширения): "
set output_name=%output_name%.mkv

REM Выполнение склейки видео
ffmpeg -f concat -safe 0 -i "%~1" -c copy "%output_name%"

pause
exit /b

 

 

Изменено пользователем zuz
Ссылка на комментарий
Поделиться на другие сайты

2 часа назад, Капустень сказал:

почему то в начале упущена суть, нафига это? 

Я пока сам не знаю для чего это выложил) Прекрасно понимаю, что все привыкли к стандартным средствам записи и редактирования видео. Суть в том, что можно настроить запись так, что при не большом размере файла получить достойное качество. Залить в ютубчик, и там не потерять в качестве.

Ссылка на комментарий
Поделиться на другие сайты

В л2 мы имеем не самый мощный графоний, по сути - ники и чатик бы были четкие, а остальное уж точно будет в норме.

24 минуты назад, zuz сказал:

Залить в ютубчик, и там не потерять в качестве

Так ютуб все равно пережимает видео, он не хранит оригиналы. Там либо vp09, либо av1. Самый простой метод настроить в записи видео изначально большее разрешение, тогда мы получим более-менее нормальную картинку. А можно и не записывать в большем разрешении, а вообще рендерить.

===1080p ====> 2160p =====> 2160p

изначальное   рендерим  заливаем на ютуб.

Ну и битрейт, мы так же можем сделать чуть больший битрейт, чем 50к битрейта для 2к разрешения - но для л2 это уже не такой важный фактор.

Выложи сравнения, во сколько раз сжимает, какое качество картинки получаем и сколько по времени занимает перепаковка.

 

 

Ссылка на комментарий
Поделиться на другие сайты

3 часа назад, StеrWоzа сказал:

В л2 мы имеем не самый мощный графоний, по сути - ники и чатик бы были четкие, а остальное уж точно будет в норме.

Так ютуб все равно пережимает видео, он не хранит оригиналы. Там либо vp09, либо av1. Самый простой метод настроить в записи видео изначально большее разрешение, тогда мы получим более-менее нормальную картинку. А можно и не записывать в большем разрешении, а вообще рендерить.

===1080p ====> 2160p =====> 2160p

изначальное   рендерим  заливаем на ютуб.

Ну и битрейт, мы так же можем сделать чуть больший битрейт, чем 50к битрейта для 2к разрешения - но для л2 это уже не такой важный фактор.

Выложи сравнения, во сколько раз сжимает, какое качество картинки получаем и сколько по времени занимает перепаковка.

 

 

В общем смотри идею) Для создания "кина" это будет явно сложно и не нужно, для создания фрапса гвг-шки думаю будет норм. Пишем гвг , обрезаем не нужные края видео, склеиваем превьюшку с видео + музычка, получаем готовый фрапс. Все это делается ffmpeg используя скрипты максимально быстро. Далее конвертируем его в 2к тем же ffmpeg, ютуб его хорошо кушает и не портит качество. То что я выложил, это только скрипт записи видео. Настройками фильтров ffmpeg нужно довести запись до состояния, когда тебе в принципе не нужен будет рендер записываемого видео.

Вот есть еще такой вариант скрипта записи. Качество видео можно регулировать одним параметром -qp 18 (чем выше значение, тем ниже качество. 18-баланс)

Пишет примерно с 20к битрейтом. Минута видео +-150мб. 

Попробуй, напиши ощущения. Как по мне, лучше obs

Скрытый текст

@echo off
set datetime=%date:/=-%_%time::=-%
set datetime=%datetime: =0%
set datetime=%datetime:.=_%
set datetime=%datetime:~0,19%

rem Путь сохранения видео
if not exist "D:\video\" mkdir "D:\video"

ffmpeg -f gdigrab -framerate 30 -probesize 50M -i desktop ^
  -vf "format=yuv420p,eq=saturation=1.2,unsharp=5:5:1,deshake" ^
  -c:v h264_nvenc -preset fast -qp 18 ^
  -g 60 -bf 2 -refs 5 -profile:v high ^
  -fps_mode cfr -fflags +genpts ^
  -r 30 "D:\video\output_%datetime%.mkv"

Скрипт конвертации в 2к, битрейт 20к. Нужно просто записанное видео перетащить на скрипт.

Скрытый текст

@echo off
setlocal

REM Проверка наличия ffmpeg
where ffmpeg >nul 2>nul
if %errorlevel% neq 0 (
    echo "Ошибка: ffmpeg не найден."
    exit /b
)

REM Проверка наличия входного файла
if "%~1"=="" (
    echo "Ошибка: Пожалуйста, перетащите видеофайл на скрипт."
    pause
    exit /b
)

REM Получение имени входного файла без пути и расширения
for %%I in ("%~1") do (
    set "input_name=%%~nI"
    set "input_ext=%%~xI"
)

REM Определение параметров для конвертации
set resolution=2560x1440
set bitrate=20M
set maxrate=30M
set bufsize=60M
set framerate=30
set audio_bitrate=320k

REM Формирование имени выходного файла
set output_name=%input_name%_2K

REM Конвертация видео с заданными параметрами
ffmpeg -i "%~1" -vf "scale=%resolution%" -c:v h264 -b:v %bitrate% -maxrate %maxrate% -bufsize %bufsize% -r %framerate% -c:a aac -b:a %audio_bitrate% "%output_name%.mp4"

pause
exit /b

 

Изменено пользователем zuz
Ссылка на комментарий
Поделиться на другие сайты

7 часов назад, zuz сказал:

Как по мне, лучше obs

Я как раз собирался сделать гайд по настройкам ОБС для л2, но как то время еще не нашел.  Там же не только в картинке дело (решается битрейтом) и не в размере файла (ПЗУ сейчас дешевое, я за 5к брал недавно на 1гб м2 ссд), а еще в куче фильтров, слоев, переключения сцен, микшера каналов звука итд. 

Ссылка на комментарий
Поделиться на другие сайты

13 часов назад, StеrWоzа сказал:

Я как раз собирался сделать гайд по настройкам ОБС для л2, но как то время еще не нашел.  Там же не только в картинке дело (решается битрейтом) и не в размере файла (ПЗУ сейчас дешевое, я за 5к брал недавно на 1гб м2 ссд), а еще в куче фильтров, слоев, переключения сцен, микшера каналов звука итд. 

Гайд по obs необходим, пиши. Там же можно писать и с помощью ffmpeg тоже). У меня проблема с инетом, заливать гектары в 4к, нет возможности. Да и рендерить это все сутками, то еще удовольствие.



Не много обновил информацию:

-добавил скрипт записи с ускорением, обрезку и склейку.

Ссылка на комментарий
Поделиться на другие сайты

22 минуты назад, zuz сказал:

Да и рендерить это все сутками, то еще удовольствие.

GPU рендер приятно удивляет, даже на старой, но не бесполезной 1060

Изменено пользователем StеrWоzа
Ссылка на комментарий
Поделиться на другие сайты

  • 4 недели спустя...

Качество видео определяется параметром CQP, где 23 это дефолтное и 0 это лосслесс. Ограничивать качество видео битрейтом имеет смысл только для стримов.

На ютуб имеет смысл заливать видео наилучшего качества (вплоть до RGB), чтобы когда оно было пожато ютубовским кодеком в нем было меньше артефактов.

На практике я использую nvenc av1 cqp 20, это оверкилл и хватило бы 23, но у меня канал инета позволяет заливать гигабайты.

Есть прога mkvtoolnix, которая позволяет резать и сшивать видео без пережатия, работает очень быстро.

На процессоре, если он минимум 8 ядер 16 потоков, еще можно записывать видео кодеком x264 preset ultrafast, но в реальном времени hevc и av1 они совершенно не тянут.

Изменено пользователем ixthUA
Ссылка на комментарий
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Восстановить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...