资源简介
基于jrtplib实现了RTP发送和接收功能,支持发送H264、PS、TS等文件流,接收端读取发送端发来的数据后,取Payload数据,通过FFmpeg分离、解码出视频,将RGB格式的视频在窗口中显示。该代码对应我博客上的一篇文章:https://blog.csdn.net/zhoubotong2012/article/details/86502327
代码片段和文件信息
// VideoDrawer.cpp: implementation of the CDDrawData class.
//
//////////////////////////////////////////////////////////////////////
#include “DDrawData.h“
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
#define SAFE_RELEASE(p) { if ( (p) ) { (p)->Release(); (p) = 0; } }
CDDrawData::CDDrawData()
{
m_pDD = NULL;
m_pddsFrontBuffer = NULL;
m_pddsBackBuffer = NULL;
m_dwWidth = 0;
m_dwHeight = 0;
}
CDDrawData::~CDDrawData()
{
Destroyobjects();
}
HRESULT CDDrawData::Init(HWND hWndRECT rect)
{
HRESULT hr;
// Cleanup anything from a previous call
Destroyobjects();
// DDraw stuff begins here
if( FAILED( hr = DirectDrawCreateEx( NULL (VOID**)&m_pDD
IID_IDirectDraw7 NULL ) ) )
return E_FAIL;
// Set cooperative level
hr = m_pDD->SetCooperativeLevel( hWnd DDSCL_NORMAL );
if( FAILED(hr) )
return E_FAIL;
DWORD dwWidthdwHeight;
dwWidth = rect.right-rect.left;
dwHeight = rect.bottom - rect.top;
/* RECT rcWork;
RECT rc;
DWORD dwstyle;
// If we are still a WS_POPUP window we should convert to a normal app
// window so we look like a windows app.
dwstyle = GetWindowstyle( hWnd );
dwstyle &= ~WS_POPUP;
dwstyle |= WS_OVERLAPPED | WS_CAPTION | WS_THICKframe | WS_MINIMIZEBOX;
SetWindowLong( hWnd GWL_style dwstyle );
// Aet window size
SetRect( &rc 0 0 dwWidth dwHeight );
AdjustWindowRectEx( &rc GetWindowstyle(hWnd) GetMenu(hWnd) != NULL
GetWindowExstyle(hWnd) );
SetWindowPos( hWnd NULL 0 0 rc.right-rc.left rc.bottom-rc.top
SWP_NOMOVE | SWP_NOZORDER | SWP_NOACTIVATE );
SetWindowPos( hWnd HWND_NOTOPMOST 0 0 0 0
SWP_NOSIZE | SWP_NOMOVE | SWP_NOACTIVATE );
// Make sure our window does not hang outside of the work area
SystemParametersInfo( SPI_GETWORKAREA 0 &rcWork 0 );
GetWindowRect( hWnd &rc );
if( rc.left < rcWork.left ) rc.left = rcWork.left;
if( rc.top < rcWork.top ) rc.top = rcWork.top;
SetWindowPos( hWnd NULL rc.left rc.top 0 0
SWP_NOSIZE | SWP_NOZORDER | SWP_NOACTIVATE );
*/
GetWindowRect( hWnd &m_rcWindow );
LPDIRECTDRAWCLIPPER pcClipper;
// Create the primary surface
DDSURFACEDESC2 ddsd;
ZeroMemory( &ddsd sizeof( ddsd ) );
ddsd.dwSize = sizeof( ddsd );
ddsd.dwFlags = DDSD_CAPS;
ddsd.ddsCaps.dwCaps = DDSCAPS_PRIMARYSURFACE;
if( FAILED( m_pDD->CreateSurface( &ddsd &m_pddsFrontBuffer NULL ) ) )
return E_FAIL;
if( FAILED( hr = m_pDD->CreateClipper( 0 &pcClipper NULL ) ) )
return E_FAIL;
if( FAILED(
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 7995 2014-03-10 15:46 yuvdisplay.cpp
文件 904 2014-03-10 15:46 yuvdisplay.h
文件 13969 2014-03-10 15:46 DDrawData.cpp
文件 2169 2014-03-10 15:46 DDrawData.h
文件 6431 2014-10-21 09:49 DecoderRtp.cpp
文件 1073 2014-10-21 09:49 DecoderRtp.h
----------- --------- ---------- ----- ----
32541 6
- 上一篇:大漠插件 开源代码
- 下一篇:[中文和英文版]线性代数应该这样学
相关资源
- 最新版MinGW + yasm + ffmpeg编译环境大全
- FFmpeg+qt实现的播放器工程
- ffmpeg64库
- ffmpeg-4.3.1-full_build
- FFmpege编译源码静态库
- H264测试文件 1080P2分30秒和720P1分45秒
- nginx-flv部署和安装.zip
- FFMpeg资源
- ffmpeg+nginx+nginx-rtmp-module搭建个人直播
- ffmpeg 直播推流
- 编译opencv3.1需要的opencv_ffmpeg_64.dll-o
- 4.2.3_ffmpeg-release-amd64-static.tar_2.xz
- ffmpeg 采集摄像机流(rtsp)后推流(
- handbrake -- ffmpeg 图形化工具
- opencv_ffmpeg_64.dll
- opencv_ffmpeg.dll
-
ijkpla
yer全格式支持HTTPS支持so包 - webcam(含有编译好的ffmpegx264z库)
- FFmpegTestDemo
- 使用DirectShow采集桌面、语音并实时进
- 使用jrtplib发送和接收的--PlayStream V1
- FFMPEG实现RTSP中数据流解码 并且实时播
- opencv3编译需要的opencv_ffmpeg_64.dll
-
VideoPla
yer_5(FFMPEG Qt视频播放器之播 - ffmpeg安装包
- 基于FFmpegQt的视频播放器完整源码.r
- ffmpeg3.2.4_Win32开发库文件
- 利用ffmpeg将H264裸流文件封装为MP4文件
- VS2013+OSG 下编译好的ffmpeg插件
- 从零开始学习音视频编程技术二十二
评论
共有 条评论