Recherche avancée

Médias (0)

Mot : - Tags -/diogene

Aucun média correspondant à vos critères n’est disponible sur le site.

Autres articles (66)

  • Les autorisations surchargées par les plugins

    27 avril 2010, par

    Mediaspip core
    autoriser_auteur_modifier() afin que les visiteurs soient capables de modifier leurs informations sur la page d’auteurs

  • De l’upload à la vidéo finale [version standalone]

    31 janvier 2010, par

    Le chemin d’un document audio ou vidéo dans SPIPMotion est divisé en trois étapes distinctes.
    Upload et récupération d’informations de la vidéo source
    Dans un premier temps, il est nécessaire de créer un article SPIP et de lui joindre le document vidéo "source".
    Au moment où ce document est joint à l’article, deux actions supplémentaires au comportement normal sont exécutées : La récupération des informations techniques des flux audio et video du fichier ; La génération d’une vignette : extraction d’une (...)

  • Librairies et binaires spécifiques au traitement vidéo et sonore

    31 janvier 2010, par

    Les logiciels et librairies suivantes sont utilisées par SPIPmotion d’une manière ou d’une autre.
    Binaires obligatoires FFMpeg : encodeur principal, permet de transcoder presque tous les types de fichiers vidéo et sonores dans les formats lisibles sur Internet. CF ce tutoriel pour son installation ; Oggz-tools : outils d’inspection de fichiers ogg ; Mediainfo : récupération d’informations depuis la plupart des formats vidéos et sonores ;
    Binaires complémentaires et facultatifs flvtool2 : (...)

