FFmpeg декодирование H264 - PullRequest
       7

FFmpeg декодирование H264

2 голосов
/ 25 сентября 2011

Я декодирую поток H264 с помощью FFmpeg на iPhone.Я знаю, что поток H264 действителен, а SPS / PPS верны, так как VLC, Quicktime, Flash все правильно декодируют поток.Проблема, с которой я сталкиваюсь на iPhone, лучше всего показана на этой картинке.

enter image description here

Это как если бы рисовались векторы движения.Эта картинка была сфотографирована, когда на ней было много движения.Если сцена статична, то в углах есть точки.Это всегда происходит с прогнозирующими кадрами.Блочные цвета также являются проблемой.

Я пробовал различные настройки сборки для FFmpeg, такие как отключение оптимизаций, asm, neon и многих других комбинаций.Кажется, ничто не меняет поведение декодера.Я также попробовал выпуски Works with HTML, Love and Peace, а также последние источники GIT.Возможно, отсутствует параметр, или, возможно, я случайно включил некоторые параметры отладки в декодере.

Edit

Я использую sws_scale для преобразования изображения вRGBA.Я пробовал разные пиксельные форматы с одинаковыми результатами.

sws_scale(convertCtx, (const uint8_t**)srcFrame->data, srcFrame->linesize, 0, codecCtx->height, dstFrame->data, dstFrame->linesize);

Я использую PIX_FMT_YUV420P в качестве исходного формата при настройке контекста моего кодека.

1 Ответ

3 голосов
/ 26 сентября 2011

То, на что вы смотрите - это визуализация вектора движения ffmpeg.Убедитесь, что ни один из следующих флагов отладки не установлен:

avctx->debug & FF_DEBUG_VIS_QP
avctx->debug & FF_DEBUG_VIS_MB_TYPE
avctx->debug_mv

Также имейте в виду, что декодирование видео H264 с использованием ЦП будет НАМНОГО медленнее и менее энергоэффективным в iOS, чем при использовании аппаратного декодера.

...