淮南微信网站建设大数据营销案例有哪些

web/2025/10/6 8:55:47/文章来源:
淮南微信网站建设,大数据营销案例有哪些,wordpress 创建相册,有域名有空间怎么做网站文章目录 1.FFMPEG利用命令行将mp4转yuv4202.ffmpeg将mp4解析为yuv数据2.1 核心api: 3.SDL2进行yuv绘制到屏幕3.1 核心api 4.完整代码5.效果展示 本项目采用生产者消费者模型#xff0c;生产者线程#xff1a;使用ffmpeg将mp4格式数据解析为yuv的帧#xff0c;消费者线程生产者线程使用ffmpeg将mp4格式数据解析为yuv的帧消费者线程利用sdl2将解析的yuv的帧进行消费绘制到屏幕上。未完成的部分1.解析音频数据并与视频数据同步。2.增加界面暂停播放按钮支持视频前进和后退。 学习音视频的参考资料与项目 playdemo_github 雷神的csdn博客 1.FFMPEG利用命令行将mp4转yuv420 ffmpeg -i input.mp4 -c:v rawvideo -pix_fmt yuv420p output.yuv 2.ffmpeg将mp4解析为yuv数据 2.1 核心api: av_read_frame:读取一帧数据avcodec_send_packet:将数据包发送给解码器avcodec_receive_frame:将数据包从解码器中取sws_scale:格式转换将解码后的帧数据转为yuv数据存储在data[0],data[1],data[2]中 void readFrame() {AVPacket* avPacket av_packet_alloc();AVFrame* frame av_frame_alloc();FILE* fp fopen(F:/VS_Project/ffmpeg_demo/yuv.data,wb) ;while (av_read_frame(formatContext, avPacket) 0 fp){if (avPacket-stream_index videoStreamIndex){if (avcodec_send_packet(codecContext, avPacket) 0) {std::cerr 发送数据包到解码器失败 std::endl;break;}/*解码*/int ret avcodec_receive_frame(codecContext, frame);printf(ret:%d\n, ret);if (ret 0){ret sws_scale(swsContext, frame-data, frame-linesize, 0, codecContext-height, yuvFrame-data, yuvFrame-linesize);printf(sws_scale ret%d\n, ret);std::lock_guardstd::mutexlck(mtx);isFinished false;memcpy(yuvBuf, yuvFrame-data[0], yuvFrame-width * yuvFrame-height);memcpy(yuvBuf yuvFrame-width * yuvFrame-height, yuvFrame-data[1], yuvFrame-width * yuvFrame-height / 4);memcpy(yuvBuf yuvFrame-width * yuvFrame-height*5/4, yuvFrame-data[2], yuvFrame-width * yuvFrame-height / 4);isFinished true;condvar.notify_one();//保存y分量//fwrite(yuvFrame-data[0], 1, yuvFrame-width * yuvFrame-height, fp);//保存uv分量//fwrite(yuvFrame-data[1], 1, yuvFrame-width * yuvFrame-height/4, fp);//fwrite(yuvFrame-data[2], 1, yuvFrame-width * yuvFrame-height / 4, fp);}}}fclose(fp);av_frame_unref(yuvFrame);av_packet_free(avPacket);av_frame_unref(frame); }3.SDL2进行yuv绘制到屏幕 3.1 核心api SDL_InitSDL_CreateWindowSDL_CreateRendererSDL_CreateTextureSDL_UpdateTextureSDL_RenderCopySDL_RenderPresentSDL_Delay:控制帧率 int sdl_display() {if (SDL_Init(SDL_INIT_VIDEO)) {printf(sdl init failed\n);return -1;}SDL_Window* window SDL_CreateWindow(sdl_demo, 200, 200, codecContext-width, codecContext-height, SDL_WINDOW_OPENGL | SDL_WINDOW_RESIZABLE);if (!window) {SDL_Quit();return -1;}SDL_Renderer* renderer SDL_CreateRenderer(window, -1, 0);if (!renderer){SDL_DestroyWindow(window);SDL_Quit();return -1;}SDL_SetRenderDrawColor(renderer, 0, 0, 0, 255);SDL_RenderClear(renderer);Uint32 pixformat SDL_PIXELFORMAT_IYUV;SDL_Texture* sdlTexture SDL_CreateTexture(renderer, pixformat, SDL_TEXTUREACCESS_STREAMING, codecContext-width, codecContext-height);//FILE* fp fopen(F:/VS_Project/ffmpeg_demo/yuv.data, rb);while (1) {//int ret fread(yuvBuf, 1, yuvlen, fp);//if (ret 0) {// break;//}std::unique_lockstd::mutexlck(mtx);if (condvar.wait_for(lck, std::chrono::seconds(1), [] {return isFinished;})){isFinished false;SDL_UpdateTexture(sdlTexture, NULL, yuvBuf, codecContext-width);SDL_RenderCopy(renderer, sdlTexture, NULL, NULL);SDL_RenderPresent(renderer);//控制帧率25fpsSDL_Delay(40);}else {printf(sdl thread exit!\n);break;}}SDL_Quit();return 0; }4.完整代码 -使用两个线程生产者消费者模型 #include stdio.h #include stdlib.h #include stdbool.h #include stdexcept #include iostream #include string #include thread #include fstream#include mutex #include condition_variable extern C { #include libavcodec/avcodec.h #include libavformat/avformat.h #include libavutil/avutil.h #include libswscale/swscale.h#include SDL.h } #undef main #pragma warning(disable:4996) AVFormatContext* formatContext nullptr; AVCodecContext* codecContext nullptr; SwsContext* swsContext nullptr; int videoStreamIndex -1; AVFrame* yuvFrame; unsigned char* yuvBuf; bool isReady false; bool isFinished false;std::mutex mtx; std::condition_variable condvar; void readFrame() {AVPacket* avPacket av_packet_alloc();AVFrame* frame av_frame_alloc();FILE* fp fopen(F:/VS_Project/ffmpeg_demo/yuv.data,wb) ;while (av_read_frame(formatContext, avPacket) 0 fp){if (avPacket-stream_index videoStreamIndex){if (avcodec_send_packet(codecContext, avPacket) 0) {std::cerr 发送数据包到解码器失败 std::endl;break;}/*解码*/int ret avcodec_receive_frame(codecContext, frame);printf(ret:%d\n, ret);if (ret 0){ret sws_scale(swsContext, frame-data, frame-linesize, 0, codecContext-height, yuvFrame-data, yuvFrame-linesize);printf(sws_scale ret%d\n, ret);std::lock_guardstd::mutexlck(mtx);isFinished false;memcpy(yuvBuf, yuvFrame-data[0], yuvFrame-width * yuvFrame-height);memcpy(yuvBuf yuvFrame-width * yuvFrame-height, yuvFrame-data[1], yuvFrame-width * yuvFrame-height / 4);memcpy(yuvBuf yuvFrame-width * yuvFrame-height*5/4, yuvFrame-data[2], yuvFrame-width * yuvFrame-height / 4);isFinished true;condvar.notify_one();//保存y分量//fwrite(yuvFrame-data[0], 1, yuvFrame-width * yuvFrame-height, fp);//保存uv分量//fwrite(yuvFrame-data[1], 1, yuvFrame-width * yuvFrame-height/4, fp);//fwrite(yuvFrame-data[2], 1, yuvFrame-width * yuvFrame-height / 4, fp);}}}fclose(fp);av_frame_unref(yuvFrame);av_packet_free(avPacket);av_frame_unref(frame); }int sdl_display() {if (SDL_Init(SDL_INIT_VIDEO)) {printf(sdl init failed\n);return -1;}SDL_Window* window SDL_CreateWindow(sdl_demo, 200, 200, codecContext-width, codecContext-height, SDL_WINDOW_OPENGL | SDL_WINDOW_RESIZABLE);if (!window) {SDL_Quit();return -1;}SDL_Renderer* renderer SDL_CreateRenderer(window, -1, 0);if (!renderer){SDL_DestroyWindow(window);SDL_Quit();return -1;}SDL_SetRenderDrawColor(renderer, 0, 0, 0, 255);SDL_RenderClear(renderer);Uint32 pixformat SDL_PIXELFORMAT_IYUV;SDL_Texture* sdlTexture SDL_CreateTexture(renderer, pixformat, SDL_TEXTUREACCESS_STREAMING, codecContext-width, codecContext-height);//FILE* fp fopen(F:/VS_Project/ffmpeg_demo/yuv.data, rb);while (1) {//int ret fread(yuvBuf, 1, yuvlen, fp);//if (ret 0) {// break;//}std::unique_lockstd::mutexlck(mtx);if (condvar.wait_for(lck, std::chrono::seconds(1), [] {return isFinished;})){isFinished false;SDL_UpdateTexture(sdlTexture, NULL, yuvBuf, codecContext-width);SDL_RenderCopy(renderer, sdlTexture, NULL, NULL);SDL_RenderPresent(renderer);//控制帧率25fpsSDL_Delay(40);}else {printf(sdl thread exit!\n);break;}}SDL_Quit();return 0; }/*ffmpeg -i input.mp4 -c:v rawvideo -pix_fmt yuv420p output.yuv*/ int main(int argc, char* argv[]) {/*if (argc ! 2) {std::cerr 文件名未指定 std::endl;return -1;}*/std::string filename F:/VS_Project/ffmpeg_demo/1.mkv;if (avformat_open_input(formatContext, filename.c_str(), nullptr, nullptr) ! 0){std::cerr 无法打开文件 std::endl;return -1;}if (avformat_find_stream_info(formatContext, nullptr) 0) {std::cerr 无法找到视频流 std::endl;return -1;}for (int i 0; i formatContext-nb_streams; i){enum AVMediaType type AVMEDIA_TYPE_VIDEO;AVStream* st formatContext-streams[i];AVCodecParameters* codecpar st-codecpar;if (codecpar-codec_type type){videoStreamIndex i;const AVCodec* codec avcodec_find_decoder(codecpar-codec_id);codecContext avcodec_alloc_context3(codec);avcodec_parameters_to_context(codecContext, codecpar);avcodec_open2(codecContext, codec, nullptr);swsContext sws_getContext(codecContext-width, codecContext-height, codecContext-pix_fmt,codecContext-width, codecContext-height, AV_PIX_FMT_YUV420P,SWS_BILINEAR, nullptr, nullptr, nullptr);std::cout w: codecpar-width std::endl;std::cout h: codecpar-height std::endl;}}yuvFrame av_frame_alloc();yuvFrame-width codecContext-width;yuvFrame-height codecContext-height;yuvFrame-format AV_PIX_FMT_YUV420P;int yuvlen codecContext-width * codecContext-height * 3 / 2;yuvBuf new unsigned char[yuvlen];int ret av_frame_get_buffer(yuvFrame, 0);if (ret 0) {printf(分配缓冲区失败\n);return -1;}//sdl_init();std::thread th1(readFrame);std::thread th2(sdl_display);th1.join();th2.join();delete[]yuvBuf;return 0; } 5.效果展示

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/87823.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

