Поддержу как обладатель железки 1000+ ватт, которую, чтоб не шумела, вообще поставил в отдельное помещение. Теоретически в такой стол можно поставить обслуживаемую СЖО с двумя идущими подряд радиаторами по 4 тихих вертушки на 800 оборотов. Но это только теоретически — неизвестно, что там вылезет на практике при таких потоках тепла.
Про коврик для мышки забыл :) Ну и ещё парочка периферийных штук + маленькие колонки, но суть дела не меняет.
По ткани мышка прекрасно работает, пока играть не начнёшь. В шутерах из‑за очень быстрых движений ткань начинает заминаться и пружинить, и это очень мешает.
А следы от рук не остаются?
Остаются, но не сильно, ибо руки чистые :) Ткань — расходник, она за год протирается и под замену. Хотя сейчас у меня мысль даже ткань не класть. Шкуркой разок пройтись по доске и норм.
Я так и сделал, только без лакировки :) просто доску 1200×400 к подъёмному механизму прикрутил, сверху мягкую ткань и норм. Клавиатура помещается, мышка и телефон тоже. А больше и не надо.
Ну, по факту оно примерно так и делает, правда без промежуточного преобразования: мы просто на выходе сэмплируем входной звук с кубической/линейной выборкой по вещественному номеру сэмпла. Типа как текстуры на видеокарте сэмплируются по вещественным координатам, только в одномерном варианте.
Засада в том, что у выходного формата тоже бывает частота дискретизации, не делящаяся нацело на частоту кадров. Поэтому ошибку всё равно приходится учитывать, копить и потом что‑то с ней делать.
Я сталкивался с подобной задачей, когда делал софт обработки видео в реалтайме. В нём по всему графу текут видеоаудио кадры — картинка (один полный кадр или два полукадра) + кусок звука. Это для того, чтобы внутри софта не ловить рассинхрон ни при каких обстоятельствах — видео и звук железобетонно прикручены друг к другу.
И прикол с тем, что, например, 48 000 нацело не делится на, например, 29,9999 я осознал далеко не сразу. Решил так.
У меня была разработана штука, умеющая преобразовывать разрешение, чересстрочность, частоту кадров, форму пикселей картинки, дискретизацию, число каналов и частоту звука из произвольных величин в другие произвольные величины. Причём настройки можно менять на лету. Сделана она не для синхронизации, а просто чтобы можно было жрать потоки разных форматов и преобразовывать их в один. И выводить тоже в любых форматах
И есть у этой штуки важная настройка — скорость воспроизведения. По факту это вещественный коэффициент, на который она делит частоту выходных кадров. То есть, если у нас частота выходных кадров 30, а скорость воспроизведения 0.5, то она будет работать так, как будто частота выходных кадров 60 — то есть будет плодить доп кадры.
Промежуточные кадры строятся либо выборкой, либо через прозрачность, но по желанию туда можно вставлять свои модули с какими‑нибудь оптическими потоками.
Так вот. Она обнаруживает погрешность при остатке от деления на входных и выходных параметрах — что дискретизация звука нацело не делится на частоту кадров, и считает накопление этой ошибки. Далее в зависимости от настроек, она может:
Медленно повышать/понижать коэффциент скорости воспроизведения видео (с очень большим демпингом и инертностью)
Просто ждать пока накопится ошибка на 1 целый кадр и дропает или дублирует его, в зависимости от того, какой режим выставлен
Просто считывать несколько дополнительных сэмплов звука или наоборот, забывать их считать
В любом случае, она стремится плавно сократить ошибку погрешности до 0.
Хранит оно 1, от силы 2 предыдущих кадра, поэтом задержка потока получается минимальной.
Для видеохостингов SD-видео апскейлят, чтобы заставить их поднять битрейт (потому что это единственный переключатель качества со стороны пользователя, кнопки "576p/480p High Bitrate" у него нет).
Абсолютно точно, именно для этого я в своё время доработал возможность апскейла в фильтры захвата и стрима. Жалко, что многие люди этот приём не используют.
Сохранять плёночное зерно в 4K сейчас считается нормальным, а тут разрешение в 30 раз меньше и хранить шум слишком дорого?
Дело не в дорого, можно, в конце концов, хранить/стримить в loseless или вообще в RAW. PNG/EXR сиквенсы + WAV рулят :)
Дело в том, что этот шум будет отжирать на себя часть битрейта. Ну то есть, грубо говоря, из 100% битрейта 50% уходит на шум. Если битрейт большой вследствие апскейла, 10/16/100500-битности или просто что его большим поставили — да, это допустимо, потому что полезная информация поместится в оставшуюся часть битрейта.
Но часто битрейта не хватает — и я про этот случай. Поголовно люди такие: «О, 576 строк, значит достаточно 480p/720p». И из этого шума вырастает ушатанное пережатое мыло.
если шум маскирует нехватку деталей (улучшает субъективное качество), то пусть остаётся.
Согласен. Но тогда нужно, чтобы этот шум сохранился.
Плёнка есть прогрессивная развёртка. А VHS — это чересстрочка. Которой на стримминговых сервисах и прочих воблачках нет. Поэтому изначальный труъ‑ламповый шум улетает как минимум в деинтерлейсер, который уже превратит его в непойми что. Особенно это касается деинтерлейсеров по оптическому потоку.
Поэтому, если уж заморачиваться, то:
Оцифровываем RAW
Измеряем и сохраняем спектр шума по яркости и цветоразностным (причём в каждом кадре отдельно)
Удаляем шум максимально качественно алгоритмом, способным жрать чересстрочку
Деинтерлейсим качественно
Апскейлим какой‑нибудь хорошей штукой до 4K/8K/16K
На основе ранее запечатлённого спектра генерируем шум яркости и цветоразностных заново. Можно крупный (чтобы пропорционально соотноситься с «пикселями» исходной картинки), можно помельче
YPbPr в этот видак поставили ради цифрового D-VHS*, HD-сигналу которого есть что терять и который не имел преступных связей с композитом. Ну и ради цифровой обработки (TBC, DNR), то есть ему бы вообще цифровой выход иметь, раз он всё через цифру прогоняет.
С одной стороны да, с другой — у нас на том конце провода висит карта захвата, которая тоже может вносить свои косяки. И с компонентом их огрести менее вероятно.
Можно вообще попробовать три карты захвата SVideo для каждого компонента — будет три отдельных АЦП и, по идее, будет вкусно. Но надо тестить, потому что не всё так просто.
но ЕМНИП, люди не видели однозначного улучшения - полосы частот так порезаны при записи, что заметные артефакты от разделения не возникают.
Ну моя идея не в том, что это однозначно улучшит качество, а в том, что при этом мы с меньшей вероятностью потеряем информацию, и даже если она не видна для глаза, она может стать важна для каких‑нибудь алгоритмов обработки, которые мы применим дальше в конвейере.
Скорее всего подразумевается какой‑нибудь H264 (маловероятно что H263) с дефолтным битрейтом, ключевыми кадрами и прочими настройками. В любом случае, шумная картинка через композит с двойным пережатием — это не круто. И АЦП в плате интересно какой стоит.
Более чем согласен. Но имхо это как из орбитального ядерного лазера по воробьям. Если воробей какой‑то особенный то норм, но в общем случае не надо :)
много быстродействующих АЦП на 8–12 разрядов (до сотни МГц сэмплирования)
Есть подозрение, что для качества этого мало, и надо не менее 1 ГГц. А так да.
Для годноты можно ещё в FPGA параллельно завести питание через отдельный АЦП, чтобы если вдруг (ну вдруг) по нему наводятся помехи, то алгоритмы обработки были в курсе и могли через пару обработок вычесть из полезного сигнала.
Компонентный выход у магнитофона. Y - яркость, Cb - разница между ней и синим, Cr - между ней и красным. Гораздо качественнее композита, где всё по одному проводу
Берём хороший бу живой магнитон типа JVC HM‑DH40 000U, который имеет выход Component (то есть три провода для трех каналов цвета — яркость и две цветоразностные)
Берём карту захвата с компонентом типа Intensity
Пихаем компонент сигнал в комп
На стороне компа захватываем видеопоток в RAW без сжатия и без субдискретизации, можно в RGB
Полученное сырьё реставрируем, цветокорим по вектороскопам/осциллоскопам чтобы вправить моск цветам как было. Доп обработка по вкусу, можно нейросетями и/или апскейлом
Жмём в что‑нибудь с большим битрейтом или вообще в Loseless типа ProRes
Если всё правильно сделать, качество будет максимальное, в прямом смысле: мы здесь на каждом этапе теряем минимум информации.
Опционально можно всё или часть делать за один присест, если не гнать этот пайплайн через софт для монтажа, а сразу пропускать и синхронизировать RAW картинку через софт для видеомикширования (не буду показывать пальцем на Tesseract :) )
Тогда сразу будет захватываться готовый результат.
Аналоговый шум надо убирать
Аналоговый шум алгоритмы сжатия видно часто воспринимают как детали картинки и пытаются их сохранить, выкидывая настоящие детали. В итоге к аналоговому шуму добавляется мыло и/или файл получается больше. Потому что оно искренне пытается сохранить каждую мурашку.
Поэтому шумы лучше убирать (если не писать в RAW конечно). По этой же причине стоит 10 раз подумать, прежде чем добавлять художественный шум в видео, которое заливается в соц сети и телеграмы, где царит низкий битрейт.
Упоротый вариант — подцепить АЦП к головке магнитофона. Но это, кхм, сопряжено некоторыми небольшими сложностями :)
Спасибо, как раз для двухксеонового старичка подыщу что‑нибудь)
Вкусно. Не подскажите как такое искать? В смысле как это называется правильно?
Поддержу как обладатель железки 1000+ ватт, которую, чтоб не шумела, вообще поставил в отдельное помещение. Теоретически в такой стол можно поставить обслуживаемую СЖО с двумя идущими подряд радиаторами по 4 тихих вертушки на 800 оборотов. Но это только теоретически — неизвестно, что там вылезет на практике при таких потоках тепла.
Про коврик для мышки забыл :) Ну и ещё парочка периферийных штук + маленькие колонки, но суть дела не меняет.
По ткани мышка прекрасно работает, пока играть не начнёшь. В шутерах из‑за очень быстрых движений ткань начинает заминаться и пружинить, и это очень мешает.
Остаются, но не сильно, ибо руки чистые :) Ткань — расходник, она за год протирается и под замену. Хотя сейчас у меня мысль даже ткань не класть. Шкуркой разок пройтись по доске и норм.
Я так и сделал, только без лакировки :) просто доску 1200×400 к подъёмному механизму прикрутил, сверху мягкую ткань и норм. Клавиатура помещается, мышка и телефон тоже. А больше и не надо.
Круто.
А как с охлаждением дела?
Да. Управляемый термоядерный синтез. Просто он жрёт энергии очень много, и пока не удаётся выйти в плюс. А так пожалуйста.
А их надёжность связана больше с тем, какие задачи ставит руководство компании, или с тем, что используется для черчения?
Ну, по факту оно примерно так и делает, правда без промежуточного преобразования: мы просто на выходе сэмплируем входной звук с кубической/линейной выборкой по вещественному номеру сэмпла. Типа как текстуры на видеокарте сэмплируются по вещественным координатам, только в одномерном варианте.
Засада в том, что у выходного формата тоже бывает частота дискретизации, не делящаяся нацело на частоту кадров. Поэтому ошибку всё равно приходится учитывать, копить и потом что‑то с ней делать.
Я сталкивался с подобной задачей, когда делал софт обработки видео в реалтайме. В нём по всему графу текут видеоаудио кадры — картинка (один полный кадр или два полукадра) + кусок звука. Это для того, чтобы внутри софта не ловить рассинхрон ни при каких обстоятельствах — видео и звук железобетонно прикручены друг к другу.
И прикол с тем, что, например, 48 000 нацело не делится на, например, 29,9999 я осознал далеко не сразу. Решил так.
У меня была разработана штука, умеющая преобразовывать разрешение, чересстрочность, частоту кадров, форму пикселей картинки, дискретизацию, число каналов и частоту звука из произвольных величин в другие произвольные величины. Причём настройки можно менять на лету. Сделана она не для синхронизации, а просто чтобы можно было жрать потоки разных форматов и преобразовывать их в один. И выводить тоже в любых форматах
И есть у этой штуки важная настройка — скорость воспроизведения. По факту это вещественный коэффициент, на который она делит частоту выходных кадров. То есть, если у нас частота выходных кадров 30, а скорость воспроизведения 0.5, то она будет работать так, как будто частота выходных кадров 60 — то есть будет плодить доп кадры.
Промежуточные кадры строятся либо выборкой, либо через прозрачность, но по желанию туда можно вставлять свои модули с какими‑нибудь оптическими потоками.
Так вот. Она обнаруживает погрешность при остатке от деления на входных и выходных параметрах — что дискретизация звука нацело не делится на частоту кадров, и считает накопление этой ошибки. Далее в зависимости от настроек, она может:
Медленно повышать/понижать коэффциент скорости воспроизведения видео (с очень большим демпингом и инертностью)
Просто ждать пока накопится ошибка на 1 целый кадр и дропает или дублирует его, в зависимости от того, какой режим выставлен
Просто считывать несколько дополнительных сэмплов звука или наоборот, забывать их считать
В любом случае, она стремится плавно сократить ошибку погрешности до 0.
Хранит оно 1, от силы 2 предыдущих кадра, поэтом задержка потока получается минимальной.
Да, как и пережатие. Двойное.
..и которые в большинстве GUI‑штук разработчики предпочитают не добавлять :)
Хорошо, что есть ffmpeg.
Абсолютно точно, именно для этого я в своё время доработал возможность апскейла в фильтры захвата и стрима. Жалко, что многие люди этот приём не используют.
Дело не в дорого, можно, в конце концов, хранить/стримить в loseless или вообще в RAW. PNG/EXR сиквенсы + WAV рулят :)
Дело в том, что этот шум будет отжирать на себя часть битрейта. Ну то есть, грубо говоря, из 100% битрейта 50% уходит на шум. Если битрейт большой вследствие апскейла, 10/16/100500-битности или просто что его большим поставили — да, это допустимо, потому что полезная информация поместится в оставшуюся часть битрейта.
Но часто битрейта не хватает — и я про этот случай. Поголовно люди такие: «О, 576 строк, значит достаточно 480p/720p». И из этого шума вырастает ушатанное пережатое мыло.
Согласен. Но тогда нужно, чтобы этот шум сохранился.
Плёнка есть прогрессивная развёртка. А VHS — это чересстрочка. Которой на стримминговых сервисах и прочих воблачках нет. Поэтому изначальный труъ‑ламповый шум улетает как минимум в деинтерлейсер, который уже превратит его в непойми что. Особенно это касается деинтерлейсеров по оптическому потоку.
Поэтому, если уж заморачиваться, то:
Оцифровываем RAW
Измеряем и сохраняем спектр шума по яркости и цветоразностным (причём в каждом кадре отдельно)
Удаляем шум максимально качественно алгоритмом, способным жрать чересстрочку
Деинтерлейсим качественно
Апскейлим какой‑нибудь хорошей штукой до 4K/8K/16K
На основе ранее запечатлённого спектра генерируем шум яркости и цветоразностных заново. Можно крупный (чтобы пропорционально соотноситься с «пикселями» исходной картинки), можно помельче
С одной стороны да, с другой — у нас на том конце провода висит карта захвата, которая тоже может вносить свои косяки. И с компонентом их огрести менее вероятно.
Можно вообще попробовать три карты захвата SVideo для каждого компонента — будет три отдельных АЦП и, по идее, будет вкусно. Но надо тестить, потому что не всё так просто.
Ну моя идея не в том, что это однозначно улучшит качество, а в том, что при этом мы с меньшей вероятностью потеряем информацию, и даже если она не видна для глаза, она может стать важна для каких‑нибудь алгоритмов обработки, которые мы применим дальше в конвейере.
Скорее всего подразумевается какой‑нибудь H264 (маловероятно что H263) с дефолтным битрейтом, ключевыми кадрами и прочими настройками. В любом случае, шумная картинка через композит с двойным пережатием — это не круто. И АЦП в плате интересно какой стоит.
Более чем согласен. Но имхо это как из орбитального ядерного лазера по воробьям. Если воробей какой‑то особенный то норм, но в общем случае не надо :)
Есть подозрение, что для качества этого мало, и надо не менее 1 ГГц. А так да.
Для годноты можно ещё в FPGA параллельно завести питание через отдельный АЦП, чтобы если вдруг (ну вдруг) по нему наводятся помехи, то алгоритмы обработки были в курсе и могли через пару обработок вычесть из полезного сигнала.
Можно. Но качество будет невысокое.
Эээ...
Берём хороший бу живой магнитон типа JVC HM‑DH40 000U, который имеет выход Component (то есть три провода для трех каналов цвета — яркость и две цветоразностные)
Берём карту захвата с компонентом типа Intensity
Пихаем компонент сигнал в комп
На стороне компа захватываем видеопоток в RAW без сжатия и без субдискретизации, можно в RGB
Полученное сырьё реставрируем, цветокорим по вектороскопам/осциллоскопам чтобы вправить моск цветам как было. Доп обработка по вкусу, можно нейросетями и/или апскейлом
Жмём в что‑нибудь с большим битрейтом или вообще в Loseless типа ProRes
Если всё правильно сделать, качество будет максимальное, в прямом смысле: мы здесь на каждом этапе теряем минимум информации.
Опционально можно всё или часть делать за один присест, если не гнать этот пайплайн через софт для монтажа, а сразу пропускать и синхронизировать RAW картинку через софт для видеомикширования (не буду показывать пальцем на Tesseract :) )
Тогда сразу будет захватываться готовый результат.
Аналоговый шум надо убирать
Аналоговый шум алгоритмы сжатия видно часто воспринимают как детали картинки и пытаются их сохранить, выкидывая настоящие детали. В итоге к аналоговому шуму добавляется мыло и/или файл получается больше. Потому что оно искренне пытается сохранить каждую мурашку.
Поэтому шумы лучше убирать (если не писать в RAW конечно). По этой же причине стоит 10 раз подумать, прежде чем добавлять художественный шум в видео, которое заливается в соц сети и телеграмы, где царит низкий битрейт.
Упоротый вариант — подцепить АЦП к головке магнитофона. Но это, кхм, сопряжено некоторыми небольшими сложностями :)
Для золота лучше сделать ферму на обсидиановых рамках, люках и лаве. 2 куба золота в минуту без необходимости что либо делать вообще.
Контекст не резиновый:)
Возможно это иллюзия, которая внушается тем же механизмом, который создаёт иллюзию сознания)
А на самом деле нет вообще ничего.