当前位置: 首页 > news >正文

手机网站 英文php网站源码架构

手机网站 英文,php网站源码架构,立水桥网站建设,扬中网站前言 参考了雷神的自制播放器项目#xff0c;100行代码实现最简单的基于FFMPEGSDL的视频播放器#xff08;SDL1.x#xff09; 不过老版本的代码参考意义不大了#xff0c;我现在准备使用Qt VS2022 FFmpeg59重写这部分代码#xff0c;具体的代码仓库如下#xff1a; …前言 参考了雷神的自制播放器项目100行代码实现最简单的基于FFMPEGSDL的视频播放器SDL1.x 不过老版本的代码参考意义不大了我现在准备使用Qt VS2022 FFmpeg59重写这部分代码具体的代码仓库如下 LeventureQys/MediaPlay-FFmpeg 开发环境 Visual Studio 2022 Qt 5.14.2 FFmpeg 59 本文任务 调通编译环境打印协议支持信息、AVFormat信息、AVCodec 支持信息、AVFilter信息、配置信息等提供一个通用的调试框架 流程 1. 开发环境准备 首先我们Visual Studio 2022 qt是准备好的这里不做过多介绍了。 这里简单说说我在做这一块的时候为什么没有选择用雷神已经写好的代码和库来进行开发因为老版ffmpeg对新的项目支持比较差而且是32位的不兼容64位的qt而且老版本的c兼容对新版的编译器有很多问题所以我在多次尝试没法正常使用VS 2022 qt完成雷神的代码编译之后就放弃了准备用新版的ffmpeg来进行一些编写而且实际上新版的接口更合理不过有一些改动需要稍微查一下。总的来说流程是一回事。 下载FFmpeg的build : FFmpeg-Builds - Public 压缩包里的内容如下 其中include是头文件lib是链接文件bin是dll文件 具体链接和include这里就不谈了很简单随便配配就行了 2. 具体代码 在导入头文件的时候需要注意是以这种形式导入 下面的#pragma comment (lib, “”) 是选配的你可以在代码中写也可以在工程中预备配置好 需要注意的是新版本的迭代器和老版本的不太一样现在这个是自制了一个void*类型来作为迭代器使用的所以需要注意 //Windows extern C { #include libavcodec/avcodec.h #include libavformat/avformat.h #include libavfilter/avfilter.h };extern C { #pragma comment (lib, Ws2_32.lib) #pragma comment (lib, avcodec.lib) #pragma comment (lib, avdevice.lib) #pragma comment (lib, avfilter.lib) #pragma comment (lib, avformat.lib) #pragma comment (lib, avutil.lib) #pragma comment (lib, swresample.lib) #pragma comment (lib, swscale.lib) };我这里做了一个BaseInfos类内容就是返回这几个特定信息的QString内容如下 BaseInfo.h #pragma once#include QObject /// summary /// 这个类用于获得所有的ffmpeg信息 /// /summary /// #include PublicHeader.h //FIX struct URLProtocol;class BaseInfos : public QObject {Q_OBJECTpublic:BaseInfos(QObject* parent nullptr);/// summary/// 协议支持信息/// /summary/// returns输入内容和输出内容/returnsQString getProtocolInfo();/// summary/// 获得AVFormat信息/// /summary/// returns/returnsQString getAVFormatInfo();/// summary/// 获得AVCodec 支持信息/// /summary/// returns/returnsQString getAVCodedInfo();/// summary/// 获得AVFilter信息/// /summary/// returns/returnsQString getAVFilterInfo();/// summary/// 获得配置信息/// /summary/// returns/returnsQString getConfigurationInfo(); ~BaseInfos(); }; BaseInfos.cpp #include BaseInfos.hBaseInfos::BaseInfos(QObject* parent): QObject(parent) {}QString BaseInfos::getProtocolInfo() {//初始化一个info字符串char info[10000] { 0 };avformat_network_init();struct URLProtocol* pup nullptr;//inputstruct URLProtocol** p_temp pup;avio_enum_protocols((void**)p_temp, 0);while ((*p_temp) ! nullptr) {sprintf(info, %s[ProtocolInfo - In ][%10s]\n, info, avio_enum_protocols((void**)p_temp, 0));}pup nullptr;//outputavio_enum_protocols((void**)p_temp, 1);while ((*p_temp) ! nullptr) {sprintf(info, %s[ProtocolInfo - Out][%10s]\n, info, avio_enum_protocols((void**)p_temp, 1));}QString ret QString::fromUtf8(info, 10000);return ret; }QString BaseInfos::getAVFormatInfo() {// 初始化一个info字符串char info[10000] { 0 };avformat_network_init();const AVInputFormat* input_format nullptr;const AVOutputFormat* output_format nullptr;// 输入while ((input_format av_demuxer_iterate((void**)input_format)) ! nullptr) {sprintf(info, %s[getAVFormatInfo - In ] %10s\n, info, input_format-name);}// 输出while ((output_format av_muxer_iterate((void**)output_format)) ! nullptr) {sprintf(info, %s[getAVFormatInfo- Out] %10s\n, info, output_format-name);}QString ret QString::fromUtf8(info, 10000);return ret;}QString BaseInfos::getAVCodedInfo() {char info[50000] { 0 };avformat_network_init();const AVCodec* codec_temp nullptr;void* opaque nullptr;codec_temp av_codec_iterate(opaque);while ((codec_temp av_codec_iterate(opaque)) ! nullptr) {const AVCodec* decoder avcodec_find_decoder(codec_temp-id);if (decoder ! nullptr) {sprintf(info, %s[getAVCodedInfo -Dec], info);}else {sprintf(info, %s[getAVCodedInfo - Enc], info);}switch (codec_temp-type) {case AVMEDIA_TYPE_VIDEO: {sprintf(info, %s[getAVCodedInfo - Video], info);break;}case AVMEDIA_TYPE_AUDIO: {sprintf(info, %s[getAVCodedInfo - Audio], info);break;}default: {sprintf(info, %s[getAVCodedInfo - Other], info);break;}}}return QString::fromUtf8(info,50000);}QString BaseInfos::getAVFilterInfo() {char info[10000] { 0 };avformat_network_init();const AVFilter* filter nullptr;void* opaque nullptr;filter av_filter_iterate(opaque);while ((filter av_filter_iterate(opaque)) ! nullptr) {sprintf(info, %s[%10s]\n, info, filter-name);}QString ret QString::fromUtf8(info);return ret; }QString BaseInfos::getConfigurationInfo() {char info[10000] { 0 };avformat_network_init();sprintf(info, %s\n, avcodec_configuration());return QString::fromUtf8(info); }BaseInfos::~BaseInfos() {} 3.效果
http://www.w-s-a.com/news/892431/

