找传奇、传世资源到传世资源站!

基于C++的ffmpeg实现网络视频多线程读取及保存

8.5玩家评分(1人评分)
下载后可评
介绍 评论 失效链接反馈

基于C 的ffmpeg实现网络视频多线程读取及保存
from clipboard
#ifndef RtspStreamMuxTask_H#define RtspStreamMuxTask_H

#ifdef __cplusplus
extern "C" {
#endif 

#ifdef HAVE_AV_CONFIG_H
#undef HAVE_AV_CONFIG_H
#endif

#include <libavcodec/avcodec.h>
#include <libavutil/mathematics.h>
#include <libavutil/avutil.h>
#include <libswscale/swscale.h>
#include <libavutil/fifo.h>
#include <libavformat/avformat.h>
#include <libavutil/opt.h>
#include <libavutil/error.h>
#include <libswresample/swresample.h>
#ifdef __cplusplus
}
#endif

#pragma comment( lib, "avcodec.lib")
#pragma comment( lib, "avutil.lib")
#pragma comment( lib, "avformat.lib")
#pragma comment(lib, "swresample.lib")
#pragma comment( lib, "swscale.lib" )

#ifndef CodecID
#define CodecID AVCodecID
#endif
#include <string>
//#include <windef.h>
#include <windows.h>
using namespace std;

class RtspStreamMuxTask
{
public:
RtspStreamMuxTask();
virtual ~RtspStreamMuxTask();

void  SetInputUrl(string rtspUrl);
void  SetOutputPath(string outputPath);

void StartRecvStream();
void StopRecvStream();

void GetVideoSize(long & width, long & height)  //获取视频分辨率
{
width = coded_width;
height = coded_height;
}

private:
void run();

int  OpenInputStream();
void CloseInputStream();

void readAndMux();

static DWORD WINAPI ReadingThrd(void * pParam);

int  openOutputStream();
void closeOutputStream();

void ReleaseCodecs();

private:

string m_inputUrl;
string m_outputFile;

AVFormatContext* m_inputAVFormatCxt;
AVBitStreamFilterContext* m_bsfcAAC;
AVBitStreamFilterContext* m_bsfcH264;

int m_videoStreamIndex;
int m_audioStreamIndex;

AVFormatContext* m_outputAVFormatCxt;

char m_tmpErrString[64];
bool m_stop_status;

HANDLE m_hReadThread;

BOOL   m_bInputInited;
BOOL   m_bOutputInited;

int    coded_width, coded_height;
int    m_frame_rate;

};

#endif // RtspStreamMuxTask_H
.
├── rtspbyffmpeg
│   ├── Debug
│   │   ├── rtspbyffmpeg.exe
│   │   ├── rtspbyffmpeg.ilk
│   │   └── rtspbyffmpeg.pdb
│   ├── ipch
│   │   └── rtspbyffmpeg-1cf87ef9
│   ├── rtspbyffmpeg
│   │   ├── Camera.mp4
│   │   ├── Debug
│   │   │   ├── RtspStreamMuxTask.obj
│   │   │   ├── RtspStreamRec.obj
│   │   │   ├── rtspbyffmpeg.Build.CppClean.log
│   │   │   ├── rtspbyffmpeg.lastbuildstate
│   │   │   ├── rtspbyffmpeg.log
│   │   │   ├── rtspbyffmpeg.obj
│   │   │   ├── rtspbyffmpeg.pch
│   │   │   ├── rtspbyffmpeg.tlog
│   │   │   │   ├── CL.read.1.tlog
│   │   │   │   ├── CL.write.1.tlog
│   │   │   │   ├── cl.command.1.tlog
│   │   │   │   ├── link.command.1.tlog
│   │   │   │   ├── link.read.1.tlog
│   │   │   │   ├── link.write.1.tlog
│   │   │   │   └── rtspbyffmpeg.lastbuildstate
│   │   │   ├── stdafx.obj
│   │   │   ├── vc120.idb
│   │   │   └── vc120.pdb
│   │   ├── ReadMe.txt
│   │   ├── RtspStreamMuxTask.cpp
│   │   ├── RtspStreamMuxTask.h
│   │   ├── RtspStreamRec.cpp
│   │   ├── RtspStreamRec.h
│   │   ├── avcodec-57.dll
│   │   ├── avdevice-57.dll
│   │   ├── avfilter-6.dll
│   │   ├── avformat-57.dll
│   │   ├── avutil-55.dll
│   │   ├── output.mp4
│   │   ├── postproc-54.dll
│   │   ├── rtspbyffmpeg.cpp
│   │   ├── rtspbyffmpeg.vcxproj
│   │   ├── rtspbyffmpeg.vcxproj.filters
│   │   ├── rtspbyffmpeg.vcxproj.user
│   │   ├── sss.avi
│   │   ├── stdafx.cpp
│   │   ├── stdafx.h
│   │   ├── swresample-2.dll
│   │   ├── swscale-4.dll
│   │   ├── targetver.h
│   │   └── x64
│   │       └── Debug
│   │           ├── CL.read.1.tlog
│   │           ├── CL.write.1.tlog
│   │           ├── cl.command.1.tlog
│   │           ├── rtspbyffmpeg.Build.CppClean.log
│   │           ├── rtspbyffmpeg.lastbuildstate
│   │           ├── rtspbyffmpeg.log
│   │           ├── rtspbyffmpeg.pch
│   │           ├── rtspbyffmpeg.unsuccessfulbuild
│   │           ├── rtspbyffmpeg.write.1.tlog
│   │           ├── stdafx.obj
│   │           ├── vc100.idb
│   │           └── vc100.pdb
│   ├── rtspbyffmpeg.sdf
│   ├── rtspbyffmpeg.sln
│   ├── rtspbyffmpeg.suo
│   ├── rtspbyffmpeg.v12.suo
│   └── x64
│       └── Debug
└── 找例子网_rtspbyffmpeg.rar

11 directories, 60 files

评论

发表评论必须先登陆, 您可以 登陆 或者 注册新账号 !


在线咨询: 问题反馈
客服QQ:174666394

有问题请留言,看到后及时答复