资源简介
FFmpeg解码+SDL播放
代码片段和文件信息
// FFmepg_SDL.cpp : 定义控制台应用程序的入口点。
//
#include “stdafx.h“
#ifdef __cplusplus
extern “C“
{
#endif
#include “include\libavformat\avformat.h“
#include “include\libavcodec\avcodec.h“
#include “include\libswscale\swscale.h“
#include “include\libavfilter\avfilter.h“
#include “include\libavdevice\avdevice.h“
#include “include\libavutil\avutil.h“
#include “include\sdl\SDL.h“
#include “include\sdl\SDL_thread.h“
#include
#include
#include
#include
#ifdef __cplusplus
}
#endif
int ffplay()
{
AVFormatContext *pFormatCtx;
int i videoindex;
AVCodecContext *pCodecCtx;
AVCodec *pCodec;
char rtspUrl[] = “rtsp://admin:admin@10.100.40.93:554/1/h264major“; //摄像机路径
avformat_network_init();//支持网络流
pFormatCtx = avformat_alloc_context();//初始化AVFormatContext
if (avformat_open_input(&pFormatCtx/*filepath*/rtspUrl NULL NULL) != 0){//打开文件或网络流
printf(“无法打开文件\n“);
return -1;
}
if (avformat_find_stream_info(pFormatCtx NULL)<0)//查找流信息
{
printf(“Couldn‘t find stream information.\n“);
return -1;
}
videoindex = -1;
for (i = 0; inb_streams; i++) //获取视频流ID
if (pFormatCtx->streams[i]->codec->codec_type == AVMEDIA_TYPE_VIDEO)
{
videoindex = i;
break;
}
if (videoindex == -1)
{
printf(“Didn‘t find a video stream.\n“);
return -1;
}
pCodecCtx = pFormatCtx->streams[videoindex]->codec;
pCodec = avcodec_find_decoder(pCodecCtx->codec_id);//查找解码器
if (pCodec == NULL)
{
printf(“Codec not found.\n“);
return -1;
}
if (avcodec_open2(pCodecCtx pCodec NULL)<0)//打开解码器
{
printf(“Could not open codec.\n“);
return -1;
}
AVframe *pframe *pframeYUV;
pframe = av_frame_alloc();//存储解码后AVframe
pframeYUV = av_frame_alloc();//存储转换后AVframe
uint8_t *out_buffer;
out_buffer = new uint8_t[avpicture_get_size(PIX_FMT_YUV420P pCodecCtx->width pCodecCtx->height)];//分配AVframe所需内存
avpicture_fill((AVPicture *)pframeYUV out_buffer PIX_FMT_YUV420P pCodecCtx->width pCodecCtx->height);//填充AVframe
//------------SDL初始化--------
if (SDL_Init(SDL_INIT_VIDEO | SDL_INIT_AUDIO | SDL_INIT_TIMER)) {
printf(“Could not initialize SDL - %s\n“ SDL_GetError());
return -1;
}
SDL_Window *screen = SDL_CreateWindow(“RTSP Client Demo“
SDL_WINDOWPOS_UNDEFINED
SDL_WINDOWPOS_UNDEFINED
pCodecCtx->width pCodecCtx->height
SDL_WINDOW_RESIZABLE/* SDL_WINDOW_HIDDEN*/ | SDL_WINDOW_OPENGL);
if (!screen) {
printf(“SDL: could not set video mode - exiting\n“);
return -1;
}
SDL_Renderer* sdlRenderer = SDL_CreateRenderer(screen -1 0);
SDL_Texture* sdlTexture = SDL_CreateTexture(
sdlRenderer
SDL_PIXELFORMAT_YV12
SDL_TEXTUREACCESS_STREAMING
pCodecCtx->width
pCodecCtx->height);
SDL_Rect rect;
//-----------------------------
int ret got_picture;
static struct SwsContext *img_convert_ctx;
int y_size = pCodecCtx->width * pCodecCtx->heigh
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2016-10-31 17:13 FFmepg_SDL\
目录 0 2016-10-28 13:32 FFmepg_SDL\Debug\
文件 39424 2016-10-28 15:09 FFmepg_SDL\Debug\FFmepg_SDL.exe
文件 302944 2016-10-28 15:09 FFmepg_SDL\Debug\FFmepg_SDL.ilk
文件 782336 2016-10-28 15:09 FFmepg_SDL\Debug\FFmepg_SDL.pdb
目录 0 2016-10-28 15:09 FFmepg_SDL\FFmepg_SDL\
文件 18936320 2014-05-06 10:08 FFmepg_SDL\FFmepg_SDL\avcodec-55.dll
文件 1340928 2014-05-06 10:08 FFmepg_SDL\FFmepg_SDL\avdevice-55.dll
文件 2034688 2014-05-06 10:08 FFmepg_SDL\FFmepg_SDL\avfilter-4.dll
文件 5342720 2014-05-06 10:08 FFmepg_SDL\FFmepg_SDL\avformat-55.dll
文件 418304 2014-05-06 10:08 FFmepg_SDL\FFmepg_SDL\avutil-52.dll
目录 0 2016-10-28 15:09 FFmepg_SDL\FFmepg_SDL\Debug\
文件 1642 2016-10-28 15:09 FFmepg_SDL\FFmepg_SDL\Debug\FFmepg_SDL.log
文件 29639 2016-10-28 15:09 FFmepg_SDL\FFmepg_SDL\Debug\FFmepg_SDL.obj
文件 1638400 2016-10-28 13:30 FFmepg_SDL\FFmepg_SDL\Debug\FFmepg_SDL.pch
目录 0 2016-10-28 15:09 FFmepg_SDL\FFmepg_SDL\Debug\FFmepg_SDL.tlog\
文件 1374 2016-10-28 15:09 FFmepg_SDL\FFmepg_SDL\Debug\FFmepg_SDL.tlog\cl.command.1.tlog
文件 15738 2016-10-28 15:09 FFmepg_SDL\FFmepg_SDL\Debug\FFmepg_SDL.tlog\CL.read.1.tlog
文件 862 2016-10-28 15:09 FFmepg_SDL\FFmepg_SDL\Debug\FFmepg_SDL.tlog\CL.write.1.tlog
文件 152 2016-10-28 15:09 FFmepg_SDL\FFmepg_SDL\Debug\FFmepg_SDL.tlog\FFmepg_SDL.lastbuildstate
文件 1432 2016-10-28 15:09 FFmepg_SDL\FFmepg_SDL\Debug\FFmepg_SDL.tlog\li
文件 3524 2016-10-28 15:09 FFmepg_SDL\FFmepg_SDL\Debug\FFmepg_SDL.tlog\li
文件 448 2016-10-28 15:09 FFmepg_SDL\FFmepg_SDL\Debug\FFmepg_SDL.tlog\li
文件 11344 2016-10-28 13:30 FFmepg_SDL\FFmepg_SDL\Debug\stdafx.obj
文件 330752 2016-10-28 15:09 FFmepg_SDL\FFmepg_SDL\Debug\vc120.idb
文件 241664 2016-10-28 15:09 FFmepg_SDL\FFmepg_SDL\Debug\vc120.pdb
文件 5101 2016-10-28 15:09 FFmepg_SDL\FFmepg_SDL\FFmepg_SDL.cpp
文件 4911 2016-10-28 13:31 FFmepg_SDL\FFmepg_SDL\FFmepg_SDL.vcxproj
文件 1317 2016-10-28 11:30 FFmepg_SDL\FFmepg_SDL\FFmepg_SDL.vcxproj.filters
目录 0 2016-10-28 11:31 FFmepg_SDL\FFmepg_SDL\include\
文件 5721 2012-05-23 20:03 FFmepg_SDL\FFmepg_SDL\include\inttypes.h
............此处省略184个文件信息
- 上一篇:精密单点定位
- 下一篇:全国“省地县乡村”五级行政区划地标
相关资源
- ffmpeg封装H264成MP4、AVI视频格式,及提
- 从零开始学习音视频编程技术十二 录
- AudioResample
- 最简单的基于FFmpeg的libswscale的教程
- ffmpeg-2.5.2-win32-shared
- 利用FFmpeg将mkv视频转换为H.264
- 安卓交叉编译ffmepgx86_64版本
- ffmepg的安卓arm(armeabi-v7a)版本
- 基于ARM9的远程视频监控系统
- 最简单的基于FFmpeg的封装格式转换器
- SDK播放器加速.zip
- 基于ffmpeg的经典版 ffplay 音视频播放
- ffmpeg api实现视频转码音视频
- 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
- IMX6SDLRM.pdf
- Onvif基于wsdl编译的客户端代码框架+自
- SDL游戏开发教程11扫雷游戏实现
- 适用于VC的FFMpeg静态库已编译)
- 使用ffmpeg api解码h264视频码流,并且能
- MP4v2录制rtsp流存为MP4文件
- 俄罗斯方块 SDL 版
评论
共有 条评论