网站建设制作设计优化汕头网站搜索优化

前言1111 FPGA调试需要抓取特定信号,一个直观的思路是:保存抓取的信号,事后分析/ 或者 导出实测数据,用作后续算法仿真验证。 本文简要记录数据的导出及读取。 一、信号导出 (1)把想要观测的信号线加入在线…

杭州高端网站设计深圳市营销型网站

点击右上方红色按钮关注“web秀”,让你真正秀起来前言在《Nodejs WebSocket简单介绍及示例 - 第一章》中简单的介绍了,Nodejs WebSocket的使用方法及作用,今天就用它来搭建一个简单的聊天室功能。1、NodejsWebSocket创建后台服务器功能 2、…

深圳专业优定软件网站建设怎样在网上注册公司

一、先下载引导程序 下载地址VS VisualStudio官网 在这个页面翻到最下面 在这里下载需要的版本 下载引导程序 二、下载离线安装包 写一个批处理文件&#xff08;vs.bat&#xff09; 命令格式如下 <vs引导程序exe> --layout <离线安装包下载的路径> --add <功能…

网站建设理论知识网站集约化建设的意义

在.net平台下&#xff0c;有大量的技术让你创建一个HTTP服务&#xff0c;像Web Service&#xff0c;WCF&#xff0c;现在又出了Web API。在.net平台下&#xff0c;你有很多的选择来构建一个HTTP Services。我分享一下我对Web Service、WCF以及Web API的看法。 Web Service 1、它…

