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

php网站开发套模板步骤个人公众号开发php

php网站开发套模板步骤,个人公众号开发php,用微信小程序赚100万,推广自己产品的文案前言 参考了雷神的自制播放器项目#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.ho-use.cn/article/10813852.html

相关文章:

  • 生成flash的网站源码广州建立网站的公司网站
  • 织梦资源下载站网站模板杭州比较好的景观设计公司
  • 湛江网站建设皆选小罗24专业免费游戏不用登录直接玩
  • 怎么查询网站是哪家公司做的wordpress修改发帖时间
  • 个人网站每年要多少钱织梦网站模版下载
  • 查询企业信息的官方网站长沙装修公司哪家好
  • 旅游网站的建设现状苏州市城乡建设局网站首页
  • 怎么在自己做网站网站安全建设架构
  • 商品网站建设实验报告子域名查询工具
  • 成都网站优化常识总部在上海的世界500强企业
  • 创建网站快捷方式到桌面oa办公管理系统哪个好
  • 怎么做相册的网站网站建设价格套餐
  • 阿里云个人网站制作湛江网站建设方案报价
  • 新乡高端网站建设北京seo教师
  • 天津建站模板网站模板展示
  • 网站开发维护求职信淘宝电子网站建设论文
  • 合适的网站建设明细报价表wordpress官方空间
  • 内蒙古网站建设熊掌号wordpress 伪静态500
  • 濮阳免费网站制作中国建筑工程网施工资料
  • 部门网站建设管理报告提供商城网站
  • 浅谈学校网站建设一个可以做行程的网站
  • 搜房网网站跳出率临沧网站建设公司招聘
  • 鹿泉城乡建设局网站网站单子
  • 中小学建设网站同一人可以做几个网站的负责人
  • 军博网站建设怎么用小程序做微网站
  • 龙城网站建设网站建设的现状分析
  • 十万pv的网站建设北京托管网站
  • 建设网站和推广知名网站开发公司
  • 包头市建设厅官方网站吉林市网站建设招标
  • 完成一份网站建设前期规划方案网站和微信公众号建设方案