Я кодирую некоторое видео на iPhone, пропустив данные изображения png через swscale, чтобы получить данные YUV420P, а затем кодирую этот кадр с помощью кодека MSMPEG4V1. В документации API avcodec_encode_video должен возвращать количество байтов, использованных из выходного буфера этой операцией кодирования. В кодировщик входит 234 000 байт, но результат, возвращаемый avcodec_encode_video, равен просто «4». Результат точно такой же за 24 кадра. Здесь что-то кажется подозрительным ... какое-то понимание?
Вот ссылка на код для вставки:
http://pastebin.com/ht94FWva
(извините за ссылку вдали от SO, я просто не хотел дублировать код в нескольких местах)
EDIT:
Кроме того, я настроил настраиваемый обратный вызов журнала для использования ffmpeg, и для меня задан уровень журнала "Verbose" (libavutil / log.h), поэтому libavcodec должен регистрировать любые ошибки на консоли, но avcodec тихо во время всей операции. (примечание: я проверил, чтобы убедиться, что мой обратный вызов журнала работает)