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

网站开发可行性分析济南网站seo 优帮云

网站开发可行性分析,济南网站seo 优帮云,国内wordpress博客,wordpress批量增加用户在开始之前#xff0c;我们需要了解视频文件的格式。视频文件的格式众多#xff0c;无法三言两语就能详细分析其结构#xff0c;尽管如此#xff0c;ffmpeg却很好地提取了各类视频文件的共同特性#xff0c;并对其进行了抽象描述。 视频文件格式#xff0c;统称为contain…在开始之前我们需要了解视频文件的格式。视频文件的格式众多无法三言两语就能详细分析其结构尽管如此ffmpeg却很好地提取了各类视频文件的共同特性并对其进行了抽象描述。 视频文件格式统称为container。它包含一个描述视频信息的头部以及内含实际的音视频编码数据的packets。当然这里的头部以及packet部分只是个抽象描述实际的视频格式的描述信息可能不是存放在视频文件的起始位置可能是由分散于视频文件的各个位置的多个部分组成数据包有可能是由头部以及尾部进行分割的传统数据包形式也有可能是一大块数据区域由索引进行各个数据包的分割。 视频文件中的packets最主要的就是视频以及音频packetsdemux的过程就是解析container的header来获取视频信息所得到的视频信息能帮助我们区分packet是音频或者视频。同样属性的packets会被称为stream。 packet中存储的数据就是音视频编码后的数据通过解码器进行decode后就能得到视频图像或者音频帧。其中需要注意的一点是一个packet不一定对应一帧packet的顺序也不一定是实际的播放顺序而通过ffmpeg解码出来的frame的顺序就是实际的播放顺序。   Demux 首先需要一个用于存储视频文件信息的结构体。 pFormatCtx avformat_alloc_context();   读取视频文件并对该文件进行demux所得到的视频信息存储于刚刚所构建的结构体当中 if(avformat_open_input(pFormatCtx, argv[1], NULL, NULL)!0){fprintf(stderr, open input failed\n);return -1;} 如果pFormatCtxNULL那么avformat_open_input也能自动为pFormatCtx分配存储空间。   对于有些视频格式单单通过demux并不能获得所有的视频信息为了获得这些信息还需要读取并尝试解码该视频几个最前端packets通常会解码每个stream第一个packet。所读取的这几个packets会被缓存以供后续处理。 if(avformat_find_stream_info(pFormatCtx, NULL)0){fprintf(stderr, find stream info failed\n);return -1;}   从所获得的信息当中得到video stream序号后续可以通过stream序号来对packet进行筛选。 videoStream av_find_best_stream(pFormatCtx, AVMEDIA_TYPE_VIDEO, -1, -1, NULL, 0);     Decode 创建一个用于存储以及维护解码信息结构体。 pCodecCtx avcodec_alloc_context3(NULL);   把demux时所获得的视频相关信息传递到解码结构体中。 if(avcodec_parameters_to_context(pCodecCtx, pFormatCtx-streams[videoStream]-codecpar)0){fprintf(stderr, copy param from format context to codec context failed\n);return -1;}   根据解码器id来寻找对应的解码器 pCodec avcodec_find_decoder(pCodecCtx-codec_id);if(pCodecNULL){fprintf(stderr, Unsupported codec,codec id %d\n, pCodecCtx-codec_id);return -1;}else{fprintf(stdout, codec id is %d\n, pCodecCtx-codec_id);}   打开该解码器主要目的是对解码器进行初始化 if(avcodec_open2(pCodecCtx, pCodec, NULL)0){fprintf(stderr, open codec failed\n);return -1;}   创建一个用于维护所读取的packet的结构体一个用于维护解码所得的frame的结构体 pPacket av_packet_alloc();pFrame av_frame_alloc();if(pFrame NULL||pPacket NULL){fprintf(stderr, cannot get buffer of frame or packet\n);return -1;}   从视频文件中读取packet如果所读取的packet是video则进行解码解码所得的帧由pFrame进行维护。当然并不是每次调用avcodec_decode_video2都会返回一帧因为也可能会有需要多个packet才能解码出一帧的情况因此只有当指示一帧是否解码完成的frameFinished为1才能对这一帧进行后续处理。 while(av_read_frame(pFormatCtx, pPacket)0){//Only deal with the video stream of the type videoStreamif(pPacket-stream_indexvideoStream){//Decode video frameavcodec_decode_video2(pCodecCtx, pFrame, frameFinished, pPacket);//fprintf(stdout, Frame : %d ,pts%lld, timebase%lf\n, i, pFrame-pts, av_q2d(pFormatCtx-streams[videoStream]-time_base));if(frameFinished){if(iSTART_FRAME iEND_FRAME){SaveFrame2YUV(pFrame, pCodecCtx-width, pCodecCtx-height, i);i;}else{i;continue;}}}av_packet_unref(pPacket);} 当一个packet被解码后就可以调用av_packet_unref来释放该packet所占用的空间了。     Store 视频文件解码出来后通常都是YUV格式Y、U、V三路分量分别存储在AVFrame的data[0]、data[1]、data[2]所指向的内存区域。linesize[0]、linesize[1]、linesize[2]分别指示了Y、U、V一行所占用的字节数。下面把解码所得的帧保存为YUV Planar格式。 void SaveFrame2YUV(AVFrame *pFrame, int width, int height, int iFrame){static FILE *pFile;char szFilename[32];int y;//Open fileif(iFrameSTART_FRAME){sprintf(szFilename, Video.yuv);pFile fopen(szFilename, wb);if(pFileNULL)return;}//Write YUV Data, Only support YUV420//Yfor(y0; yheight; y){fwrite(pFrame-data[0]y*pFrame-linesize[0], 1, pFrame-linesize[0], pFile);}//Ufor(y0; y(height1)/2; y){fwrite(pFrame-data[1]y*pFrame-linesize[1], 1, pFrame-linesize[1], pFile);}//Vfor(y0; y(height1)/2; y){fwrite(pFrame-data[2]y*pFrame-linesize[2], 1, pFrame-linesize[2], pFile);}//Close FIleif(iFrameEND_FRAME){fclose(pFile);} }     最后就是释放内存关闭decoder关闭demuxer av_free(pPacket);av_free(pFrame);avcodec_close(pCodecCtx);avformat_close_input(pFormatCtx);转载于:https://www.cnblogs.com/TaigaCon/p/9603854.html
http://www.yutouwan.com/news/495435/

