资源简介
基于arm9的远程视频监控系统,使用Qt编写客户端和服务器端,客户端可实现视频保存功能。服务器端运行于移植有linux内核的MINI2440上,客户端运行于PC上,服务器端将采集到的视频数据发送到客户端,客户端实现对视频的显示和保存等功能。
代码片段和文件信息
#include “ffmpegthread.h“
#include
#include
#include
#include
#include
#include
#include
extern bool stopSave;
extern bool ifNew;
extern unsigned char r[320*240];
extern unsigned char g[320*240];
extern unsigned char b[320*240];
ffmpegthread::ffmpegthread(Qobject *parent) :
QThread(parent)
{
// sws_flags = SWS_BICUBIC;
fillTimes = 0;
time(&t);
local_time = localtime(&t);
datetime = new QDateTime;
}
/*使用默任格式的编解码器来增加一个视频流并初始化编解码器*/
AVStream * ffmpegthread::add_video_stream(AVFormatContext *oc CodecID codec_id)
{
AVCodecContext *c;
AVStream *st;
/*增加一个新的流到一个媒体文件*/
st = av_new_stream(oc0);
/*初始化编解码器*/
c = st->codec;
c->codec_id = codec_id;
c->codec_type = AVMEDIA_TYPE_VIDEO;
/*put sample parameters*/
c->bit_rate = 400000; //400kbit/s
c->width = 320;
c->height = 240;
/*设置针率 该针率為25其实timebase = 1/framerate*/
c->time_base = (AVRational){15};
/*设置GOP大小 表示每10针会插入一个I针*/
c->gop_size = 10;
/*设置像素格式*/
c->pix_fmt = PIX_FMT_YUV420P;
if(c->codec_id == CODEC_ID_MPEG2VIDEO)
{
/*该值表示在两个非B针之间所允许插入的B针的最大针数*/
c->max_b_frames = 2;
}
if(c->codec_id == CODEC_ID_MPEG1VIDEO)
{
c->mb_decision = 2;
}
/*some formats want stream headers to be seperate*/
if(oc->oformat->flags & AVFMT_GLOBALHEADER)
c->flags |= CODEC_FLAG_GLOBAL_HEADER;
return st;
}
/*分配原始图像*/
AVframe *ffmpegthread::alloc_picture(enum PixelFormat pix_fmt int width int height)
{
AVframe *picture;
uint8_t *picture_buf;
int size = 0;
/*分配一个AVframe并设置默任值*/
picture = avcodec_alloc_frame();
if(!picture)
return NULL;
//by lzc
picture->format = pix_fmt;
picture->width = width;
picture->height = height;
picture->linesize[0] = width;
picture->linesize[1] = width/2;
picture->linesize[2] = width/2;
/*计算对于给定的图片格式以及宽和高所需占用多少内存*/
size = avpicture_get_size(pix_fmtwidthheight);
picture_buf = (uint8_t *)av_malloc(size);//分配所需内存
if(!picture_buf)
{
av_free(picture);
return NULL;
}
/*用 ptr 中的内容根据文件格式(YUV...)和分辨率填充 picture。这里由于是在初始
化阶段所以填充的可能全是零*/
avpicture_fill((AVPicture *)picturepicture_bufpix_fmtwidthheight); //这里输入换存针
return picture;
}
/*打开视频编解码器并分配必要的编码缓存 主要是对视频编码器(或解码器)的初始化过程*/
void ffmpegthread::open_video(AVFormatContext *oc AVStream *st)
{
AVCodec *codec;
AVCodecContext *c;
c = st->codec;
codec = avcodec_find_encoder(c->codec_id);//编码时找编码器
if(!codec)
{
fprintf(stderr“codec not found\n“);
}
/*open the codec*/
if(avcodec_open(ccodec) < 0)
{
fprintf(stderr“could not open codec\n“);
exit(1);
}
video_outbuf = NULL;
if(!(oc->oformat->flags & AVFMT_RAWPICTURE))
{
/*allocate output buffer*/
video_outbuf_size = 200000;
video_outbuf = (uint8_t *)
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2013-06-11 09:54 myclient\
文件 11140 2013-06-01 13:02 myclient\ffmpegthread.cpp
文件 2091 2013-06-01 13:02 myclient\ffmpegthread.h
文件 787 2013-06-07 18:17 myclient\login.cpp
文件 398 2013-06-07 18:04 myclient\login.h
文件 2811 2013-06-07 18:16 myclient\login.ui
文件 715 2013-06-07 18:14 myclient\main.cpp
文件 4427 2013-06-07 16:42 myclient\mainwindow.cpp
文件 836 2013-06-01 13:02 myclient\mainwindow.h
文件 5376 2013-06-07 16:38 myclient\mainwindow.ui
文件 589 2013-06-07 17:01 myclient\myclient.pro
文件 16608 2013-06-09 09:28 myclient\myclient.pro.user
文件 402 2013-06-03 09:56 myclient\timethread.cpp
文件 380 2013-06-01 10:19 myclient\timethread.h
目录 0 2013-06-11 09:54 myqtvideo\
文件 662 2013-05-16 20:45 myqtvideo\image.cpp
文件 355 2013-05-16 16:30 myqtvideo\image.h
文件 475 2013-06-07 18:19 myqtvideo\main.cpp
文件 2550 2013-06-01 17:42 myqtvideo\mainwindow.cpp
文件 804 2013-06-01 17:01 myqtvideo\mainwindow.h
文件 956 2013-06-01 17:42 myqtvideo\mainwindow.ui
文件 10058 2013-05-31 23:29 myqtvideo\Makefile
文件 491 2013-05-16 17:33 myqtvideo\myqtvideo.pro
文件 16611 2013-06-09 09:28 myqtvideo\myqtvideo.pro.user
文件 6042 2013-05-16 17:19 myqtvideo\v4l2.cpp
文件 866 2013-05-16 16:55 myqtvideo\v4l2.h
文件 57744 2013-10-26 12:55 图片1.png
文件 380185 2013-10-26 12:55 图片2.png
文件 1018278 2013-10-26 12:55 图片3.png
相关资源
- 基于QT的音乐播放器源代码及详细教程
- 有关Qt的二十篇中文论文
- 最简单的基于FFmpeg的封装格式转换器
- SDK播放器加速.zip
- 基于ffmpeg的经典版 ffplay 音视频播放
- ffmpeg api实现视频转码音视频
- 使用Qt编写的视频监控系统支持Qt4-Q
- 用QT读取Excel文件并将数据在界面上动
- QT使用Cypress FX3 USB库代码
- Qt 多线程连接数据库——数据库
- FFMPEG入门基础资料pdf
- MQTTv3.1中文版
- mt7628 mqtt功能 放到packet下面就可以使
- ffmpeg ffdoc (FFMPEG的最完整教程)
- Qt编写GIF录屏工具
- Qt实现PDF阅读器
- 使用Qt开发NFC应用.pdf
- MQTT-1.zip
- 海康相机SDK二次开发与Qt混合编程代码
- Qt和百度地图交互
- 第6章:Qtopia Core应用程序设计.ppt
- 基于Qt和mupdf的PDF阅读器
- QT桌面精灵
- ffmpeg转码为hls代码
- 基于Qt5.8+OpenCV3.2的Basler多相机触发开
- Qt之FTP客户端
- ffmpeg-4.0.2最新版 windows vs2013编译动态
- ffmpeg实现直播功能
- linuxubuntu下ffmpeg + alsa 的音频播放器
- 内存H264+PCM发布rtmp.rar
评论
共有 条评论