• 大小: 23.61MB
    文件类型: .rar
    金币: 2
    下载: 0 次
    发布日期: 2024-02-03
  • 语言: 其他
  • 标签: X264  FFmpeg  实时  

资源简介

开发环境:win7+VS2013+opencv3.0 两个线程,X264实时编码入队列,另一个线程FFmpeg从队列中取出数据实时解码。

资源截图

代码片段和文件信息

#include 
#include 
// Opencv  
#include   
#include   
#include   
#include   
#include 
#include “queue.h“
extern “C“
{
#include “libavcodec/avcodec.h“
#include “libswscale/swscale.h“
};

using namespace std;
using namespace cv;
//test different codec
#define TEST_H264  0
#define TEST_HEVC  1

extern DWORD WINAPI x264_encode(LPVOID pM);

bool get_h264_data(uchar* bufint in_lenuchar* out_buf int &out_len)
{
char nalu[4] = { 0x00 0x00 0x00 0x01 };
memcpy(out_buf nalu 4);
out_buf += 4;
memcpy(out_buf buf in_len);
out_len = in_len + 4;
// cout << “out_len = “ < return true;
}

int main(int argc char* argv[])
{
HANDLE thread1;
result_link_type *result_link = new result_link_type;
result_link->head = result_link->end = NULL;
result_link->result_num = 0;
   thread1 = CreateThread(NULL 0 x264_encode (LPVOID)result_link 0 NULL);
Sleep(1);
//system(“pause“);
#if 1
Mat pCvMat;
AVCodec *pCodec;
AVCodecContext *pCodecCtx = NULL;
AVCodecParserContext *pCodecParserCtx = NULL;

int frame_count;
FILE *fp_in;
FILE *fp_out;
AVframe *pframe *pframeYUV;
uint8_t *out_buffer;
// const int in_buffer_size = 4096;
const int in_buffer_size = 800000;
//uint8_t in_buffer[in_buffer_size + FF_INPUT_BUFFER_PADDING_SIZE] = { 0 };
uint8_t in_buffer[in_buffer_size];
memset(in_buffer 0 sizeof(in_buffer));
uint8_t *cur_ptr;
int cur_size;

AVPacket packet;
int ret got_picture;

int y_size;

AVCodecID codec_id = AV_CODEC_ID_H264;
// char filepath_in[] = “test.h264“;

// char filepath_out[] = “1.yuv“;
int first_time = 1;

struct SwsContext *img_convert_ctx;

//av_log_set_level(AV_LOG_DEBUG);

avcodec_register_all();

pCodec = avcodec_find_decoder(codec_id);
if (!pCodec) {
printf(“Codec not found\n“);
return -1;
}
pCodecCtx = avcodec_alloc_context3(pCodec);
if (!pCodecCtx){
printf(“Could not allocate video codec context\n“);
return -1;
}

pCodecParserCtx = av_parser_init(codec_id);
if (!pCodecParserCtx){
printf(“Could not allocate video parser context\n“);
return -1;
}

if (pCodec->capabilities&CODEC_CAP_TRUNCATED)
pCodecCtx->flags |= CODEC_FLAG_TRUNCATED; /* we do not send complete frames */

if (avcodec_open2(pCodecCtx pCodec NULL) < 0) {
printf(“Could not open codec\n“);
return -1;
}
#if 0
//Input File
fp_in = fopen(filepath_in “rb“);
if (!fp_in) {
printf(“Could not open input stream\n“);
return -1;
}
//Output File
fp_out = fopen(filepath_out “wb“);
if (!fp_out) {
printf(“Could not open output YUV file\n“);
return -1;
}
#endif
pframe = av_frame_alloc();
av_init_packet(&packet);

/******************************************************************************
* add by zhouyuhua@ict.ac.cn  保存BGR,opencv中是按BGR来保存的 
*****

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件   18936320  2014-05-06 10:08  ffmpeg_decode\Debug\avcodec-55.dll

     文件     418304  2014-05-06 10:08  ffmpeg_decode\Debug\avutil-52.dll

     文件      86016  2018-03-07 09:04  ffmpeg_decode\Debug\ffmpeg_decode.exe

     文件     561768  2018-03-07 09:04  ffmpeg_decode\Debug\ffmpeg_decode.ilk

     文件    1339392  2018-03-07 09:04  ffmpeg_decode\Debug\ffmpeg_decode.pdb

     文件      47776  2011-02-08 03:46  ffmpeg_decode\Debug\libgcc_s_dw2-1.dll

     文件    1472696  2018-02-08 14:34  ffmpeg_decode\Debug\libx264-142.dll

     文件     434176  2014-05-06 10:08  ffmpeg_decode\Debug\swscale-2.dll

     文件         25  2014-12-26 22:44  ffmpeg_decode\ffmpeg_decode\.gitignore

     文件   18936320  2014-05-06 10:08  ffmpeg_decode\ffmpeg_decode\avcodec-55.dll

     文件     418304  2014-05-06 10:08  ffmpeg_decode\ffmpeg_decode\avutil-52.dll

     文件       1209  2018-03-07 09:04  ffmpeg_decode\ffmpeg_decode\Debug\ffmpeg_decode.Build.CppClean.log

     文件       4313  2018-03-07 09:04  ffmpeg_decode\ffmpeg_decode\Debug\ffmpeg_decode.log

     文件       2554  2018-03-07 09:04  ffmpeg_decode\ffmpeg_decode\Debug\ffmpeg_decode.tlog\cl.command.1.tlog

     文件      61190  2018-03-07 09:04  ffmpeg_decode\ffmpeg_decode\Debug\ffmpeg_decode.tlog\CL.read.1.tlog

     文件       2092  2018-03-07 09:04  ffmpeg_decode\ffmpeg_decode\Debug\ffmpeg_decode.tlog\CL.write.1.tlog

     文件        178  2018-03-07 09:04  ffmpeg_decode\ffmpeg_decode\Debug\ffmpeg_decode.tlog\ffmpeg_decode.lastbuildstate

     文件       1808  2018-03-07 09:04  ffmpeg_decode\ffmpeg_decode\Debug\ffmpeg_decode.tlog\link.command.1.tlog

     文件       2684  2018-03-07 09:04  ffmpeg_decode\ffmpeg_decode\Debug\ffmpeg_decode.tlog\link.read.1.tlog

     文件        886  2018-03-07 09:04  ffmpeg_decode\ffmpeg_decode\Debug\ffmpeg_decode.tlog\link.write.1.tlog

     文件     218712  2018-03-07 09:04  ffmpeg_decode\ffmpeg_decode\Debug\main.obj

     文件     133044  2018-03-07 09:04  ffmpeg_decode\ffmpeg_decode\Debug\queue.obj

     文件    1248256  2018-03-07 09:04  ffmpeg_decode\ffmpeg_decode\Debug\vc120.idb

     文件     823296  2018-03-07 09:04  ffmpeg_decode\ffmpeg_decode\Debug\vc120.pdb

     文件     212340  2018-03-07 09:04  ffmpeg_decode\ffmpeg_decode\Debug\x264_encode.obj

     文件       4701  2018-02-08 15:38  ffmpeg_decode\ffmpeg_decode\ffmpeg_decode.vcxproj

     文件       1514  2018-02-08 15:38  ffmpeg_decode\ffmpeg_decode\ffmpeg_decode.vcxproj.filters

     文件        165  2017-12-20 16:34  ffmpeg_decode\ffmpeg_decode\ffmpeg_decode.vcxproj.user

     文件       5721  2012-05-23 20:03  ffmpeg_decode\ffmpeg_decode\include\inttypes.h

     文件     175612  2017-12-21 10:08  ffmpeg_decode\ffmpeg_decode\include\libavcodec\avcodec.h

............此处省略98个文件信息

评论

共有 条评论