У меня есть поток содержимого буфера, который фактически содержит изображение ARGB размером 480x800 [размер байта размером 480 * 800 * 4]. Я хочу кодировать около 10 000 с похожих изображений в поток h.264 с указанными fps (12). this показывает, как кодировать изображения в кодированное видео, но требует ввода для yuv420.Android Encode h264 с помощью libavcodec для ARGB
Теперь у меня есть ARGB изображение, я хочу, чтобы закодировать в CODEC_ID_H264 How to convert RGB from YUV420p for ffmpeg encoder? показывает, как сделать это для RGB24, но как это сделать для RGB32, то есть данные изображений ARGB
как я использую кодек для этого?
EDIT: я нашел How to convert RGB from YUV420p for ffmpeg encoder? Но я не понимаю.
С 1-го звена я узнал, что структура AVFrame содержит данные [0], данные 1, данные [2], которые заполнены Y, U & V значениями.
В 2 звена, они показали, как использовать sws_scale для преобразования RGB24 в YUV420 как таковой
SwsContext * ctx = sws_getContext(imgWidth, imgHeight,
AV_PIX_FMT_RGB24, imgWidth, imgHeight,
AV_PIX_FMT_YUV420P, 0, 0, 0, 0);
uint8_t * inData[1] = { rgb24Data }; // RGB24 have one plane
int inLinesize[1] = { 3*imgWidth }; // RGB stride
sws_scale(ctx, inData, inLinesize, 0, imgHeight, dst_picture.data, dst_picture.linesize)
Здесь я предполагаю, что rgb24Data является буфером, содержащим RGB24 байты изображения.
Так как я использую эту информацию для ARGB, которая 32 бит? Нужно ли мне вручную снимать альфа-канал или любую другую работу?
Спасибо
Спасибо, я постараюсь это и обновление. Кроме того, это означает, что я могу попробовать AV_PIX_FMT_RGB565, если мой вход RGB565, и поддерживает ли sws_scale RGB565? – nmxprime
Во время компиляции я получаю неизвестное имя типа 'SwsContext', хотя я включил swscale.h. – nmxprime
. У этого должен быть свой собственный вопрос. – szatmary