网站背景修改网站春节放假

原标题&#xff1a;机房机柜尾纤布线图片 机房布线维护整理评价一个工人的机柜布线水平&#xff0c;总的来说还是主要看他打标签的熟练度、重视度、清晰度、整洁度。工具&#xff1a;理线夹&#xff0c;理线器&#xff0c;理线架&#xff0c;桥架固定器&#xff0c;线卡&#x…

可信网站认证哪里有忻州网站建设网站推广

进程的状态 进程状态反映进程执行过程的变化。这些状态随着进程的执行和外界条件的变化而转换。在三态模型中&#xff0c;进程状态分为三个基本状态&#xff0c;即运行态&#xff0c;就绪态&#xff0c;阻塞态。 一个进程从创建而产生至撤销而消亡的整个生命期间&#xff0c;…

网站开发培训实训手机网站备案

docker的资源控制 对容器使用宿主机的资源进行限制。 三种控制方向&#xff1a;CPU 内存 磁盘I/O docker使用linux自带的功能cgroup&#xff1b;control groups是linux内核系统提供的一种可以限制记录&#xff0c;隔离进程所使用的物理资源机制。 docker借助此…

广州高档网站建设wordpress 仪表盘界面

本文框架 1. 前言2.几个时间参数含义2.1 P2Client与P2Server2.2 P2*Client与P2*Server2.3 P3Client_Phys与P3Client_Func2.4 S3Client与S3Server 1. 前言 本系列Autosar 诊断入门介绍&#xff0c;会详细介绍诊断相关基础知识&#xff0c;如您对诊断实战有更高需求&#xff0c;…

南昌网站建设公司服务器克隆网站首页做单页站几个文件

