bywyh264encoder编解码API 1.0.0.6使用简介

有demo就看代码。vs2010 mfc。

木有demo就看bywyh264encoder.h函数定义。

好吧,demo去下载即可。

现在打开bywyh264encoder.h。

BYWYH264ENCODER_API int bywyRewardH264(char* frmTitle);
BYWYH264ENCODER_API int bywyGetDllVersionH264(char* strVer);
BYWYH264ENCODER_API int bywyGetAppVersionH264(char* strVer);

BYWYH264ENCODER_API int bywyH264encoderBuff(char* h264Name, int fps, int dup, int* maxcnt, int ithreads, int bingxing, int* endflag, unsigned char** bmpBuffer, int freebuffer, HWND hwnd);
BYWYH264ENCODER_API int bywyH264encoderBmpfile(char* h264Name, int fps, int dup, int begincnt, int endcnt, int ithreads, int bingxing, int* endflag, unsigned char* fnfmt, int delbmp, HWND hwnd);
BYWYH264ENCODER_API int bywyH264encoderImgfile(char* h264Name, int fps, int dup, int begincnt, int endcnt, int ithreads, int bingxing, int* endflag, unsigned char* fnfmt, int delbmp, HWND hwnd);

BYWYH264ENCODER_API	int bywy_h264decoder(char* filename, char* outpath, HWND hwnd, char* dispfmt, int jpgQuality);

BYWYH264ENCODER_API int bywyH264encoderBmpfile2(char* h264Name, int fps, int dup, int begincnt, int endcnt, int ithreads, int bingxing, int* endflag, unsigned char* fnfmt, int delbmp, char *dispfmt,HWND hwnd);
BYWYH264ENCODER_API int bywyH264encoderImgfile2(char* h264Name, int fps, int dup, int begincnt, int endcnt, int ithreads, int bingxing, int* endflag, unsigned char* fnfmt, int delbmp, char *dispfmt,HWND hwnd);

BYWYH264ENCODER_API int bywyGetAppVersionH264W(wchar_t* strVer);
BYWYH264ENCODER_API int bywyGetDllVersionH264W(wchar_t* strVer);

//to mp4
BYWYH264ENCODER_API int bywyH264encoderBuff2Mp4(char* mp4fn, int fps, int dup, int* maxcnt, int ithreads, int bingxing, int* endflag, unsigned char** bmpBuffer, int freebuffer, char* aacfn,int timeflag, HWND hwnd);
BYWYH264ENCODER_API int bywyH264encoderBmpfile2Mp4(char* mp4fn, int fps, int dup, int begincnt, int endcnt, int ithreads, int bingxing, int* endflag, unsigned char* fnfmt, int delbmp, char* aacfn,int timeflag, char* dispfmt, HWND hwnd);
BYWYH264ENCODER_API int bywyH264encoderImgfile2Mp4(char* mp4fn, int fps, int dup, int begincnt, int endcnt, int ithreads, int bingxing, int* endflag, unsigned char* fnfmt, int delbmp, char* aacfn,int timeflag, char* dispfmt, HWND hwnd);
BYWYH264ENCODER_API int bywyH264encoderImgfileAudfile2Mp4(char* mp4fn, int fps, int dup, int begincnt, int endcnt, int ithreads, int bingxing, int* endflag, unsigned char* fnfmt, int delbmp, char* audfn, int timeflag, char* dispfmt, HWND hwnd);
//from mp4(必须h264编码)
BYWYH264ENCODER_API	int bywy_h264decoderFromMp4(char* mp4fn, char* outpath,char * aacfn, HWND hwnd, char* dispfmt, int jpgQuality);
BYWYH264ENCODER_API	int bywy_h264decoderAudFromMp4(char* mp4fn, char* outpath, char* audfn, HWND hwnd, char* dispfmt, int jpgQuality);

//wav to mp3
BYWYH264ENCODER_API	int bywyH264_wav2mp3(char* wavfn, char* mp3fn);
BYWYH264ENCODER_API	int bywyH264_wav2mp3W(wchar_t* wavfnW, wchar_t* mp3fnW);
//mp3 to wav
BYWYH264ENCODER_API	int bywyH264_mp3Towav(char* mp3fn, char* wavfn);
BYWYH264ENCODER_API	int bywyH264_mp3TowavW(wchar_t* mp3fnW, wchar_t* wavfnW);

