⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 test.cpp

📁 本程序基于ffmpeg库里的编解码器,并且vc 平台下的调试运行成功
💻 CPP
字号:
// test.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include "H264Codec.h"

int _tmain(int argc, _TCHAR* argv[])
{
		FILE* fi;
		FILE* fo;

	//	CH264Enc Enc;
	//	S_EncParam* pParam = new S_EncParam();
	//	pParam->codec_id=CODEC_ID_H264;
	//	pParam->in_pixFmt=PIX_FMT_YUV420P;
	//	pParam->nFrameRate=25;
	//	pParam->nHeight=288;
	//	pParam->nWidth=352;
	//	pParam->nBitRate=4000;                                                                                                                                                                                                                                                                                                                      
	//	Enc.Init(pParam);

	//	char infile[]="e:/test/news_cif.yuv";
	//	//    char infile[]="e:/test/test.jpg";
	//	char outfile[]="e:/test/news_cif11.yuv";

	////	char outfile[]="e:/test/news_cif.h264";

	//	int Len=(pParam->nHeight)*(pParam->nWidth)*3/2;
	//	int Ensize=20000;
	//	int Enlen;
	//	BYTE *Inbuffer=(BYTE*)malloc(Len);
	//	BYTE *Outbuffer=(BYTE*)malloc(Len);
	//	if((fi=fopen(infile, "rb"))==NULL)
	//	{
	//		printf("file open error");
	//	}
	//	if((fo=fopen(outfile, "wb"))==NULL)
	//	{
	//		printf("file open error");                          
	//	}
	//	for(int i=0;i<=100;i++)
	//	{
	//		fread(Inbuffer,Len,1,fi);
	//		Enlen=Enc.EncVideoFrame(Inbuffer,Len,Outbuffer);
	//		fwrite(Outbuffer,Len,1,fo);
	//	}
	//	free(Inbuffer);
	//	free(Outbuffer);
	//	fclose(fi);
	//	fclose(fo);
	//	delete pParam;

#if 0
/*test encoder*/
	CH264Enc Enc;
	S_EncParam* pParam = new S_EncParam();
	pParam->codec_id=CODEC_ID_H264;
	pParam->in_pixFmt=PIX_FMT_YUV420P;
	pParam->nFrameRate=25;
    pParam->nHeight=288;
	pParam->nWidth=352;
	pParam->nBitRate=100;                                                                                                                                                                                                                                                                                                                      
	Enc.Init(pParam);
//	Enc.Init();

	char infile[]="e:/test/news_cif.yuv";
//    char infile[]="e:/test/test.jpg";
	char outfile[]="e:/test/news_cif.h264";
//	char Outbuffer1[1000]={1,9,0};
	FILE *fk;
	char infile1[]="e:/test/news_cif1.yuv";
	fk=fopen(infile1,"rb");

	int Len=(pParam->nHeight)*(pParam->nWidth)*3/2;
	int Ensize=20000;
	int Enlen;
	BYTE *Inbuffer=(BYTE*)malloc(Len);
	BYTE *Outbuffer=(BYTE*)malloc(Len);
	if((fi=fopen(infile, "rb"))==NULL)
	{
		printf("file open error");
	}
	if((fo=fopen(outfile, "wb"))==NULL)
	{
		printf("file open error");                          
	}
	for(int i=0;i<=100;i++)
	{
	/*	if (i>=2&&i<=25)
		{
         fread(Inbuffer,Len,1,fk);
		}
		else*/
	
		fread(Inbuffer,Len,1,fi);
		Enlen=Enc.EncVideoFrame(Inbuffer,Len,Outbuffer);
		fwrite(Outbuffer,Enlen,1,fo);
//		fwrite(Outbuffer1,100,1,fo);
	}
//	fseek(fo,100,SEEK_SET);
//	fwrite(Outbuffer1,100,1,fo);

	free(Inbuffer);
	free(Outbuffer);
	fclose(fi);
	fclose(fo);
	delete pParam;


#else

    /*test decoder*/

    CH264Dec Dec;
    int width=352;
    int height=288;

	char infile[]="e:/test/news_cif.h264";
//	char infile[]="f:/test_haha.264";
//   char outfile[]="f:/test_haha.yuv";
	char outfile[]="e:/test/testji.yuv";
	int DLen=width*height*3/2;
	int count;
	int n;
	BYTE *Inbuffer=(BYTE*)malloc(1024);
	BYTE *Outbuffer=(BYTE*)malloc(10*DLen);

	if((fi=fopen(infile, "rb"))==NULL)
	{
		printf("file open error");
	}

	if((fo=fopen(outfile, "wb"))==NULL)
	{
		printf("file open error");
	}
    
//	fseek(fi,176*144*5,SEEK_SET);
	for(;;)
	{
		int size=(int)fread(Inbuffer,1,100,fi);
		if(size==0)
			break;
		count=Dec.DecVideoFrame(Inbuffer,size,Outbuffer);
		fwrite(Outbuffer,count*DLen,1,fo);
	}
	free(Inbuffer);
	free(Outbuffer);
	fclose(fi);
	fclose(fo);
#endif
	system("pause");
	return 0;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -