Super & CodecCraver
CodecCraver CodecCraver
Слушай, я вчера посмотрела твой ролик с прыжком в 4К. Просто умираю от любопытства, что за кодеки ты используешь на своей самодельной системе. HEVC с низкой задержкой или VP9? Я постоянно думаю, стоит ли фрамы B – это зло для съемок с высоким гироскопом, и как тебе удается сохранять целостность стрима, когда ты буквально роняешь оборудование в воздухе. И вообще, как ты сжимаешь данные с сенсора "на лету", не теряя частоту кадров?
Super Super
Привет. Этот прыжок был, скажу я тебе, задачка не из лёгких – у меня тут кастомная RTMP-схема с маленьким NVIDIA Jetson для кодирования на лету. Я фиксируюсь на H.265 с низким временем задержки, но вообще без B-кадров, потому что провалы гироскопа сбивают предсказание. Так я сохраняю стабильность исходного потока с сенсора в 120 кадров в секунду, даже когда я в воздухе. Для необработанных данных я передаю данные сенсора в 10 бит через USB-3 на GPU, потом сжимаю с помощью маленького кастомного кодека, который немного жертвует глубиной цвета ради скорости. Держу интервал ключевых кадров минимальным и добавляю компенсацию движения на GPU, чтобы сохранить целостность картинки. Короче говоря, B-кадры – это враги, когда гироскоп скачет, и я даю GPU делать всю грязную работу, чтобы частота кадров была стабильной, а зрители не видели зависаний.
CodecCraver CodecCraver
Звучит неплохо, но если ты убираешь B-кадры, ты жертвуешь компрессией ради задержки – хорошо для полета, но битрейт заметно вырастет. Я бы оставил интервал ключевых кадров где-то 1–2 секунды и, может, добавил бы небольшой предсказатель вперёд на GPU, чтобы выжать максимум из 10-битного потока. Следи за хешем в конце каждого пакета, чтобы наверняка не было проблем с целостностью. И если захочешь протестировать pipeline от raw до HEVC без графического интерфейса, у меня есть скрипт, который работает на "чистом" Jetson и выдаёт чистый MP4 с минимальными накладными расходами. Расскажи, как всё пойдёт!
Super Super
Отличные крючки, братан. Обязательно проверю этот скрипт и посмотрю, справится ли Jetson с моим стилем быстрых сбросов. Если хэш будет стабильным, выложу новый ролик и посмотрю, заметят ли мои фанаты разницу. Продолжай в том же духе, а я напишу, когда будет что-то крутое показать. Не переживай, на этот раз точно отвечу, клянусь.
CodecCraver CodecCraver
Рада, что согласился попробовать. Если с Джетсоном что-то пойдёт не так или хеш пойдёт не туда – дай знать, помогу с настройками энкодера. Увидимся, интересно, что ты сейчас разрабатываешь.
Super Super
Договорился — если с Джетсоном что-то случится или хеш покажется странным, сразу тебе напишу. Держи те правки под рукой, я тебе потом перешлю следующую конструкцию. Скоро спишемся, звезда.
CodecCraver CodecCraver
Звучит как отличный план. Я оставлю список правок в репозитории и отправлю его, когда будешь готов. До встречи!
Super Super
Понял тебя. Заведу "Джетсоном", как только выкрою минутку от следующего трюка. Кидай список правок, когда будешь готова, я скажу, всё ли нормально или что-то взорвётся. Следи за обновлениями, будет жарко!
CodecCraver CodecCraver
Конечно, вот список небольших правок для Jetson RTMP стека: 1) Установи низколатентный пресет H.265 без B-кадров; 2) Оставь размер GOP равным 30 кадрам (1 секунда @120fps); 3) Включи аппаратную оценку движения на GPU, если возникнут проблемы с памятью, уменьши глубину цвета до 8 бит; 4) Добавь простой хеш SHA-256 после каждого пакета для проверки целостности. Сообщи, когда запустишь, и я помогу подстроить, если потребуется. Удачи с новым трюком!