Synology ffmpeg грузит процессор
У меня есть коробка Linux и я хочу закодировать некоторые видео с помощью ffmpeg. Я слышал, что мой процессор (процессор второго поколения Core i5) имеет аппаратную поддержку кодирования h.264.
Можно ли заставить ffmpeg использовать это, и если да, то как?
1. Сделайте вывод RGB без потерь первым
При этом используется самая быстрая предустановка кодирования x264: ультрабыстрая.
Выход будет без потерь, потому что -crf 0 используется.
Также см
Лучше сконцентрироваться на использовании различных опций ffmpeg, которые позволят получить тот же результат, при этом используя меньше ресурсов. Тем не менее, есть способы использовать меньше ресурсов, если вам действительно нужно выполнить конкретную задачу с помощью ffmpeg, и он использует слишком много ресурсов.
Вы можете уменьшить приоритет ffmpeg Процесс процессора:
- Терминальный метод: используйте nice Команда для изменения приоритета процесса: nice -n 8 ffmpeg -y -r 15 -g 600 -s 1280x1024x24 -f x11grab -i :100 -vcodec libx264 /tmp/video.mov , В Linux номер приоритета ( nice формат команды nice -n ) колеблется от -20 до 20. Чем больше целое число, тем ниже приоритет; нейтральное значение равно 0. Если вы используете команду, которую я дал вам, и установите ее на 8, ЦП даст процессу меньше времени, что выглядит как "энергопотребление". Если это число слишком велико или два низко, вы можете изменить его.
- Метод с графическим интерфейсом: это не рекомендуется, поскольку он дает меньше контроля над точным числом и не вступает в силу, как только начинается процесс. Однако это более приемлемо. С ffmpeg работает, откройте системный монитор. Прокрутите вниз до процесса с именем ffmpeg щелкните левой кнопкой мыши, чтобы выбрать, щелкните правой кнопкой мыши и установите приоритет "Низкий" или "Очень низкий".
Если вы также беспокоитесь об использовании памяти, знайте, что нельзя сказать, что процесс занимает столько памяти и продолжает работать. Ядро автоматически контролирует выделение памяти для процессов. Существует способ клеточных процессов, с timeout сценария, так что когда процесс и любые дочерние процессы занимают слишком много памяти (установленный вами предел), они благополучно завершаются и отображается уведомление. Однако, если процессу дается только столько памяти (скажем, ядром), и он запрашивает больше памяти, чего не может иметь, происходит сбой.
Некоторые полезные вещи, которые нужно знать о:
Используя знания Cgroups, вы можете делать много забавных вещей, таких как управление перестановкой процесса.
-re (вход) Чтение ввода с собственной частотой кадров. В основном используется для имитации устройства захвата или живого потока ввода (например, при чтении из файла). Не следует использовать с реальными устройствами захвата или живыми входными потоками (где это может привести к потере пакетов). По умолчанию ffmpeg пытается прочитать входные данные как можно быстрее. Эта опция будет замедлять чтение входных данных до исходной частоты кадров входных данных. Это полезно для вывода в реальном времени (например, прямой эфир).
У меня есть коробка Linux и я хочу закодировать некоторые видео с помощью ffmpeg. Я слышал, что мой процессор (процессор второго поколения Core i5) имеет аппаратную поддержку кодирования h.264.
Можно ли заставить ffmpeg использовать это, и если да, то как?
2. Затем перекодируйте его
Вывод первой команды будет огромным, и большинство тупых игроков не могут обработать RGB H.264, поэтому вы можете перекодировать его:
Используйте самый медленный пресет, к которому у вас есть терпение: ultrafast , superfast , veryfast , faster , fast , medium , slow , slower , veryslow , По умолчанию medium ,
я добавил -vf format=yuv420p чтобы вывод работал с тупыми плеерами, такими как QuickTime и Windows Media Player. Вы можете пропустить это, если загружаете его на YouTube или воспроизводите только на VLC, MPV, MPlayer или любом другом проигрывателе на основе FFmpeg.
3 ответа 3
На сегодняшний день технология Intel QuickSync поддерживается в Linux и предоставляется двумя основными способами: VAAPI и Intel Media SDK.
При соответствующей настройке вы получите кодеры на основе QuickSync через Intel MediaSDK, а именно h264_qsv и hevc_qsv . Чтобы увидеть использование кодера:
Второй метод, через API-интерфейсы VAAPI, требует, чтобы FFmpeg был собран с опцией --enable-vaapi переданной на этапе ./configure . Это значение по умолчанию в таких дистрибутивах, как Debian и Arch Linux, и, как таковое, легко доступно для использования "из коробки".
Чтобы просмотреть список доступных кодеров и фильтров VAAPI для сборки FFmpeg, выполните:
И по использованию:
Из вышеприведенного списка очевидно, что каждый вышеприведенный кодер выводит видеокодек на выход, от H.265/HEVC до VP9.
Поддержка платформы зависит от вашей платформы:
(А). Кодирование H.264 поддерживается от Sandybridge (графика 2-го поколения Intel Core Processor) до настоящего времени.
(Б). Кодирование HEVC поддерживается на Skylake и выше, для него доступно 10-битное кодирование на Kabylake и выше.
(С). Кодировка VP8 доступна по крайней мере в Broadwell (графика 5-го поколения Intel Core Processor Graphics) и выше.
(Г). Кодировка VP9 доступна по крайней мере от Kabylake и выше. Coffelake и не только предложат 10-битное кодирование VP9.
Несколько дополнительных замечаний по качеству кодирования:
А теперь небольшие заметки о NVENC и настройке его для высококачественного кодирования:
Quick Sync Encoder от Intel, как и любой другой аппаратный кодер, имеет несколько ограничений по сравнению с чисто программным кодером, таким как x264 и x265, а именно контроль качества и строгое ограничение на поддерживаемые типы входных текстур. Поэтому, если вы рассматриваете QuickSync для любого профессионального рабочего процесса, пожалуйста, оцените выигрыш в производительности по сравнению с качеством воспринимаемого кодирования, прежде чем инвестировать в него.
Если вы смотрите на высококачественные коды на VAAPI, убедитесь, что вы, по крайней мере, используете Haswell (iGPU Intel 4-го поколения), поскольку в этой архитектуре появились такие функции, как концепция «Target Usage» (TU). Эта функция предназначена для обеспечения простого доступа к серии градаций без необходимости заставлять пользователей выбирать скорость передачи данных и метод управления скоростью. На предыдущих итерациях, хотя технически было семь ступеней, только три были действительно подвержены потреблению: качество (TU1), сбалансированный (TU4) и скорость (TU7). Это изменилось с последним поворотом графики Intel HD, с каждым шагом полностью выбираемым и представленным Intel media SDK.
Следует отметить новые оптимизации алгоритмов управления битрейтом, заслуживающие внимания концепции LA-BRC. Посмотрите на это здесь. Посмотрите этот ответ для большего количества указателей на то же самое.
3 ответа
3 ответа 3
На сегодняшний день технология Intel QuickSync поддерживается в Linux и предоставляется двумя основными способами: VAAPI и Intel Media SDK.
При соответствующей настройке вы получите кодеры на основе QuickSync через Intel MediaSDK, а именно h264_qsv и hevc_qsv . Чтобы увидеть использование кодера:
Второй метод, через API-интерфейсы VAAPI, требует, чтобы FFmpeg был собран с опцией --enable-vaapi переданной на этапе ./configure . Это значение по умолчанию в таких дистрибутивах, как Debian и Arch Linux, и, как таковое, легко доступно для использования "из коробки".
Чтобы просмотреть список доступных кодеров и фильтров VAAPI для сборки FFmpeg, выполните:
И по использованию:
Из вышеприведенного списка очевидно, что каждый вышеприведенный кодер выводит видеокодек на выход, от H.265/HEVC до VP9.
Поддержка платформы зависит от вашей платформы:
(А). Кодирование H.264 поддерживается от Sandybridge (графика 2-го поколения Intel Core Processor) до настоящего времени.
(Б). Кодирование HEVC поддерживается на Skylake и выше, для него доступно 10-битное кодирование на Kabylake и выше.
(С). Кодировка VP8 доступна по крайней мере в Broadwell (графика 5-го поколения Intel Core Processor Graphics) и выше.
(Г). Кодировка VP9 доступна по крайней мере от Kabylake и выше. Coffelake и не только предложат 10-битное кодирование VP9.
Несколько дополнительных замечаний по качеству кодирования:
А теперь небольшие заметки о NVENC и настройке его для высококачественного кодирования:
Quick Sync Encoder от Intel, как и любой другой аппаратный кодер, имеет несколько ограничений по сравнению с чисто программным кодером, таким как x264 и x265, а именно контроль качества и строгое ограничение на поддерживаемые типы входных текстур. Поэтому, если вы рассматриваете QuickSync для любого профессионального рабочего процесса, пожалуйста, оцените выигрыш в производительности по сравнению с качеством воспринимаемого кодирования, прежде чем инвестировать в него.
Если вы смотрите на высококачественные коды на VAAPI, убедитесь, что вы, по крайней мере, используете Haswell (iGPU Intel 4-го поколения), поскольку в этой архитектуре появились такие функции, как концепция «Target Usage» (TU). Эта функция предназначена для обеспечения простого доступа к серии градаций без необходимости заставлять пользователей выбирать скорость передачи данных и метод управления скоростью. На предыдущих итерациях, хотя технически было семь ступеней, только три были действительно подвержены потреблению: качество (TU1), сбалансированный (TU4) и скорость (TU7). Это изменилось с последним поворотом графики Intel HD, с каждым шагом полностью выбираемым и представленным Intel media SDK.
Следует отметить новые оптимизации алгоритмов управления битрейтом, заслуживающие внимания концепции LA-BRC. Посмотрите на это здесь. Посмотрите этот ответ для большего количества указателей на то же самое.
Есть старый ПК (s775, Intel Pentium 2Core, 2GB RAM DDR2, 10x500GB HDD).
Хочу сделать домашний сервер (Держать личный блог. возможно ещё несколько тестовых сайтов для разработки, торрентокачалку, медиа-сервер по DLNA или как-то смотреть на телефизоре скачанные торренты).
Посоветуйте на чём лучше сделать задуманное?
Сейчас крутится на голой Freebsd 12 с jails (CBSD) под каждый сервис (под сайты, под торренты, фильмы пока смотрю с расшаренной папки на Ноутбуке). Дисковая подсистема состоит из IDE-винчестера 40GB под систему и 6+4(PCI-extend) SATA-дисков по 500ГБ сбитых в один пул RAIDZ2 (есть диски с бэдами).
Проблема в том. что уже запарился гуглить по каждой мелочи, и все равно не получается. Вот например, захотел качать торренты - день искал\устанавливал transmission. В итоге качает, но на ПК сидов намного больше видно. Или расшарить папку с пула zfs чтоб Ноутбук увидел.. Пока осилил только sharenfs. Последним гвоздём стала попытка поднять веб-файлменеджер чтобы качать с сервера софт\фильмы в гостях. Вроде всё работает, но скачать большие файлы не получается (мой предыдущий вопрос на QNA).
Вот погуглил, нашёл OpenMediaVault и FreeNAS. Вроде как подходят мне по описанию. Но OMV на Debian и не вижу там контейнеров, а у FreeNAS минимальные требования - 8ГБ ОЗУ. Хотя вроде как он основан на FreeBSD. которая уже некоторое время спокойно бегает у меня на сервере.
Вообщем Help ME!
- Вопрос задан более двух лет назад
- 10173 просмотра
Простой 2 комментария
Это нормальный процесс наращивания объёма знаний. Нет никакой серебряной пули в виде волшебной ОС, которая решит все ваши текущие и будущие проблемы.
Поддержу ky0 .
Оставайтесь на bsd. Единственное зачем вы все заворачиваете в jails? Это в первую очередь ваш домашний сервер и если не будете торчать наружу дырявыми сервисами то все будет ок.
Последним гвоздём стала попытка поднять веб-файлменеджер чтобы качать с сервера софт\фильмы в гостях. Вроде всё работает, но скачать большие файлы не получается (мой предыдущий вопрос на QNA).
Исходите из задачи. Зачем вам нечто в роли файлменеджера в вебе которым вы еще и торчать наружу будете?
Лучше поднимите l2tp сервер до домашней сети. l2tp есть везде из коробки (android\win\mac\linux) и будете безопасно к любым сервисам доступ получать из гостей.
Другой вариант есть ftp(опять же есть везде).
Еще есть webdav который можно поднять прямо на nginx.
Мотайте на ус что любая "коробочная обвертка" будет в разы тяжелее и тащить тонну лишнего.
Для себе можете сделать так, да и вообще это полезно:
1) сделайте текстовик, или в бложике своем.
2) вписывайте все действия по установке и настройке конкретных фич и утилит прям с конфигами
3) со временем обновляйте эти записи когда сталкиваетесь с новыми заковырками.
4) дальше это сильно пригодится в случае переустановки\неожиданностей
5) со временем все это отложится в голове.
Urian, все это - необходимые мне шары (smb,ftp), nextcloud(облако), virtualbox - иногда для тестов.
есть ли там торрент клиент - незнаю, не смотрел
Ваша задача не имеет однозначного решения. Самые популярные дистрибутивы - XigmaNAS, Openmediavault. Если хочется ненапряжного мышкотыка, то можно попробовать DSM от сетевых накопителей Synology, которую можно установить на обычный ПК - проект называется Xpenology (да, именно так).
Впрочем, лично я на таком железе как у вас поставил бы чистый Debian и развернул бы на нём Nextcloud и все необходимые сервисы.
Настоятельно советую обратить внимание на Xpenology. Отличная стабильная система. Та самая волшебная пуля о которой говорили выше. У меня например крутится: торрент качалка, облако (Synology Drive), VPN Server, WebDAV, Docker, Мультимедиа сервер. Настраивается это все удовольствие за час максимум неспешно жмякая на кнопки. Так же есть очень полезная функция синхронизации с облачными аккаунтами. Например есть у меня OneDrive, на NAS настроена односторонняя синхронизация и сохранение версий файлов. Т.е. если даже на основном облаке что-то удалится или нападет шифровальщик, у меня останутся 32 предыдущие версии файлов. Почти для всего софта есть мобильные приложения, в общем сказка. Правда первоначальная установка и настройка может потребовать определенного времени. Ставил по этому гайду, все взлетело на ура. Главное сразу отключить автоапдейты и не обновляться т.к. есть вероятность, что может что-то умереть. Без обновлений в локалке за FW и NATом может жить годами. Кстати, что бы всем не открывать доступ, можно сделать port knocking.
Боязательно попробую. Демка понравилась.
Какую модель выбирать для загрузки прошивки? Есть какая-нибудь разница?
Лучше 918+, у него более новый загрузчик. Но его еще не тестировал.
В гайде по ссылке DS3617xs, устанавливается быстро, есть дополнительный пак драйверов - extra.lzma (это на случай, если в DSM не окажется драйверов под вашу сетевую карту), но обновиться до версии 6.2.3-25423 пока не получалось. Если вы не перфекционист и готовы поставить предпоследнее обнолвение - то в данный момент лучше сделать так.
Даже если вы брикните DSM, то всегда сможете записать новый загрузчик, воткнуть в сервер и восстановить систему, но все таки лучше не рисковать. Нервы-то не восстанавливаются.
Если не менять версию - всё обновы прекрасно дождаться автоматом, ибо версия загрузчика не слетает. В 3617 это делается даже проще чем в 3615, на Ютубе один китаец подробно разжёвывает
- Hyper Backup, Active Bakup for Buisness - замены равной почти что нет.
- WebDav server, CardDav server в связке со встроенными пользователями - nextlcloud.
- Snapshot Replication + Synology Drive - отличное решение для бэкапов и версионирования рабочих файлов в течение дня - не нашел замены пока, но думаю что можно что-то подобрать.
- Monents (учитывая что сейчас ещё и google photo будет платным) - есть менее функциональные (в части поиска по лица) сервисы в докерах.
llliax, пользуйте старый без обнов. Доступ к облаку получайте или через port knocking настроенный на роутере или через VPN. Другие решения при поломке будут требовать от вас определенной квалификации. А сможете ли вы все быстро пофиксить? В OMV косяков было столько, что использовать без знания debian безсмысленно. Там даже при штатной установке/удалении пакетов через ваб интерфейс проблемы возникали. Правда тестил лет 5 назад.
freenas/nas4free и пр. не дают мне того функционала, что и xpenology.
Итог: я остаюсь на Xpenology, но закрываю порты наружу и использую port knocking для организации доступа
llliax, Пока решил попробовать unraid
вполне норм вариант если юзать как обертку для контейнеров docker
а в контейнерах есть и nextcloud и jellyfin и куча другого софта.
плюс типа рейд.
минус только один - надо бы баблишка подкинуть разрабам
SunRiser, полностью согласен. Неделю потыкался в разные nas и понял что не на что достойное заменить. Для основных нужд оставляю хост с быстрым железом и кучей дисков на xpenology в образе для esxi. Буду обновляться по мере выхода загрузчиков или без оных. Если за пару лет ситуация не изменится, поставлю многодисковый Synology как есть. На амазоне сейчас можно за 800$ взять для этого DS1621+ на достаточно хорошем проце и с возможностью доставить пару SSD NVME для кэша.
А для приложений Synology и DSM 7 купил с амазона DS220+ за 300$ и пару хардов HGST 4Tb по 60$. Для меня этот выбор не был сразу очевиден. Но сейчас считаю что именно в таком формате у меня будет меньше всего головняков.
У меня есть подозрение что Xpenology это сознательный слив Synology:) Чтобы я вот так сейчас у них железки покупал!))
При запуске транскодинга через OBS c входящим потоком от железки 1280x720@60 и выходящем 1280x720@30 2.5mbit Макбук грузит 40-70% (зависит от того, оставляешь ты на рабочем столе саму программу или сворачиваешь)
Задача уйти от OBS как от софта так такового. Основные претензии в том, что он порой просто закрывается по своей прихоти, вторая причина - если начинаются проблемы с перегрузкой, просто падает канал и нет возможности без нажатия кнопки перезапустить. Интерфейс собственно тоже. Появилась идея использовать ffmpeg напрямую, по крайней мере я думаю OBS его и использует.
Вот строка запуска, которая работает исправно.
/usr/local/Cellar/ffmpeg/2.8.3/bin/ffmpeg -f decklink -i 'UltraStudio Mini Recorder@15' -c:v libx264 -pix_fmt yuv420p -r 30 -aspect 16:9 -g 60 -profile:v baseline -b:v 2100K -f flv -c:a libvo_aacenc -ab 64k -ar 44100 -ac 2 rtmp://.
Но грузить процессор на 100% и через какое-то время вылетает ошибка Decklink buffer overload (с железки идет чистый RAW и её буфер перегружен из-за того что процессор не успевает поток обрабатывать. FPS проседает сразу 10-15) Что я могу в данном запросе модернизировать, чтобы приведет к снижению загрузки
ffmpeg version 2.8.3 Copyright (c) 2000-2015 the FFmpeg developers
built with Apple LLVM version 8.0.0 (clang-800.0.42.1)
configuration: --prefix=/usr/local/Cellar/ffmpeg/2.8.3 --enable-shared --enable-pthreads --enable-gpl --enable-version3 --enable-hardcoded-tables --enable-avresample --cc=clang --host-cflags= --host-ldflags= --enable-opencl --enable-libx264 --enable-libmp3lame --enable-libvo-aacenc --enable-libxvid --enable-decklink --enable-vda
libavutil 54. 31.100 / 54. 31.100
libavcodec 56. 60.100 / 56. 60.100
libavformat 56. 40.101 / 56. 40.101
libavdevice 56. 4.100 / 56. 4.100
libavfilter 5. 40.101 / 5. 40.101
libavresample 2. 1. 0 / 2. 1. 0
libswscale 3. 1.101 / 3. 1.101
libswresample 1. 2.101 / 1. 2.101
libpostproc 53. 3.100 / 53. 3.100
Hyper fast Audio and Video encoder
Когда я записываю видео примерно с 5 сеансов Xvfb, загрузка моего процессора очень высока, и из-за этого возникают задержки. Также использование памяти составляет около 300 МБ для каждого из процессов ffmpeg.
Какие параметры для ffmpeg я должен использовать, чтобы минимизировать использование ресурсов компьютера (в частности, процессора и памяти) при выполнении захвата видео экрана?
Читайте также: