Полезные пункты контекстного меню для mp4 | ffmpeg
Цитата: Mikhail от 21.05.2026, 17:38Это да, сложно)), то ли hdr тут не настоящий, то ли потому что тут HEVC Main 10 SDR, а это не hdr, либо потому что Dolby Vision P5, а mpc воспроизводит его в норм цвете с рендером, потому что я как понял, там включен Convert to SDR с яркостью 125 нит, плюс есть HDR10/DV Passthrough, в общем пока не удалось пережать нормально.
Это да, сложно)), то ли hdr тут не настоящий, то ли потому что тут HEVC Main 10 SDR, а это не hdr, либо потому что Dolby Vision P5, а mpc воспроизводит его в норм цвете с рендером, потому что я как понял, там включен Convert to SDR с яркостью 125 нит, плюс есть HDR10/DV Passthrough, в общем пока не удалось пережать нормально.
Цитата: Андрей от 21.05.2026, 18:29Mikhail, спасибо. Буду искать тогда обычный. Просто хотел в коллекцию фильм положить, но 16 ГБ не хочется, при том, что все 4 части оригинала весят 4 с небольшим гигабайта в пережатом виде.
Mikhail, спасибо. Буду искать тогда обычный. Просто хотел в коллекцию фильм положить, но 16 ГБ не хочется, при том, что все 4 части оригинала весят 4 с небольшим гигабайта в пережатом виде.
Цитата: Psydiant от 29.07.2026, 17:11Цитата: Psydiant от 20.03.2024, 00:06Привет Ребят!
У меня почему то при обработке файлов на gpu (-c:v h264_nvenc -preset llhq -rc constqp -qp 21 -c:a copy), файлы на выходе получаются глючные, в том плане что превью видео в любом плеере при наведении мышкой на таймлайн, отображается как пустое (прозрачный квадрат с контурными чёрными линиями по краям), а в винде превью видеофайла отображается нормально и второе это если переходить кнопкой мыши на какой-нибудь кадр по времени, клацая по таймлайну, то видео резко зависает, а звук идёт без тормозов (т.е. сам плеер вроде как не зависает), видяха начинает нагружаться и увеличиваются обороты кулеров (по оборотам настраивал под себя в MSIAfterburner), сам факт что идёт какая то нагрузка на видяху, которой не должно быть. Что это может быть? Метод сжатия для себя хотел бы оставить именно на gpu, результат мне больше остальных методов нравится.Всем Привет!
В кой то веки разобрался в чём проблема была! Проблема в том, что начиная с версий ffmpeg 6.1.1, настройки по умолчанию для пресетов (особенно для пресетов с низкой задержкой, как llhq) стали агрессивнее и теперь необходимо принудительно указывать интервал ключевых кадров. За эту настройку отвечает параметр:-gэто принудительная установка расстояния между ключевыми кадрами. По умолчанию без этого флага расстояние между ключевыми кадрами слишком большое, тот же Media Player Classic при перемотке вынужден просчитывать огромный кусок видео в памяти, что и вызывает очень большую задержку при перемотке видео. Второй параметр:-movflags +faststartпереносит таблицу индексов в начало файла. Без этих флагов эскиз часто выглядит как "сломанный", т.е. проводник Windows не может "прочитать" видео для создания эскиза. В итоге для себя я выбрал оптимальное значение-g 60и добавил флаги-movflags +faststart, а для остальных могу предоставить практические рекомендации по выбору значения параметра-g:1) Для статичного видео (интервью, лекции, скринкасты):
-g 250
Максимальное сжатие. Интервал ключевых кадров 10 сек.
2) Для динамичного видео (игры, спорт, экшен):-g 100
Лучше перемотка и предпросмотр, чуть больше размер. Интервал ключевых кадров 5 сек.
3) Для максимальной совместимости:-g 60
Почти мгновенная перемотка, надёжное отображение эскизов. Это та самая золотая середина. При-g 60ключевой кадр создаётся каждые 2 секунды для видео в 30 fps, а для видео в 60fps на каждую секунду создаётся по 1 кадру ключевому кадру.
4) Для "оригинального рипа" (без потерь):-g 25
Мгновенная перемотка, идеальное качество, но огромный размер. Интервал ключевых кадров каждую секунду.Как пример полностью мои команды в реестре выглядят теперь вот так:
1) Сжатие на GPU_H264:
[HKEY_CURRENT_USER\SOFTWARE\Classes\SystemFileAssociations\.mp4\shell\FFmpeg\shell\Сжать MP4\shell\GPUH264\command]
@="\"D:\\Prog\\myscripts\\FFmpeg\\ffmpeg.exe\" -i \"%1\" -c:v h264_nvenc -preset llhq -rc constqp -qp 21 -g 60 -movflags +faststart -c:a copy \"%1.mp4\""
2) Сжатие на GPU_HEVC (H265):
[HKEY_CURRENT_USER\SOFTWARE\Classes\SystemFileAssociations\.mp4\shell\FFmpeg\shell\Сжать MP4\shell\GPUH264\command]
@="\"D:\\Prog\\myscripts\\FFmpeg\\ffmpeg.exe\" -i \"%1\" -c:v hevc_nvenc -preset llhq -rc constqp -qp 21 -g 60 -movflags +faststart -c:a copy \"%1.mp4\""
Цитата: Psydiant от 20.03.2024, 00:06Привет Ребят!
У меня почему то при обработке файлов на gpu (-c:v h264_nvenc -preset llhq -rc constqp -qp 21 -c:a copy), файлы на выходе получаются глючные, в том плане что превью видео в любом плеере при наведении мышкой на таймлайн, отображается как пустое (прозрачный квадрат с контурными чёрными линиями по краям), а в винде превью видеофайла отображается нормально и второе это если переходить кнопкой мыши на какой-нибудь кадр по времени, клацая по таймлайну, то видео резко зависает, а звук идёт без тормозов (т.е. сам плеер вроде как не зависает), видяха начинает нагружаться и увеличиваются обороты кулеров (по оборотам настраивал под себя в MSIAfterburner), сам факт что идёт какая то нагрузка на видяху, которой не должно быть. Что это может быть? Метод сжатия для себя хотел бы оставить именно на gpu, результат мне больше остальных методов нравится.
Всем Привет!
В кой то веки разобрался в чём проблема была! Проблема в том, что начиная с версий ffmpeg 6.1.1, настройки по умолчанию для пресетов (особенно для пресетов с низкой задержкой, как llhq) стали агрессивнее и теперь необходимо принудительно указывать интервал ключевых кадров. За эту настройку отвечает параметр: Скопировано-g это принудительная установка расстояния между ключевыми кадрами. По умолчанию без этого флага расстояние между ключевыми кадрами слишком большое, тот же Media Player Classic при перемотке вынужден просчитывать огромный кусок видео в памяти, что и вызывает очень большую задержку при перемотке видео. Второй параметр: Скопировано-movflags +faststart переносит таблицу индексов в начало файла. Без этих флагов эскиз часто выглядит как "сломанный", т.е. проводник Windows не может "прочитать" видео для создания эскиза. В итоге для себя я выбрал оптимальное значение Скопировано-g 60 и добавил флаги Скопировано-movflags +faststart, а для остальных могу предоставить практические рекомендации по выбору значения параметра Скопировано-g:
1) Для статичного видео (интервью, лекции, скринкасты): Скопировано-g 250
Максимальное сжатие. Интервал ключевых кадров 10 сек.
2) Для динамичного видео (игры, спорт, экшен): Скопировано-g 100
Лучше перемотка и предпросмотр, чуть больше размер. Интервал ключевых кадров 5 сек.
3) Для максимальной совместимости: Скопировано-g 60
Почти мгновенная перемотка, надёжное отображение эскизов. Это та самая золотая середина. При Скопировано-g 60 ключевой кадр создаётся каждые 2 секунды для видео в 30 fps, а для видео в 60fps на каждую секунду создаётся по 1 кадру ключевому кадру.
4) Для "оригинального рипа" (без потерь): Скопировано-g 25
Мгновенная перемотка, идеальное качество, но огромный размер. Интервал ключевых кадров каждую секунду.
Как пример полностью мои команды в реестре выглядят теперь вот так:
1) Сжатие на GPU_H264:
[HKEY_CURRENT_USER\SOFTWARE\Classes\SystemFileAssociations\.mp4\shell\FFmpeg\shell\Сжать MP4\shell\GPUH264\command]
@="\"D:\\Prog\\myscripts\\FFmpeg\\ffmpeg.exe\" -i \"%1\" -c:v h264_nvenc -preset llhq -rc constqp -qp 21 -g 60 -movflags +faststart -c:a copy \"%1.mp4\""
2) Сжатие на GPU_HEVC (H265):
[HKEY_CURRENT_USER\SOFTWARE\Classes\SystemFileAssociations\.mp4\shell\FFmpeg\shell\Сжать MP4\shell\GPUH264\command]
@="\"D:\\Prog\\myscripts\\FFmpeg\\ffmpeg.exe\" -i \"%1\" -c:v hevc_nvenc -preset llhq -rc constqp -qp 21 -g 60 -movflags +faststart -c:a copy \"%1.mp4\""
Цитата: Psydiant от 05.08.2026, 12:16Цитата: Андрей от 21.05.2026, 18:29Mikhail, спасибо. Буду искать тогда обычный. Просто хотел в коллекцию фильм положить, но 16 ГБ не хочется, при том, что все 4 части оригинала весят 4 с небольшим гигабайта в пережатом виде.
Привет! Заинтересовал ты меня этой проблемой) В общем как я понял это Dolby Vision Profile 5 всё-таки. Скачивал разные фильмы с этим профилем, кучу команд перебрал, что на CPU, что на GPU сжатиях, ну очень капризный профиль, лучше уж тогда использовать Dolby Vision Profile 8, но там тоже дополнительные метаданные Dolby Vision потеряются после сжатия, но зато базовый слой HDR10 останется. Так что для Dolby Vision вопрос остаётся открытым, может есть какие то аргументы всё-таки)
Цитата: Андрей от 21.05.2026, 18:29Mikhail, спасибо. Буду искать тогда обычный. Просто хотел в коллекцию фильм положить, но 16 ГБ не хочется, при том, что все 4 части оригинала весят 4 с небольшим гигабайта в пережатом виде.
Привет! Заинтересовал ты меня этой проблемой) В общем как я понял это Dolby Vision Profile 5 всё-таки. Скачивал разные фильмы с этим профилем, кучу команд перебрал, что на CPU, что на GPU сжатиях, ну очень капризный профиль, лучше уж тогда использовать Dolby Vision Profile 8, но там тоже дополнительные метаданные Dolby Vision потеряются после сжатия, но зато базовый слой HDR10 останется. Так что для Dolby Vision вопрос остаётся открытым, может есть какие то аргументы всё-таки)
Цитата: Psydiant от 05.08.2026, 14:11Всем Привет!
У кого-нибудь получалось перенести вложения, а конкретно сохранить изображение в видео после сжатия?
Всем Привет!
У кого-нибудь получалось перенести вложения, а конкретно сохранить изображение в видео после сжатия?
Цитата: Psydiant от 05.08.2026, 15:45Кто то давненько спрашивал как сохранить дорожки, субтитры, обложки и т. д. после сжатия. Вот у меня такое решение, добавляем флаги:
-map 0:v?-map 0:a?-map 0:s?-map 0:t?-c:a copy-c:s copy-c:t copy
Всё переносится, но есть нюансы, для формата mp4 субтитры не перенесутся, нужно преобразовать субтитры, которые может прочитать mp4 с помощью флага:
-c:s mov_text
Для формата mkv проблем нет.
Вторая неудобная ситуация, которую я пока так и не понял можно ли решить, это то что вложение в виде обложки (изображения) в видеофайле, после сжатия будет сохранено, но преобразовано во второй видеопоток.
Кто то давненько спрашивал как сохранить дорожки, субтитры, обложки и т. д. после сжатия. Вот у меня такое решение, добавляем флаги:
Скопировано-map 0:v? Скопировано-map 0:a? Скопировано-map 0:s? Скопировано-map 0:t? Скопировано-c:a copy Скопировано-c:s copy Скопировано-c:t copy
Всё переносится, но есть нюансы, для формата mp4 субтитры не перенесутся, нужно преобразовать субтитры, которые может прочитать mp4 с помощью флага:
Скопировано-c:s mov_text
Для формата mkv проблем нет.
Вторая неудобная ситуация, которую я пока так и не понял можно ли решить, это то что вложение в виде обложки (изображения) в видеофайле, после сжатия будет сохранено, но преобразовано во второй видеопоток.
Цитата: Psydiant от 05.08.2026, 16:52И последнее, решил создать отдельное сообщение для удобства.
Флаг:-preset llhqначиная с версии ffmpeg 9.0 уже не работает, поэтому я заменил его на-preset p7
и теперь перешёл на формат mkv. В итоге в реестре полностью мои команды стали выглядеть вот так:
1) Сжатие на GPU_H264:
[HKEY_CURRENT_USER\SOFTWARE\Classes\SystemFileAssociations\.mkv\shell\FFmpeg\shell\Сжать видео\shell\GPU_H264\command]
@="\"D:\\Prog\\myscripts\\FFmpeg\\ffmpeg.exe\" -i "%1" -map 0:v? -map 0:a? -map 0:s? -map 0:t? -c:v h264_nvenc -preset p7 -rc constqp -qp 21 -g 60 -movflags +faststart -c:a copy -c:s copy -c:t copy "%1.mkv"
2) Сжатие на GPU_HEVC (H265):
[HKEY_CURRENT_USER\SOFTWARE\Classes\SystemFileAssociations\.mkv\shell\FFmpeg\shell\Сжать видео\shell\GPU_HEVC (H265)\command]
@="\"D:\\Prog\\myscripts\\FFmpeg\\ffmpeg.exe\" -i "%1" -map 0:v? -map 0:a? -map 0:s? -map 0:t? -c:v hevc_nvenc -preset p7 -rc constqp -qp 21 -g 60 -movflags +faststart -c:a copy -c:s copy -c:t copy "%1.mkv"
И последнее, решил создать отдельное сообщение для удобства.
Флаг: Скопировано-preset llhq начиная с версии ffmpeg 9.0 уже не работает, поэтому я заменил его на Скопировано-preset p7
и теперь перешёл на формат mkv. В итоге в реестре полностью мои команды стали выглядеть вот так:
1) Сжатие на GPU_H264:
[HKEY_CURRENT_USER\SOFTWARE\Classes\SystemFileAssociations\.mkv\shell\FFmpeg\shell\Сжать видео\shell\GPU_H264\command]
@="\"D:\\Prog\\myscripts\\FFmpeg\\ffmpeg.exe\" -i "%1" -map 0:v? -map 0:a? -map 0:s? -map 0:t? -c:v h264_nvenc -preset p7 -rc constqp -qp 21 -g 60 -movflags +faststart -c:a copy -c:s copy -c:t copy "%1.mkv"
2) Сжатие на GPU_HEVC (H265):
[HKEY_CURRENT_USER\SOFTWARE\Classes\SystemFileAssociations\.mkv\shell\FFmpeg\shell\Сжать видео\shell\GPU_HEVC (H265)\command]
@="\"D:\\Prog\\myscripts\\FFmpeg\\ffmpeg.exe\" -i "%1" -map 0:v? -map 0:a? -map 0:s? -map 0:t? -c:v hevc_nvenc -preset p7 -rc constqp -qp 21 -g 60 -movflags +faststart -c:a copy -c:s copy -c:t copy "%1.mkv"
Цитата: Psydiant от 07.08.2026, 00:25Цитата: Psydiant от 05.08.2026, 16:52И последнее, решил создать отдельное сообщение для удобства.
Флаг:-preset llhqначиная с версии ffmpeg 9.0 уже не работает, поэтому я заменил его на-preset p7
и теперь перешёл на формат mkv. В итоге в реестре полностью мои команды стали выглядеть вот так:
1) Сжатие на GPU_H264:
[HKEY_CURRENT_USER\SOFTWARE\Classes\SystemFileAssociations\.mkv\shell\FFmpeg\shell\Сжать видео\shell\GPU_H264\command]
@="\"D:\\Prog\\myscripts\\FFmpeg\\ffmpeg.exe\" -i "%1" -map 0:v? -map 0:a? -map 0:s? -map 0:t? -c:v h264_nvenc -preset p7 -rc constqp -qp 21 -g 60 -movflags +faststart -c:a copy -c:s copy -c:t copy "%1.mkv"
2) Сжатие на GPU_HEVC (H265):
[HKEY_CURRENT_USER\SOFTWARE\Classes\SystemFileAssociations\.mkv\shell\FFmpeg\shell\Сжать видео\shell\GPU_HEVC (H265)\command]
@="\"D:\\Prog\\myscripts\\FFmpeg\\ffmpeg.exe\" -i "%1" -map 0:v? -map 0:a? -map 0:s? -map 0:t? -c:v hevc_nvenc -preset p7 -rc constqp -qp 21 -g 60 -movflags +faststart -c:a copy -c:s copy -c:t copy "%1.mkv"Всем Доброй Ночи!
Прошу Прощения, поправка, обратный слеш не указал в нескольких местах, если кто не в курсе, то в файле реестра (.reg), правильно прописывать вот так:
1) Сжатие на GPU_H264:
[HKEY_CURRENT_USER\SOFTWARE\Classes\SystemFileAssociations\.mkv\shell\FFmpeg\shell\Сжать видео\shell\GPU_H264\command]
@="\"D:\\Prog\\myscripts\\FFmpeg\\ffmpeg.exe\" -i \"%1\" -map 0:v? -map 0:a? -map 0:s? -map 0:t? -c:v h264_nvenc -preset p7 -rc constqp -qp 21 -g 60 -movflags +faststart -c:a copy -c:s copy -c:t copy \"%1.mkv\""
2) Сжатие на GPU_HEVC (H265):
[HKEY_CURRENT_USER\SOFTWARE\Classes\SystemFileAssociations\.mkv\shell\FFmpeg\shell\Сжать видео\shell\GPU_HEVC (H265)\command]
@="\"D:\\Prog\\myscripts\\FFmpeg\\ffmpeg.exe\" -i \"%1\" -map 0:v? -map 0:a? -map 0:s? -map 0:t? -c:v hevc_nvenc -preset p7 -rc constqp -qp 21 -g 60 -movflags +faststart -c:a copy -c:s copy -c:t copy \"%1.mkv\""Обратите внимание на двойной обратный слеш в пути к файлу и двойные кавычки в конце команд.
В самом реестре у параметров по умолчанию разделов command вид будет уже другой:
1) Сжатие на GPU_H264:
"D:\Prog\myscripts\FFmpeg\ffmpeg.exe" -i "%1" -map 0:v? -map 0:a? -map 0:s? -map 0:t? -c:v h264_nvenc -preset p7 -rc constqp -qp 21 -g 60 -movflags +faststart -c:a copy -c:s copy -c:t copy "%1.mkv"
2) Сжатие на GPU_HEVC (H265):
"D:\Prog\myscripts\FFmpeg\ffmpeg.exe" -i "%1" -map 0:v? -map 0:a? -map 0:s? -map 0:t? -c:v hevc_nvenc -preset p7 -rc constqp -qp 21 -g 60 -movflags +faststart -c:a copy -c:s copy -c:t copy "%1.mkv"Просто имейте это ввиду
Цитата: Psydiant от 05.08.2026, 16:52И последнее, решил создать отдельное сообщение для удобства.
Флаг:Скопировано-preset llhqначиная с версии ffmpeg 9.0 уже не работает, поэтому я заменил его наСкопировано-preset p7
и теперь перешёл на формат mkv. В итоге в реестре полностью мои команды стали выглядеть вот так:
1) Сжатие на GPU_H264:
[HKEY_CURRENT_USER\SOFTWARE\Classes\SystemFileAssociations\.mkv\shell\FFmpeg\shell\Сжать видео\shell\GPU_H264\command]
@="\"D:\\Prog\\myscripts\\FFmpeg\\ffmpeg.exe\" -i "%1" -map 0:v? -map 0:a? -map 0:s? -map 0:t? -c:v h264_nvenc -preset p7 -rc constqp -qp 21 -g 60 -movflags +faststart -c:a copy -c:s copy -c:t copy "%1.mkv"
2) Сжатие на GPU_HEVC (H265):
[HKEY_CURRENT_USER\SOFTWARE\Classes\SystemFileAssociations\.mkv\shell\FFmpeg\shell\Сжать видео\shell\GPU_HEVC (H265)\command]
@="\"D:\\Prog\\myscripts\\FFmpeg\\ffmpeg.exe\" -i "%1" -map 0:v? -map 0:a? -map 0:s? -map 0:t? -c:v hevc_nvenc -preset p7 -rc constqp -qp 21 -g 60 -movflags +faststart -c:a copy -c:s copy -c:t copy "%1.mkv"
Всем Доброй Ночи!
Прошу Прощения, поправка, обратный слеш не указал в нескольких местах, если кто не в курсе, то в файле реестра (.reg), правильно прописывать вот так:
1) Сжатие на GPU_H264:
[HKEY_CURRENT_USER\SOFTWARE\Classes\SystemFileAssociations\.mkv\shell\FFmpeg\shell\Сжать видео\shell\GPU_H264\command]
@="\"D:\\Prog\\myscripts\\FFmpeg\\ffmpeg.exe\" -i \"%1\" -map 0:v? -map 0:a? -map 0:s? -map 0:t? -c:v h264_nvenc -preset p7 -rc constqp -qp 21 -g 60 -movflags +faststart -c:a copy -c:s copy -c:t copy \"%1.mkv\""
2) Сжатие на GPU_HEVC (H265):
[HKEY_CURRENT_USER\SOFTWARE\Classes\SystemFileAssociations\.mkv\shell\FFmpeg\shell\Сжать видео\shell\GPU_HEVC (H265)\command]
@="\"D:\\Prog\\myscripts\\FFmpeg\\ffmpeg.exe\" -i \"%1\" -map 0:v? -map 0:a? -map 0:s? -map 0:t? -c:v hevc_nvenc -preset p7 -rc constqp -qp 21 -g 60 -movflags +faststart -c:a copy -c:s copy -c:t copy \"%1.mkv\""
Обратите внимание на двойной обратный слеш в пути к файлу и двойные кавычки в конце команд.
В самом реестре у параметров по умолчанию разделов command вид будет уже другой:
1) Сжатие на GPU_H264:
"D:\Prog\myscripts\FFmpeg\ffmpeg.exe" -i "%1" -map 0:v? -map 0:a? -map 0:s? -map 0:t? -c:v h264_nvenc -preset p7 -rc constqp -qp 21 -g 60 -movflags +faststart -c:a copy -c:s copy -c:t copy "%1.mkv"
2) Сжатие на GPU_HEVC (H265):
"D:\Prog\myscripts\FFmpeg\ffmpeg.exe" -i "%1" -map 0:v? -map 0:a? -map 0:s? -map 0:t? -c:v hevc_nvenc -preset p7 -rc constqp -qp 21 -g 60 -movflags +faststart -c:a copy -c:s copy -c:t copy "%1.mkv"
Просто имейте это ввиду