crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )


  Ответ в чтение видео в ffmpeg
Введите ваше имя
Подтвердите код

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
 

Опции сообщения
 Включить смайлы?
Иконки сообщения
(Опционально)
                                
                                
  [ Без иконки ]
 


Последние 10 сообщений [ в обратном порядке ]
Андрей Егорович Дата 20.8.2013, 16:47
  Здравствуйте.
Используя ffmpeg в visual studio 2008 пытаюсь прочесть видео используя чуть переделанный пример из http://svn.perian.org/ffmpeg/libavcodec/api-example.c, но после сохранения изображение получается очень сильно искажённым.
Функции вытаскиваю из dll
...
static AVCodec * (*find_decoder) (enum AVCodecID id);
static AVCodecContext *(*alloc_context)(AVCodec *);
static void (*init_packet)(AVPacket *pkt);
static AVFrame* (*alloc_frame)(void);
static int (*codec_open2)(AVCodecContext *avctx, const AVCodec *codec, AVDictionary **options);
static int (*codec_decode_video2) (AVCodecContext *avctx, AVFrame *picture, int *got_picture_ptr, const AVPacket *avpkt);
static void (*avcodec_init)(void);
...
HINSTANCE h = LoadLibrary(TEXT("avcodec-55.dll"));
     find_decoder = NULL;
     alloc_context = NULL;
     init_packet = NULL;
     alloc_frame = NULL;
     codec_open2 = NULL;
     codec_decode_video2 = NULL;
     avcodec_init = NULL;

     if (!h) {
         return false;
     }

     find_decoder = (AVCodec *(*)(enum AVCodecID id))GetProcAddress(h, "avcodec_find_decoder");
     alloc_context = (AVCodecContext *(*)(AVCodec *))GetProcAddress(h, "avcodec_alloc_context3");
     alloc_frame = (AVFrame *(*)(void))GetProcAddress(h, "avcodec_alloc_frame");
     init_packet = (void (*)(AVPacket *))GetProcAddress(h, "av_init_packet");
     codec_open2 = (int (*)(AVCodecContext *avctx, const AVCodec *codec, AVDictionary **options))GetProcAddress(h, "avcodec_open2");
     codec_decode_video2 = (int (*) (AVCodecContext *avctx, AVFrame *picture, int *got_picture_ptr, const AVPacket *avpkt))GetProcAddress(h, "avcodec_decode_video2");
     avcodec_init = (void (*)(void))GetProcAddress(h, "avcodec_init");
Просмотр темы полностью (откроется в новом окне)
RSS Текстовая версия Сейчас: 29.3.2024, 2:18