//wav to aac
BYWYH264ENCODER_API	int bywyH264_wav2aac(char* wavfn, char* aacfn);
BYWYH264ENCODER_API	int bywyH264_wav2aacW(wchar_t* wavfnW, wchar_t* aacfnW);
//aac to wav
BYWYH264ENCODER_API	int bywyH264_aac2wav(char* aacfn, char* wavfn);
BYWYH264ENCODER_API	int bywyH264_aac2wavW(wchar_t* aacfnW, wchar_t* wavfnW);

下边摘取demo的程序来看看函数的调用:

编码部分:

    int dup = 1;
    int fps = 25;
    char fmt[1024];
    CString str2;
    int timeflag=0;//0,2以音频时长为准   1,3以视频时长为准

    sprintf(fmt,"%s\\%%d%s",imgpath,imgexname);
    str2=outfn;
    str2.MakeLower();
    if(str2.Right(4) ==".mp4")//这个是编码为mp4的判断,好吧,CString用得很土...
//outfn 生成的文件名;fps 帧数;dup 默认1,以后再说;图片文件名从1到120递增;多线程编码;并行标志,先默认0,以后需要与图片的处理配合时才会需要;结束标志,可在处理中停止;图片文件名通配格式;删除bmp文件标志,先默认0就好;合成进mp4的音频文件名;视频音频时长对齐方式;处理中的提示;提示的控件句柄,可以NULL。
        bywyH264encoderImgfileAudfile2Mp4(outfn,fps,dup,1,120, -1, 0, &endflag, (unsigned char*)fmt, 0,inaudfn,timeflag,"编码中:%d", m_hWnd);

    else

//除了木有音频相关,其余同上
        bywyH264encoderImgfile2(outfn,fps,dup,1,120, -1, 0, &endflag, (unsigned char*)fmt, 0,"编码中:%d", m_hWnd);
    
    AfxMessageBox(L"编码 end.");

解码部分:

    CString str2;

    str2=infn;
    str2.MakeLower();
    if(str2.Right(4) ==".mp4")//mp4的话,视频编码必须为h264
    {

//待解码视频文件名;解码出图片输出路径名;解码音频文件名;控件句柄;处理中提示格式;jpg压缩质量,为0则为解码出图片为bmp格式文件。
        bywy_h264decoderAudFromMp4(infn,outpath,outaudfn,m_hWnd,"正在解码:%d",jpgQuality);
    }
    else

//同理
        bywy_h264decoder(infn,outpath,m_hWnd,"正在解码:%d",jpgQuality);


    AfxMessageBox(L"解码 end.");

其它:

 {//打赏,我的码,嘿嘿嘿!

bywyRewardH264(NULL);

}

{//aac转wav
        char strAacPath[1024]="1.aac";
        char wavPath[1024]="a1.wav";
        int ret = bywyH264_aac2wav(strAacPath,wavPath);;
        if (ret == 0)
        {
            AfxMessageBox(L"aac转wav成功");
        }
        else
        {
            AfxMessageBox(L"aac转wav失败");
        }
    }
    
    {//wav转aac成功
        char strAacPath[1024]="b2.aac";
        char wavPath[1024]="2.wav";
        int ret = bywyH264_wav2aac(wavPath,strAacPath);;
        if (ret == 0)
        {
            AfxMessageBox(L"wav转aac成功");
        }
        else
        {
            AfxMessageBox(L"wav转aac失败");
        }
    }

    {//取应用程序和DLL版本号
        wchar_t strverW[1024];
        wchar_t strdllverW[1024];
        wchar_t strW[1024];

        bywyGetAppVersionH264W(strverW);
        bywyGetDllVersionH264W(strdllverW);
        swprintf(strW,L"bywyh264编解码Demo ver:%s  dllver:%s",strverW,strdllverW);
        SetWindowText(strW);
    }

    if(0)
    {
        char strver[1024];
        char strdllver[1024];
        char str1[1024];

        bywyGetAppVersionH264(strver);
        bywyGetDllVersionH264(strdllver);
        sprintf(str1,"bywyh264编解码Demo ver:%s  dllver:%s",strver,strdllver);
        ::SetWindowTextA(m_hWnd,str1);
    }

主要的函数基本覆盖了,如果有大同小异的都可互相参考。

目的就是希望简单好用。不喜勿喷。

1.0.0.6.demo的代码随后上传。

休息好了,才会有美好的明天~

最后祝老妈生日快乐^_^。

  • 25
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值