资源简介
博客附件
ffmpeg快速解码,超快打开rtsp的封装 。附件包含源代码的实现。
演示例子exe可见 SDK播放器加速\x64\Player64 瞬间打开CCTV
代码片段和文件信息
#include “stdafx.h“
#include “CPlayer.h“
CGdiPlay::CGdiPlay(void) :bStateFlag(false)
pbit(NULL)
hBitmap(NULL)
out_bufRgb(NULL)
m_hWnd(NULL)
{
memset(&bmp 0 sizeof(BITMAP));
memset(&screenRect 0 sizeof(RECT));
memset(&rc 0 sizeof(RECT));
packet = av_packet_alloc();
pframe = av_frame_alloc();
pframeRGB = av_frame_alloc();
}
CGdiPlay::CGdiPlay(HWND _hWnd) :bStateFlag(false)
pbit(NULL)
hBitmap(NULL)
out_bufRgb(NULL)
m_hWnd(_hWnd)
{
}
CGdiPlay::~CGdiPlay(void)
{
}
int CGdiPlay::run()
{
hdcDes = GetDC(m_hWnd);
hdcSrc = CreateCompatibleDC(hdcDes);
packet = av_packet_alloc();
CalcVideoWH(m_hWnd);
::CoInitialize(NULL);
while (bStateFlag)
{
if (packet == NULL)
{
packet = av_packet_alloc();
av_usleep(20 * 1000);
continue;
}
if (av_read_frame(pFormatCtx packet) >= 0)
{
if (packet->stream_index == vindex)
{
//下面处理size
GetClientRect(m_hWnd &rc);
if (rc.left != screenRect.left || rc.right != screenRect.right || rc.top != screenRect.top || rc.bottom != screenRect.bottom)
CalcVideoWH(m_hWnd);
if (avcodec_send_packet(pCodecCtx packet) == 0)
{
if (avcodec_receive_frame(pCodecCtx pframe) == 0)
{
sws_scale(img_convert_ctx (const unsigned char* const*)pframe->data pframe->linesize 0 pCodecCtx->height
pframeRGB->data pframeRGB->linesize);
hBitmap = CreateDIBSection(hdcSrc &bmpinfo DIB_RGB_COLORS &pbit NULL 0);
Getobject(hBitmap sizeof(BITMAP) &bmp);
memcpy(pbit out_bufRgb (sW)* (sH) * 4);
Selectobject(hdcSrc hBitmap);
BitBlt(hdcDes 0 0 sW sH hdcSrc 0 0 SRCCOPY);
Deleteobject(hBitmap);
av_usleep(40 * 1000);
}
else
continue;
}
else
break;
}
}
av_packet_unref(packet);
}
avformat_close_input(&pFormatCtx);
av_packet_unref(packet);
::CoUninitialize();
return 0;
}
int CGdiPlay::play(string filepath)
{
if (bStateFlag)
stop();
av_register_all();
pFormatCtx = avformat_alloc_context();
if (avformat_open_input(&pFormatCtx filepath.c_str() NULL NULL) < 0)
return 0;
//很卡
//if (avformat_find_stream_info(pFormatCtx NULL) < 0)
// return 0;
for (int i = 0; i < (int)pFormatCtx->nb_streams; i++)
{
if (pFormatCtx->streams[i]->codecpar->codec_type == AVMEDIA_TYPE_VIDEO)
vindex = i;
if (
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2020-05-27 14:01 SDK播放器加速\
文件 4971 2020-03-16 17:55 SDK播放器加速\CPla
文件 971 2020-03-16 17:41 SDK播放器加速\CPla
目录 0 2020-05-27 14:01 SDK播放器加速\include\
文件 494 2020-03-16 17:45 SDK播放器加速\include\rtspinc.h
文件 1073 2020-03-13 09:21 SDK播放器加速\include\rtspinc_def.h
目录 0 2020-05-27 14:01 SDK播放器加速\x64\
文件 448 2020-03-16 17:53 SDK播放器加速\x64\Pla
文件 605184 2020-03-16 18:16 SDK播放器加速\x64\Pla
文件 16410 2020-03-13 09:41 SDK播放器加速\x64\RTSP.lib
文件 46346752 2020-03-13 09:41 SDK播放器加速\x64\RTSP64.so
文件 3457640 2020-03-13 09:40 SDK播放器加速\x64\RTSP_static.lib
目录 0 2020-05-27 14:01 SDK播放器加速\x86\
文件 15870 2020-03-13 09:42 SDK播放器加速\x86\RTSP.lib
文件 29331456 2020-03-13 09:42 SDK播放器加速\x86\RTSP.so
文件 3226006 2020-03-13 09:23 SDK播放器加速\x86\RTSP_static.lib
- 上一篇:《设计模式》--刘伟 PPT课件+代码
- 下一篇:概率论与数理统计陈希孺.pdf
相关资源
- 基于ffmpeg的经典版 ffplay 音视频播放
- ffmpeg api实现视频转码音视频
- Delphi播放器
- FFMPEG入门基础资料pdf
- ffmpeg ffdoc (FFMPEG的最完整教程)
- ffmpeg转码为hls代码
- ffmpeg-4.0.2最新版 windows vs2013编译动态
- ffmpeg实现直播功能
- linuxubuntu下ffmpeg + alsa 的音频播放器
- 内存H264+PCM发布rtmp.rar
- ffmpeg-4.2.1-win32-dev.zip
- M3U8视频PC机64位辅助工具2.0 —&md
- ffmpeg-3.2.tar.bz2
-
Music_Pla
yer.zip -
swift-iOS平台下基于IJKpla
yer封装的视 -
swift-YLFollowMusicPla
yer一个在线音乐播 - fpga音乐播放器
- DirectShow完美环境配置
- 适用于VC的FFMpeg静态库已编译)
- 使用ffmpeg api解码h264视频码流,并且能
- MP4v2录制rtsp流存为MP4文件
- Qt之纯QML实现视频播放器源码
- Qt 音乐播放器 实现歌词显示 网络播放
- musicApp.rar
- AS3简易本地flv播放器
- 基于stm32通用定时器的音乐播放器
- 流媒体播放器
- 非常全面的音乐播放器
- 喜马拉雅歌曲名称修改.exe
- 视频万能解码器让系统自带的Windows
评论
共有 条评论