相关文章:

  • 怎么做学校网站做兼职工作上哪个网站招聘
  • 软件下载网站哪个比较好杭州开发小程序
  • 做网站都用什么技术学做名片的网站
  • 备案网站忘记密码乐装网
  • 电商扶贫网站建设淄博网站建设小程序
  • 网站群建设代理丰城网站建设公司
  • 青岛网站建设服务器wordpress迁移跳转原网站
  • 泰安网站建设哪里有公司如何注册网站
  • 做网站开专票税钱是多少个点上海市有哪些公司
  • 寿县有做网站开发的吗宁波网站建设方式
  • 网站建设和网站推广服务器怎么发布网站
  • 比较好的摄影网站雅安市政建设公司网站
  • 网站与微信区别wordpress 站内信
  • 宁夏网站开发设计说明书源码下载脚本之家
  • 邱县做网站百度搜索排名机制
  • 运城个人网站建设智慧团建系统官方网站登录
  • 公司营业执照可以做几个网站一家专门做母婴的网站
  • 网站建设商标属于哪个类别搜狗seo快速排名公司
  • 织梦做商城网站企业网络建站
  • 网站后期维护都有什么wordpress首页加图片
  • 展会网站怎么做网页设计与制作教程版徐洪亮课后答案
  • 石景山网站建设设计公司建设网站怎么建立服务器
  • 本地生活服务平台app网站关键词优化原理
  • 建网站的公司叫什么重庆论坛建站模板
  • 湖北网站制作公司银川网站建设哪家不错
  • 网站后台演示地址服装网站建设公司推荐
  • 湖北钟祥建设局网站旅游哪个网站最好
  • 浙江建设工程信息网站辽宁建设工程信息网场内业绩什么意思
  • 郑州做网站公司 汉狮网络专业图片搜集网站怎么做
  • 网站托管是什么品牌推广营销平台