SDL播放YUV格式视频
代码 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879#include "sdlqtrgb.h"#include <sdl/SDL.h>#include <QMessageBox>#include <iostream>#include <fstream>#pragma comment(lib, "SDL2.lib")static int sdl_width = 0;static int sdl_height = 0;static SDL_Window* sdl_win = nullptr;static SDL_Renderer* sdl_render = nullptr;static SDL_Texture* sdl_texture =...
使用SDL将两幅图片合并
代码 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115#include "sdlqtrgb.h"#include <sdl/SDL.h>#include <QMessageBox>#include <iostream>#pragma comment(lib, "SDL2.lib")static int sdl_width = 0;static int sdl_height = 0;static SDL_Window* sdl_win = nullptr;static...
使用SDL进行RGB渲染
代码 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091#include "sdlqtrgb.h"#include <sdl/SDL.h>#include <iostream>#pragma comment(lib, "SDL2.lib")static int sdl_width = 0;static int sdl_height = 0;static SDL_Window* sdl_win = nullptr;static SDL_Renderer* sdl_render = nullptr;static SDL_Texture* sdl_texture = nullptr;static unsigned char*...
ffmpeg 搜索栏
项目地址。 XVideoView。 XVideoView是XSDL的基类。 XVideoView作用: 将传入的AVCodecParameters交给XSDL,用于处理sdl初始化 读取每一帧的数据 将传入的文件打开 根据传入的参数,返回XVideoView类,默认为XSDL 计算 fps,根据 format 进行绘制,Draw () 函数在基类 XSDL...
XViewer Project
main.cpp 作为Qt的启动函数,通过创建XViewer对象。 然后调用show()函数在屏幕上进行显示。 接着调用exec()函数,启动Qt的循环事件,此时程序可以处理用户输入的一些请求。 12345678910int main(int argc, char *argv[]){ QApplication a(argc, argv); XViewer w; w.show(); auto re = a.exec(); // xr.Stop(); return re;} xviewer xviewer.h 用于第一个Qt创建的对象,可以通过自定义函数进行一些关于界面事件的处理。 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566#pragma once#include <QtWidgets/QWidget>#include...
XDemuxTask
XDemuxTask.h 123456789101112131415161718192021222324252627282930313233343536373839404142#pragma once#include "xtools.h"#include "xdemux.h"enum XSYN_TYPE{ XSYN_NONE = 0, // 不做同步 XSYN_VIDEO = 1, // 根据视频同步,不处理音频};class XDemuxTask : public XThread{public: void Main(); // 打开解封装 // url: rtsp地址 // timeout_ms:超时时间 单位毫秒 bool Open(std::string url, int timeout_ms = 1000); // 复制视频参数 std::shared_ptr<XPara> CopyVideoPara() { return...
XDemux
XDemux.h 1234567891011121314151617#pragma once#include "xformat.h"class XDemux : public XFormat{public: // 打开解封装 解封装地址支持rtsp 失败返回nullptr static AVFormatContext *Open(const char *url); // 读取一帧数据 // pkt: 输出数据 // return 是否成功 bool Read(AVPacket *pkt); bool Seek(long long pts, int stream_index);}; XDemux.cpp 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768#include "xdemux.h"#include...
XDecodeTask
XDecodeTask.h 12345678910111213141516171819202122232425262728#pragma once#include "xtools.h"#include "xdecode.h"#include "xcodec.h"class XDecodeTask : public XThread{public: // 打开解码器 bool Open(AVCodecParameters *para); // 责任链处理函数 void Do(AVPacket *pkt) override; // 线程主函数 void Main() override; // 线程安全,返回当前需要渲染的AVFrame,如果没有返回nullptr // need_view_控制渲染 // 返回结果需要用 XFreeFrame释放 AVFrame *GetFrame();private: std::mutex mux_; XDecode decode_; XAVPacketList...
XMuxTask
XMuxTask.h 12345678910111213141516171819202122232425#pragma once#include "xtools.h"#include "xmux.h"class XMuxTask : public XThread{public: void Main() override; bool Open(const char *url, AVCodecParameters *video_para = nullptr, AVRational *video_time_base = nullptr, AVCodecParameters *audio_para = nullptr, AVRational *audio_time_base = nullptr ); void Do(AVPacket *pkt);private: XMux xmux_; XAVPacketList pkts_; // 一个线程安全的 AVPacket 列表,用于存储接收到的数据包。 std::mutex...
XTools
XTools.h 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105#pragma once#include <thread>#include <iostream>#include <mutex>#include <list>struct AVPacket;struct AVCodecParameters;struct AVRational;struct AVFrame;enum XLogLevel{ XLOG_TYPE_DEBUG, XLOG_TYPE_INFO, XLOG_TYPE_ERROR, XLOG_TYPE_FATAL};#define...