基于SpringBoot的网上超市系统的设计与实现 开发语言&#xff1a;Java数据库&#xff1a;MySQL技术&#xff1a;SpringBootMyBatis工具&#xff1a;IDEA/Ecilpse、Navicat、Maven 【主要功能】 角色&#xff1a;用户、管理员 管理员&#xff1a;个人中心、用户管理、商品分类…

可以上传图片的公司网站网站内容要突出什么原因

区间预测 | Matlab实现LSTM-ABKDE长短期记忆神经网络自适应带宽核密度估计多变量回归区间预测 目录 区间预测 | Matlab实现LSTM-ABKDE长短期记忆神经网络自适应带宽核密度估计多变量回归区间预测效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.Matlab实现LSTM-ABKDE长…

建设网站的app虞城seo代理地址

简介 DQN&#xff0c;即深度Q网络&#xff08;Deep Q-network&#xff09;&#xff0c;是指基于深度学习的Q-Learing算法。Q-Learing算法维护一个Q-table&#xff0c;使用表格存储每个状态s下采取动作a获得的奖励&#xff0c;即状态-价值函数Q(s,a)&#xff0c;这种算法存在很…

铭做网站建设企业网站排名优化哪家好

立体井字棋 题目大意&#xff1a; 在一个nnn的正方体中&#xff0c;由n个格子连成一条直线的方案数&#xff08;多少种可能用n个格子连成一条直线&#xff09; 样例输入 2 样例输出 28 数据范围限制 对于30%的数据&#xff0c; n<10&#xff1b; 对于100%的数据&am…

自己开发电商网站难吗做企业网站需要的人

其实&#xff0c;在 HT for Web 中&#xff0c;有多种手段可以用来实现动画。我们这里仍然用直升机为例&#xff0c;只是更换了场景。增加了巡游过程。 使用 HT 开发的一个简单网页直升机巡逻动画&#xff08;Hightopo 使用心得&#xff08;5&#xff09;&#xff09; 这里主…

农用地转建设用地结果查询网站做dw网站图片怎么下载

如果要想知道确切的当前网站IIS连接数的话&#xff0c;最有效的方法是通过windows自带的系统监视器来查看。 一、运行-->输入“perfmon.msc”. 二、在“系统监视器”图表区域里点击右键&#xff0c;然后点“添加计数器”. 三、在“添加计数器”窗口&#xff0c;“性能对象”…

hdsyscms企业建站系统什么类型的网站流量高

A.Cover in Water 题意&#xff1a; 有一个 1 n 1 \times n 1n的水池&#xff0c;里面有些格子可以加水&#xff0c;有些格子是被堵上的&#xff0c;你可以进行以下两种操作&#xff1a; 1.往一个空的格子里加水 2.移除一个有水的格子中的水&#xff0c;并将这些水添加到另…

南京网站制作建设建设银行扬中网站

在高并发查询、查询需要涉及很多个分区的情况下&#xff0c;低版本的 glibc&#xff08;低于2.23&#xff09;会严重影响查询性能。需要升级 glibc 解决该问题优化性能。我们撰写了本文&#xff0c;通过 patchelf 工具修改可执行文件和动态库的 rpath&#xff0c;达到无需升级系…

设计网站musil怎么识别网站开发语言

引言&#xff1a; 前面贝蒂已经给大家介绍了选择&#xff0c;循环结构~&#xff0c;今天贝蒂就基于这两种结构&#xff0c;为大家讲解一种捣蛋小游戏的设计思路和方法哦。 1.游戏要求 游戏要求&#xff1a; 1. 电脑⾃动⽣成1~100的随机数 2. 玩家猜数字&#xff0c;猜数字的过…

asp.net 网站计数器广州深圳做网站

1每日温度 给定一个整数数组 temperatures &#xff0c;表示每天的温度&#xff0c;返回一个数组 answer &#xff0c;其中 answer[i] 是指对于第 i 天&#xff0c;下一个更高温度出现在几天后。如果气温在这之后都不会升高&#xff0c;请在该位置用 0 来代替。 示例 1: 输入…

网站备案 工信部建设网站建设哪里好

参考资料 正点原子《领航者 ZYNQ 之嵌入式 SDK 开发指南》详细的配置资料中都有介绍&#xff0c;本文只针对个人实验需求进行简要说明 固化流程 调试阶段是通过 JTAG 接口将 FPGA 配置文件和应用程序下载到 ZYNQ 器件中。但在实际应用中需要程序在上电或者复位时让程序自动运…

纹身网站设计wordpress上传课件

经观察&#xff0c;推拉转任务在两三天时间内就失效了。 1 用脚本每天定时启动一次 wvp docker 容器, 并关闭所有推拉转任务&#xff0c;建议每天凌晨2点运行 import subprocess import time import socket import requestsdef restart_container(container_name):subprocess…