В настоящее время я использую функцию BitBlt для захвата экрана, а затем кодирую его. Поскольку мой кодировщик использует формат YUV420 для ввода, мне нужно преобразовать данные из RGB в YUV перед кодированием. Мне было интересно, есть ли способ сделать снимок экрана в формате YUV вместо RGB?
Спасибо, Джей
Ответ 1 · Zerowalker
Я постараюсь ответить на этот вопрос, хотя я не совсем понимаю, как работает BitBlt, так как сам не заставлял его работать.
Но вот идет.
Насколько я понимаю, BiBlt захватывает с графической карты, то есть он будет работать быстро, так как нет кругового движения. Это должно означать, что если вы отображаете в RGB (что обычно делает ПК), вы получите тот же формат.
Итак, если вы хотите YV12, вам придется сделать субдискретизацию перед использованием изображения.
что-то вроде этого, я думаю.
CaptureBitBlt в IMG. Конвертировать IMG в YV12. Кодировать ИМГ.
Ну, это просто выглядит уродливо, но надеюсь, вы поняли, что я имею в виду. Вам нужно будет сделать преобразование, прежде чем работать с изображением.
Отнеситесь к этому с долей скептицизма, я могу быть в лесу, но я думаю, что это то, как это должно быть сделано.