有那位仁兄知道使用c#语言怎么解码H264,据我所知,调用c、c++ dll,需要p/invoke,很复杂,用directshow,好像没有h264   filter ,silverlight3有解码功能,但项目中不能使用,应该 怎么做,大家讨论一下
  注: 平台:xp,所以media foundation也不 行

解决方案 »

  1.   

    调用c、c++ dll,p/invoke多看看,也不是特别困难
      

  2.   

    简单调用我也没有问题,给你看段代码typedef struct AVCodec {
       
        const char *name;
        enum CodecType type;
        enum CodecID id;
        int priv_data_size;
        int (*init)(AVCodecContext *);
        int (*encode)(AVCodecContext *, uint8_t *buf, int buf_size, void *data);
        int (*close)(AVCodecContext *);
        int (*decode)(AVCodecContext *, void *outdata, int *outdata_size,
                      const uint8_t *buf, int buf_size);
       
        int capabilities;
        struct AVCodec *next;
       
        void (*flush)(AVCodecContext *);
        const AVRational *supported_framerates; ///< array of supported framerates, or NULL if any, array is terminated by {0,0}
        const enum PixelFormat *pix_fmts;       ///< array of supported pixel formats, or NULL if unknown, array is terminated by -1
       
        const char *long_name;
        const int *supported_samplerates;       ///< array of supported audio samplerates, or NULL if unknown, array is terminated by 0
    } AVCodec;
    如果重写这个结构怎么 写??
      

  3.   

    有那位仁兄知道使用c#语言怎么解码H264,据我所知,调用c、c++ dll,需要p/invoke,很复杂,用directshow,好像没有h264  filter ,silverlight3有解码功能,但项目中不能使用,应该 怎么做,大家讨论一下 
        
    re:用C#调研H264核心代码是必要的,因为C底层处理速度比较快,内存分配容易控制,这样调用就形成了。net平台下的非托管代码,即:dll内部内存的分配不是由。net平台所决定的;但弊端是dll调用过程费时,没有直接调研源码速度快,大概性能下降40%左右,老哥有这方面经验;我给你个更好的建议:  在c#中,用C#的非安全代码(或者用。net平台下C++)把原来代码重新编一遍,然后用。net的平台的混合编译的优势,来做就ok了
    给分把,我等分下载东西呢
      

  4.   

    使用ffmpeg吧,是开源的,编译之后是exe,你可以在你的项目中process它就行了,当然要一些参数,看看ffmpeg的帮助就行了。
      

  5.   

     ffmpeg未编译的时候是什么文件,编译了以后是ffmpeg.exe么?阁下用过没?