Sur d’autres sites (9861)

  • ffmpeg says : "option framerate not found"

    16 juillet 2013, par Jason

    Good afternoon.

    I've been trying to use ffmpeg to split a .mpeg into a sequence of .jpeg images. Please note that this is the inverse problem of the one specified here, but the problem I'm facing is not the same as the problem the author of that thread is facing.

    Specifically, I have tried all the following mpeg codecs available in my ffmpeg installation :

    DEV D  ffv1            FFmpeg video codec #1
    DEVSD  ffvhuff         Huffyuv FFmpeg variant
    DEVSDT mpeg1video      MPEG-1 video
    D V DT mpeg1video_vdpau MPEG-1 video (VDPAU acceleration)
    D V D  mpeg2_crystalhd MPEG-2 Video (CrystalHD acceleration)
    DEVSDT mpeg2video      MPEG-2 video
    DEVSDT mpeg4           MPEG-4 part 2
    D V D  mpeg4_crystalhd MPEG-4 Part 2 (CrystalHD acceleration)
    D V DT mpeg4_vdpau     MPEG-4 part 2 (VDPAU)
    D VSDT mpegvideo       MPEG-1 video
    D V DT mpegvideo_vdpau MPEG-1/2 video (VDPAU acceleration)
    D VSDT mpegvideo_xvmc  MPEG-1/2 video XvMC (X-Video Motion Compensation)
    DEVSD  msmpeg4         MPEG-4 part 2 Microsoft variant version 3
    D V D  msmpeg4_crystalhd MPEG-4 Part 2 Microsoft variant version 3 (CrystalHD acceleration)
    D VSD  msmpeg4v1       MPEG-4 part 2 Microsoft variant version 1
    DEVSD  msmpeg4v2       MPEG-4 part 2 Microsoft variant version 2

    I've tried supplying ffmpeg with all different codecs to try to split an input .mpeg video file with 2548 frames into 2548 .jpegs, by using the -vcodec option :

    ffmpeg -r 2548 -i frames.mpeg frames_%06d.jpg -vcodec $codec

    where $codec is any codec among the ones listed above, e.g. ffv1, mpeg4, etc. However, all my efforts result in the following error :

    [NULL @ 0x1948f20] Value 4707126720094797824.000000 for parameter 'probesize' out of range
    [NULL @ 0x1948f20] Value 4707126720094797824.000000 for parameter 'analyzeduration' out of range
    [NULL @ 0x1948f20] Value 4697254411347427328.000000 for parameter 'indexmem' out of range
    [NULL @ 0x1948f20] Value 4703785510416416768.000000 for parameter 'rtbufsize' out of range
    [NULL @ 0x1948f20] Value -4616189618054758400.000000 for parameter 'fpsprobesize' out of range
    [NULL @ 0x1948f20] Value 4607182418800017408.000000 for parameter 'f_err_detect' out of     range
    [NULL @ 0x1948f20] Value 4607182418800017408.000000 for parameter 'err_detect' out of range
    Option framerate not found.  

    Which is weird, because I've actually specified the frame rate parameter through the -r switch. I googled a bit and it appears that this error was mentioned approximately a year and a half ago on the ffmpeg bug tracker but that information makes little sense to me because it's relevant to the devs. Curiously, if I interchange the position of the parameters and put -r after -i or even after -vcodec, the error message changes to :

    [NULL @ 0x24abf20] Value 4707126720094797824.000000 for parameter 'probesize' out of range
    [NULL @ 0x24abf20] Value 4707126720094797824.000000 for parameter 'analyzeduration' out of range
    [NULL @ 0x24abf20] Value 4697254411347427328.000000 for parameter 'indexmem' out of range
    [NULL @ 0x24abf20] Value 4703785510416416768.000000 for parameter 'rtbufsize' out of range
    [NULL @ 0x24abf20] Value -4616189618054758400.000000 for parameter 'fpsprobesize' out of  range
    [NULL @ 0x24abf20] Value 4607182418800017408.000000 for parameter 'f_err_detect' out of  range
    [NULL @ 0x24abf20] Value 4607182418800017408.000000 for parameter 'err_detect' out of range
    [NULL @ 0x24b23c0] Value 4686111960511545344.000000 for parameter 'b' out of range
    [NULL @ 0x24b23c0] Value 4683532506232782848.000000 for parameter 'ab' out of range
    [NULL @ 0x24b23c0] Value 4705844345939427328.000000 for parameter 'bt' out of range
    [NULL @ 0x24b23c0] Value 4617315517961601024.000000 for parameter 'me_method' out of range
    [NULL @ 0x24b23c0] Value 4622945017495814144.000000 for parameter 'g' out of range
    [NULL @ 0x24b23c0] Value 4611686018427387904.000000 for parameter 'qmin' out of range
    [NULL @ 0x24b23c0] Value 4629418941960159232.000000 for parameter 'qmax' out of range
    [NULL @ 0x24b23c0] Value 4613937818241073152.000000 for parameter 'qdiff' out of range
    [NULL @ 0x24b23c0] Value -4616189618054758400.000000 for parameter 'wpredp' out of range
    [NULL @ 0x24b23c0] Value 4607182418800017408.000000 for parameter 'bug' out of range
    [NULL @ 0x24b23c0] Value 4607182418800017408.000000 for parameter 'er' out of range
    [NULL @ 0x24b23c0] Value 4607182418800017408.000000 for parameter 'err_detect' out of range
    [NULL @ 0x24b23c0] Value 4613937818241073152.000000 for parameter 'ec' out of range
    [NULL @ 0x24b23c0] Value 4620693217682128896.000000 for parameter 'ildctcmp' out of range
    [NULL @ 0x24b23c0] Value 4620693217682128896.000000 for parameter 'subq' out of range
    [NULL @ 0x24b23c0] Value 4696837138094751744.000000 for parameter 'ibias' out of range
    [NULL @ 0x24b23c0] Value 4696837138094751744.000000 for parameter 'pbias' out of range
    [NULL @ 0x24b23c0] Value 4642507528377204736.000000 for parameter 'lmin' out of range
    [NULL @ 0x24b23c0] Value 4660262442142531584.000000 for parameter 'lmax' out of range
    [NULL @ 0x24b23c0] Value 4696130710463840256.000000 for parameter 'flags2' out of range
    [NULL @ 0x24b23c0] Value 4607182418800017408.000000 for parameter 'threads' out of range
    [NULL @ 0x24b23c0] Value 4620693217682128896.000000 for parameter 'nssew' out of range
    [NULL @ 0x24b23c0] Value -4586705114244317184.000000 for parameter 'profile' out of range
    [NULL @ 0x24b23c0] Value -4586705114244317184.000000 for parameter 'level' out of range
    [NULL @ 0x24b23c0] Value 4623507967449235456.000000 for parameter 'skipcmp' out of range
    [NULL @ 0x24b23c0] Value 4642507528377204736.000000 for parameter 'mblmin' out of range
    [NULL @ 0x24b23c0] Value 4660262442142531584.000000 for parameter 'mblmax' out of range
    [NULL @ 0x24b23c0] Value 4643211215818981376.000000 for parameter 'mepc' out of range
    [NULL @ 0x24b23c0] Value 4607182418800017408.000000 for parameter 'bidir_refine' out of range
    [NULL @ 0x24b23c0] Value -4616189618054758400.000000 for parameter 'cqp' out of range
    [NULL @ 0x24b23c0] Value 4627730092099895296.000000 for parameter 'keyint_min' out of range
    [NULL @ 0x24b23c0] Value 4607182418800017408.000000 for parameter 'refs' out of range
    [NULL @ 0x24b23c0] Value -4616189618054758400.000000 for parameter 'directpred' out of range
    [NULL @ 0x24b23c0] Value 4618441417868443648.000000 for parameter 'sc_factor' out of range
    [NULL @ 0x24b23c0] Value 4643211215818981376.000000 for parameter 'mv0_threshold' out of range
    [NULL @ 0x24b23c0] Value 4630826316843712512.000000 for parameter 'b_sensitivity' out of range
    [NULL @ 0x24b23c0] Value -4616189618054758400.000000 for parameter 'compression_level' out of range
    [NULL @ 0x24b23c0] Value -4616189618054758400.000000 for parameter 'min_prediction_order' out of range
    [NULL @ 0x24b23c0] Value -4616189618054758400.000000 for parameter 'max_prediction_order' out of range
    [NULL @ 0x24b23c0] Value -4616189618054758400.000000 for parameter 'prediction_order_method' out of range
    [NULL @ 0x24b23c0] Value -4616189618054758400.000000 for parameter 'min_partition_order' out of range
    [NULL @ 0x24b23c0] Value -4616189618054758400.000000 for parameter 'max_partition_order' out of range
    [NULL @ 0x24b23c0] Value 4607182418800017408.000000 for parameter 'ticks_per_frame' out of range
    [NULL @ 0x24b23c0] Value 4611686018427387904.000000 for parameter 'color_primaries' out of range
    [NULL @ 0x24b23c0] Value 4611686018427387904.000000 for parameter 'color_trc' out of range
    [NULL @ 0x24b23c0] Value 4611686018427387904.000000 for parameter 'colorspace' out of range
    [NULL @ 0x24b23c0] Value -4616189618054758400.000000 for parameter 'aq_mode' out of range
    [NULL @ 0x24b23c0] Value -4616189618054758400.000000 for parameter 'rc_lookahead' out of range
    [NULL @ 0x24b23c0] Value -4616189618054758400.000000 for parameter 'lpc_type' out of range
    [NULL @ 0x24b23c0] Value -4616189618054758400.000000 for parameter 'lpc_passes' out of range
    [NULL @ 0x24b23c0] Value 4613937818241073152.000000 for parameter 'thread_type' out of range
    [NULL @ 0x24b23c0] Value -4616189618054758400.000000 for parameter 'request_sample_fmt' out of range
    frames.mpeg: could not find codec parameters

    I'm at a loss as to what to do with this problem, and am looking for some assistance.

    Kind regards,

    Jason

  • "undefined reference to " when calling ffmpeg1.2.1 in Cplusplus using ANDROID NDK

    21 mars 2014, par wolfz

    when i call ffmpeg1.2.1 lib in Cplusplus wrapper with android NDK, some symbols cannot be linked ,the errors occur when linking as follows. but the other symbols can be linked,why ? how to correct the mistake ?

    SharedLibrary  : libplayer.so
    /home/mytest/player/jni/lib/DllAvCodec.h:124: error: undefined reference to 'avcodec_string(char*, int, AVCodecContext*, int)'
    /home/mytest/player/jni/lib/DllAvCodec.h:124: error: undefined reference to 'avcodec_string(char*, int, AVCodecContext*, int)'
    /home/mytest/player/jni/lib/DllAvCodec.h:124: error: undefined reference to 'avcodec_string(char*, int, AVCodecContext*, int)'
    /home/mytest/player/jni/lib/DllAvCodec.h:144: error: undefined reference to 'av_free_packet(AVPacket*)'
    /home/mytest/player/jni/cores/player/Demuxers/DemuxFFmpeg.cpp:248: error: undefined reference to 'av_log_set_callback(void (*)(void*,mytestt*,     std::__va_list))'
    /home/mytest/player/jni/lib/DllAvCodec.h:144: error: undefined reference to 'av_free_packet(AVPacket*)'
    /home/mytest/player/jni/cores/player/Demuxers/DemuxFFmpeg.cpp:701: error: undefined reference to 'av_free_packet(AVPacket*)'
    /home/mytest/player/jni/cores/player/Demuxers/DemuxFFmpeg.cpp:798: error: undefined reference to 'av_free_packet(AVPacket*)'
    /home/mytest/player/jni/lib/DllAvCodec.h:108: error: undefined reference to 'avcodec_find_decoder(AVCodecID)'
    clang++: error: linker command failed with exit code 1 (use -v to see invocation)    

    my android.mk is :

    LOCAL_PATH := $(call my-dir)
    DEFINES += \
              -DTARGET_POSIX \
              -DTARGET_LINUX \
              -D_LINUX \
              -DTARGET_ANDROID \
              -D__STDC_CONSTANT_MACROS

    ######################################
    #build ffmpeg prebuilt lib
    ######################################
    include $(CLEAR_VARS)  
    LOCAL_MODULE := libavcodec
    LOCAL_SRC_FILES :=lib/lib/libavcodec.a
    include $(PREBUILT_STATIC_LIBRARY)

    include $(CLEAR_VARS)  
    LOCAL_MODULE := libavfilter  
    LOCAL_SRC_FILES :=lib/lib/libavfilter.a
    include $(PREBUILT_STATIC_LIBRARY)

    include $(CLEAR_VARS)  
    LOCAL_MODULE := libavformat  
    LOCAL_SRC_FILES :=lib/lib/libavformat.a
    include $(PREBUILT_STATIC_LIBRARY)

    include $(CLEAR_VARS)  
    LOCAL_MODULE := libavutil  
    LOCAL_SRC_FILES :=lib/lib/libavutil.a
    include $(PREBUILT_STATIC_LIBRARY)

    include $(CLEAR_VARS)  
    LOCAL_MODULE := libpostproc  
    LOCAL_SRC_FILES :=lib/lib/libpostproc.a
    include $(PREBUILT_STATIC_LIBRARY)

    include $(CLEAR_VARS)  
    LOCAL_MODULE := libswresample  
    LOCAL_SRC_FILES :=lib/lib/libswresample.a
    include $(PREBUILT_STATIC_LIBRARY)

    include $(CLEAR_VARS)  
    LOCAL_MODULE := libswscale  
    LOCAL_SRC_FILES := lib/lib/libswscale.a
    include $(PREBUILT_STATIC_LIBRARY)


    ######################################
    #build lib
    ######################################
    include $(CLEAR_VARS)
    LOCAL_MODULE:= player
    base := $(LOCAL_PATH)

    LOCAL_SRC_FILES += ... #ignore


    LOCAL_C_INCLUDES += $(LOCAL_PATH) \
               $(LOCAL_PATH)/lib \
               $(LOCAL_PATH)/lib/include \
               $(LOCAL_PATH)/cores/dvdplayer \

    LOCAL_CPPFLAGS += -Wall -fexceptions $(DEFINES)

    LOCAL_STATIC_LIBRARIES := libavformat libavcodec libavfilter  \
                             libavutil libpostproc libswscale libswresample

    LOCAL_LDLIBS += -llog -lz
    LOCAL_LDFLAGS += -L../jni/lib/lib  

    include $(BUILD_SHARED_LIBRARY)

    the DllAvcodec.h is :

    #pragma once


    #include "DllAvUtil.h"
    #include "utils/log.h"
    #define USE_EXTERNAL_FFMPEG  1

    extern "C" {
     #include <libavcodec></libavcodec>avcodec.h>
    }

    #if LIBAVCODEC_VERSION_MICRO >= 100
     #define LIBAVCODEC_FROM_FFMPEG
    #else
     #define LIBAVCODEC_FROM_LIBAV
    #endif

    #include "threads/SingleLock.h"

    class DllAvCodecInterface
    {
    public:
     virtual ~DllAvCodecInterface() {}
     virtual void avcodec_register_all(void)=0;
     virtual void avcodec_flush_buffers(AVCodecContext *avctx)=0;
     virtual int avcodec_open2_dont_call(AVCodecContext *avctx, AVCodec *codec, AVDictionary **options)=0;
     virtual AVCodec *avcodec_find_decoder(enum CodecID id)=0;
     virtual AVCodec *avcodec_find_encoder(enum CodecID id)=0;
     virtual int avcodec_close_dont_call(AVCodecContext *avctx)=0;
     virtual AVFrame *avcodec_alloc_frame(void)=0;
     virtual int avpicture_fill(AVPicture *picture, uint8_t *ptr, PixelFormat pix_fmt, int width, int height)=0;
     virtual int avcodec_decode_video2(AVCodecContext *avctx, AVFrame *picture, int *got_picture_ptr, AVPacket *avpkt)=0;
     virtual int avcodec_decode_audio4(AVCodecContext *avctx, AVFrame *frame, int *got_frame_ptr, AVPacket *avpkt)=0;
     virtual int avcodec_decode_subtitle2(AVCodecContext *avctx, AVSubtitle *sub, int *got_sub_ptr, AVPacket *avpkt)=0;
     ///virtual int avcodec_encode_audio(AVCodecContext *avctx, uint8_t *buf, int buf_size, const short *samples)=0;
     ///virtual int avcodec_encode_audio2(AVCodecContext *avctx, AVPacket *avpkt, const AVFrame *frame, int *got_packet_ptr)=0;
     virtual int avpicture_get_size(PixelFormat pix_fmt, int width, int height)=0;
     virtual AVCodecContext *avcodec_alloc_context3(AVCodec *codec)=0;
     virtual void avcodec_string(char *buf, int buf_size, AVCodecContext *enc, int encode)=0;
     virtual void avcodec_get_context_defaults3(AVCodecContext *s, AVCodec *codec)=0;
     virtual AVCodecParserContext *av_parser_init(int codec_id)=0;
     virtual int av_parser_parse2(AVCodecParserContext *s,AVCodecContext *avctx, uint8_t **poutbuf, int *poutbuf_size,
                       const uint8_t *buf, int buf_size,
                       int64_t pts, int64_t dts, int64_t pos)=0;
     virtual void av_parser_close(AVCodecParserContext *s)=0;
     virtual AVBitStreamFilterContext *av_bitstream_filter_init(const char *name)=0;
     virtual int av_bitstream_filter_filter(AVBitStreamFilterContext *bsfc,
       AVCodecContext *avctx, const char *args,
       uint8_t **poutbuf, int *poutbuf_size,
       const uint8_t *buf, int buf_size, int keyframe) =0;
     virtual void av_bitstream_filter_close(AVBitStreamFilterContext *bsfc) =0;
     virtual void avpicture_free(AVPicture *picture)=0;
     virtual void av_free_packet(AVPacket *pkt)=0;
     virtual int avpicture_alloc(AVPicture *picture, PixelFormat pix_fmt, int width, int height)=0;
     virtual enum PixelFormat avcodec_default_get_format(struct AVCodecContext *s, const enum PixelFormat *fmt)=0;
     virtual int avcodec_default_get_buffer(AVCodecContext *s, AVFrame *pic)=0;
     virtual void avcodec_default_release_buffer(AVCodecContext *s, AVFrame *pic)=0;
     virtual AVCodec *av_codec_next(AVCodec *c)=0;
     virtual int av_dup_packet(AVPacket *pkt)=0;
     virtual void av_init_packet(AVPacket *pkt)=0;
     virtual int avcodec_fill_audio_frame(AVFrame *frame, int nb_channels, enum AVSampleFormat sample_fmt, const uint8_t *buf, int buf_size, int align) = 0;
     virtual void avcodec_free_frame(AVFrame **frame)=0;
    };


    // Use direct layer
    class DllAvCodec : public DllAvCodecInterface
    {
    public:
     static CCriticalSection m_critSection;

     virtual ~DllAvCodec() {}
     virtual void avcodec_register_all()
     {
       CSingleLock lock(DllAvCodec::m_critSection);
       ::avcodec_register_all();
     }
     virtual void avcodec_flush_buffers(AVCodecContext *avctx) { ::avcodec_flush_buffers(avctx); }
     virtual int avcodec_open2(AVCodecContext *avctx, AVCodec *codec, AVDictionary **options)
     {
       CSingleLock lock(DllAvCodec::m_critSection);
       return ::avcodec_open2(avctx, codec, options);
     }
     virtual int avcodec_open2_dont_call(AVCodecContext *avctx, AVCodec *codec, AVDictionary **options) { *(volatile int *)0x0 = 0; return 0; }
     virtual int avcodec_close_dont_call(AVCodecContext *avctx) { *(volatile int *)0x0 = 0; return 0; }
     virtual AVCodec *avcodec_find_decoder(enum CodecID id) { return ::avcodec_find_decoder(id); }
     virtual AVCodec *avcodec_find_encoder(enum CodecID id) { return ::avcodec_find_encoder(id); }
     virtual int avcodec_close(AVCodecContext *avctx)
     {
       CSingleLock lock(DllAvCodec::m_critSection);
       return ::avcodec_close(avctx);
     }
     virtual AVFrame *avcodec_alloc_frame() { return ::avcodec_alloc_frame(); }
     virtual int avpicture_fill(AVPicture *picture, uint8_t *ptr, PixelFormat pix_fmt, int width, int height) { return ::avpicture_fill(picture, ptr, pix_fmt, width, height); }
     virtual int avcodec_decode_video2(AVCodecContext *avctx, AVFrame *picture, int *got_picture_ptr, AVPacket *avpkt) { return ::avcodec_decode_video2(avctx, picture, got_picture_ptr, avpkt); }
     virtual int avcodec_decode_audio4(AVCodecContext *avctx, AVFrame *frame, int *got_frame_ptr, AVPacket *avpkt) { return ::avcodec_decode_audio4(avctx, frame, got_frame_ptr, avpkt); }
     virtual int avcodec_decode_subtitle2(AVCodecContext *avctx, AVSubtitle *sub, int *got_sub_ptr, AVPacket *avpkt) { return ::avcodec_decode_subtitle2(avctx, sub, got_sub_ptr, avpkt); }
     ///virtual int avcodec_encode_audio(AVCodecContext *avctx, uint8_t *buf, int buf_size, const short *samples) { return ::avcodec_encode_audio(avctx, buf, buf_size, samples); }
     ///virtual int avcodec_encode_audio2(AVCodecContext *avctx, AVPacket *avpkt, const AVFrame *frame, int *got_packet_ptr) { return ::avcodec_encode_audio2(avctx, avpkt, frame, got_packet_ptr); }
     virtual int avpicture_get_size(PixelFormat pix_fmt, int width, int height) { return ::avpicture_get_size(pix_fmt, width, height); }
     virtual AVCodecContext *avcodec_alloc_context3(AVCodec *codec) { return ::avcodec_alloc_context3(codec); }
     virtual void avcodec_string(char *buf, int buf_size, AVCodecContext *enc, int encode) { ::avcodec_string(buf, buf_size, enc, encode); }
     virtual void avcodec_get_context_defaults3(AVCodecContext *s, AVCodec *codec) { ::avcodec_get_context_defaults3(s, codec); }

     virtual AVCodecParserContext *av_parser_init(int codec_id) { return ::av_parser_init(codec_id); }
     virtual int av_parser_parse2(AVCodecParserContext *s,AVCodecContext *avctx, uint8_t **poutbuf, int *poutbuf_size,
                       const uint8_t *buf, int buf_size,
                       int64_t pts, int64_t dts, int64_t pos)
     {
       return ::av_parser_parse2(s, avctx, poutbuf, poutbuf_size, buf, buf_size, pts, dts, pos);
     }
     virtual void av_parser_close(AVCodecParserContext *s) { ::av_parser_close(s); }

     virtual AVBitStreamFilterContext *av_bitstream_filter_init(const char *name) { return ::av_bitstream_filter_init(name); }
     virtual int av_bitstream_filter_filter(AVBitStreamFilterContext *bsfc,
       AVCodecContext *avctx, const char *args,
       uint8_t **poutbuf, int *poutbuf_size,
       const uint8_t *buf, int buf_size, int keyframe) { return ::av_bitstream_filter_filter(bsfc, avctx, args, poutbuf, poutbuf_size, buf, buf_size, keyframe); }
     virtual void av_bitstream_filter_close(AVBitStreamFilterContext *bsfc) { ::av_bitstream_filter_close(bsfc); }

     virtual void avpicture_free(AVPicture *picture) { ::avpicture_free(picture); }
     virtual void av_free_packet(AVPacket *pkt) { ::av_free_packet(pkt); }
     virtual int avpicture_alloc(AVPicture *picture, PixelFormat pix_fmt, int width, int height) { return ::avpicture_alloc(picture, pix_fmt, width, height); }
     virtual int avcodec_default_get_buffer(AVCodecContext *s, AVFrame *pic) { return ::avcodec_default_get_buffer(s, pic); }
     virtual void avcodec_default_release_buffer(AVCodecContext *s, AVFrame *pic) { ::avcodec_default_release_buffer(s, pic); }
     virtual enum PixelFormat avcodec_default_get_format(struct AVCodecContext *s, const enum PixelFormat *fmt) { return ::avcodec_default_get_format(s, fmt); }
     virtual AVCodec *av_codec_next(AVCodec *c) { return ::av_codec_next(c); }

     virtual int av_dup_packet(AVPacket *pkt) { return ::av_dup_packet(pkt); }
     virtual void av_init_packet(AVPacket *pkt) { return ::av_init_packet(pkt); }
     virtual int avcodec_fill_audio_frame(AVFrame *frame, int nb_channels, enum AVSampleFormat sample_fmt, const uint8_t *buf, int buf_size, int align) { return ::avcodec_fill_audio_frame(frame, nb_channels, sample_fmt, buf, buf_size, align); }
     virtual void avcodec_free_frame(AVFrame **frame) { return ::avcodec_free_frame(frame); };

    };
  • "Vorbis Extradata missing" when trying to get stream's information about the codec

    14 août 2013, par noobed

    Hello I've got a problem when loading AVCodec for an flv file. (there seems to be no problem when loading mp3 or avi file)

    The actual error is : [vorbis @ 0x1550aa0] Extradata missing.

    So I'll keep it simple and ask you :

    1) Anyone familiar with this type of error ?

    Since I've spent some hours googling but with no success

    2) What exactly does "extradata missing" mean in context of ffmpeg avcodec_open2()

    You can see my code below :

    #ifdef __cplusplus

    #define __STDC_CONSTANT_MACROS

    #ifdef _STDINT_H

       #undef _STDINT_H

    #endif

    #endif

    #include
    extern "C" {
    #include <libavcodec></libavcodec>avcodec.h>
    #include <libavformat></libavformat>avformat.h>
    #include <libavutil></libavutil>avutil.h>
    #include <libavutil></libavutil>samplefmt.h>

    }
    #include



    int main(int argc, char * argv[])
    {
    if(argc &lt; 2)
    {
       printf("you need to specify filename \n");
       return -1;
    }
    av_register_all();
    avcodec_register_all();

    //opening a file
    AVFormatContext *avFormatContext = NULL;
    int ret = avformat_open_input(&amp;avFormatContext, argv[1], NULL, NULL);
    if (ret &lt; 0)
    return -2; // Couldn&#39;t open file

       //print some basic info
    printf("num of streams = %u\n", *(&amp;avFormatContext->nb_streams));
    printf("filename = %s\n", *(&amp;avFormatContext->filename));
    printf("start time = %ld \n", *(&amp;avFormatContext->start_time));
    printf("duration = %ld \n", *(&amp;avFormatContext->duration));
    printf("bit rate = %d\n", *(&amp;avFormatContext->bit_rate));
    printf("audio codec id = %d \n\n\n", *(&amp;avFormatContext->audio_codec_id));

    AVCodecContext * pCodecContext;
    int audioStreamId = -1;
    for(int i = 0; i &lt; avFormatContext->nb_streams; i++)
    {
       if(avFormatContext->streams[i]->codec->codec_type == \
       AVMEDIA_TYPE_AUDIO)//CODEC_TYPE_AUDIO)
       {
           audioStreamId = i;
           break;
       }
    }      

    if(audioStreamId == -1)
       return -3; //Didn&#39;t find an audio stream


    printf("audioStreamId = %d \n", audioStreamId);

    pCodecContext = avFormatContext->streams[audioStreamId]->codec;
    if(pCodecContext == NULL)
       return -10;




    //The stream&#39;s information about the codec is in what
    //we call the "codec context." This contains all the information
    //about the codec that the stream is using, and now we have a pointer to it.
    //But we still have to find the actual codec and open it:


    AVCodec *pCodec;
    AVDictionary *options;
    //Find the decoder for the audio stream
    pCodec = avcodec_find_decoder(pCodecContext->codec_id);

    printf("TEST codec name = %s fullName = \
      %s\n",pCodec->name, pCodec->long_name);

    if(pCodec == NULL)
       return -4; //Codec not found
    //Open codec
    //avcodec_open2 - This function is not thread safe!
    //Prior to using this function the context has to be allocated with
       //  avcodec_alloc_context3().
    pCodecContext = avcodec_alloc_context3(pCodec);

    printf("test 0\n");
    if(pCodecContext == NULL)
       return -5; //Could not allocate audio codec context

    printf("test 1\n");
    if(avcodec_open2(pCodecContext, pCodec, NULL) &lt; 0)
       return -6; //Couldn&#39;t open codec

    printf("test 2\n");

    avformat_close_input(&amp;avFormatContext);

    return 0;
    }

    These are the last lines of my output screen :

    TEST codec id = 86021
    t0
    t1
    [vorbis @ 0x19eeaa0] Extradata missing.