相关文章:

  • 破解网站后台密码有人做吗著名的wordpress网站
  • 网站app在线制作网站技术支持是什么
  • 英文网站推荐太原企业网站seo
  • 网站地图生成代码在百度备案网站
  • 北京公司响应式网站建设价位做网站的linux程序代码
  • 学做糕点的网站苏州网站搜索排名
  • 镇江网站建设推广上海工商信息查询网
  • 张家口网站设计网站建设背景和目标
  • 上海旅游网站建设建设企业网银如何对账
  • 做一般的网站要多久建设什么网站比较好
  • 什么网站专做外贸创建一个数据库wordpress
  • 做一下网站收购废钢php网站服务器配置
  • 西安网站优化效果前端静态资源如何部署到cdn上
  • 杭州外贸网站多少钱公司的研究与开发
  • 重庆集团网站建设手机网站制作电话
  • 网站后台添加查看爬虫的痕迹wordpress 迁移 步骤
  • 骨干校 建设网站对中国建设银行网站的优点
  • 学习网站建设的书郑州百姓网征婚交友
  • 网站做管制户外刀具遵义网站建设公司
  • 莱芜企业网站建设公司wordpress响应时间
  • 做网站是前端还是后端10G网站空间
  • 思途建站网站效果图设计方案
  • 做网站做系统一样么网站策划的基本过程
  • 建站平台软件域名查询网ip
  • 做微信请帖网站优化wordpress访问速度
  • 秒收录网站类豆瓣的模板wordpress
  • 教育网站制作主题id或类的名称wordpress
  • app开发制作英文seo实战派
  • 积极加强网站建设西安做网站比较好的公司
  • 韩国教做发饰的网站服务好的高端网站建设