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

网页编辑与网站编辑wordpress静态文件

网页编辑与网站编辑,wordpress静态文件,开发微信公众平台商城,成都建筑设计公司排名上一篇文章我们搭好了环境并编译出所需的ffmpeg库#xff0c;本篇我们讨论如何利用ffmpeg提供的API函数进行多媒体文件的解封装#xff08;demux#xff09;过程。在讲解之前#xff0c;我们需要了解一些基本的多媒体文件知识#xff0c;大虾请飘过。 容器格式#xff1a… 上一篇文章我们搭好了环境并编译出所需的ffmpeg库本篇我们讨论如何利用ffmpeg提供的API函数进行多媒体文件的解封装demux过程。在讲解之前我们需要了解一些基本的多媒体文件知识大虾请飘过。 容器格式不管是音频文件还是视频格式的文件都是一个多媒体的容器即container比如常见的视频容器格式有avi、mp4、mkv、flv、rm/rmvb、mov、ts、vob、dat音频容器格式有MP3、WAV、AAC、APEFLAC等等它容纳了视频、音频、字幕subtitle等一个或多个基本流数据有的甚至一个容器中存放有多个视频、音频以及字幕。 压缩格式对视频、音频数据的基本流进行的压缩方式就是音视频的压缩格式。常见的视频压缩格式如mpeg2、mpeg4、H264、VC1、Rm/Rmvb常见音频压缩格式如MPA、AAC、AC3、DTS。注意这里的部分名字和上面的一样但意义不同上面是封装格式这里是压缩格式。为什么要压缩呢因为不压缩的话要存储图像或声音就需要非常多的空间比如mpeg2压缩比能达到25:1左右而H264甚至能达到102:1的惊人程度 ES也就是ElementaryStream也称为基本流、组件流等称呼就是单独的一路视频、一条音频、一个subtitle字幕或者单个的附加数据。显然常见的多媒体文件一个都有一个视频ES、音频ES有的也含有多个视频ES和音频ES以及subtitleES。比如蓝光原版的TS一般都含有多个音轨ES和字幕ES但不是所有有字幕都有字幕ES可能字幕已经内嵌进视频这样的字幕其实成了视频的一部分。 Demux在播放时需要把这些视音频以及字幕等基本流分离出来这个过程就叫Demux或者解封装也称为解复用。分离出来的各个基本流ES分别送给视频解码器、音频解码器等解码后才能得到图像声音。Demux过程如下图subtitle也可能需要解码 Remux当然Demux反过来把基本的音频、视频、字幕等组合成一个完整的多媒体就是Remux或者封装也称为复用。比如很多电影网站的音视频压制的人就需要先做Demux分离成ES在加入必要的中文字幕和音轨后、重新封装。所有的转码工具也都必须有Remux和重新Demux的过程。复用与解复用的概念对于熟悉DVB行业的读者来说应该比较清楚。 PTS也就是显示时间戳指图像或者声音在解码后应该显示或者发声的时间点。音视频不是一解码出来就播出来否则就乱了性能好的解码器播放的快差的播放的慢并且视频和音频也对不上号。所有这些都是靠PTS来同步的。至于DTS解码时间戳在现在相对以前较大解码内存缓冲下显得不那么重要了。 有了这些基本的多媒体知识我们就可以继续讲解如何利用ffmpeg来进行Demux这个过程。首先介绍一下主要的几个API函数 intavformat_open_input(AVFormatContext **ps, const char *filename, AVInputFormat *fmt, AVDictionary **options) 这个函数用于打开多媒体文件并读取相关文件头信息。 voidavformat_close_input(AVFormatContext **ps) 这个函数用于关闭上面打开的多媒体文件释放相关资源。 intavformat_find_stream_info(AVFormatContext *ic, AVDictionary**options); 这个函数通过注册的文件格式解析器读取文件的取各种信息比如播放持续时间、音视频压缩格式、音轨信息、字幕信息、帧率、采样率等等。 int av_read_frame(AVFormatContext*s, AVPacket *pkt); 这个函数对于Demux过程是最重要的一个函数它从文件中读取一帧视频、一帧或多帧音频、字幕等ES数据包除了数据本身之外还包括PTS、持续时间、参考帧等重要信息。 void av_free_packet(AVPacket *pkt) 这个函数用于释放ES数据包与上面的函数成对使用。 有了这些函数和上面的基本知识下面我们来实现一个简单的Demux框架实例。这个实例的功能是把多媒体文件中的音视频ES数据抽出来分别写入不同文件。我们为了简单这里不处理返回错误在实际项目中自己添加错误处理机制。本文力求用最简单最原始的方式把ffmpeg解封装的基本框架讲解清楚。 1 #include libavformat/avformat.h2 3 static const char *media_file test_media.mp4;4 int main(void)5 {6 int i, vid_idx, aud_idx;7 FILE *fp_vides NULL, *fp_audes NULL;8 AVFormatContext *pFormatCtx NULL;9 AVPacket pkt; 10 11 av_register_all(); 12 avformat_open_input(pFormatCtx, media_file, NULL, NULL); 13 avformat_find_stream_info(pFormatCtx, NULL); 14 15 fp_vides fopen(vid_es.dat, wb); 16 fp_audes fopen(aud_es.dat, wb); 17 // 1, handle stream info 18 for (i0; ipFormatCtx-nb_streams; i) 19 { 20 if (pFormatCtx-streams[i]-codec-codec_type AVMEDIA_TYPE_VIDEO) 21 vid_idx i; 22 else if (pFormatCtx-streams[i]-codec-codec_type AVMEDIA_TYPE_AUDIO) 23 aud_idx i; 24 else 25 ;//such as subtitile 26 } 27 while (av_read_frame(pFormatCtx, pkt) 0) 28 { 29 // 2, handle pkt data 30 if (pkt.stream_index vid_idx) 31 fwrite(pkt.data, pkt.size, 1, fp_vides); 32 else if (pkt.stream_index aud_idx) 33 fwrite(pkt.data, pkt.size, 1, fp_audes); 34 else 35 ;// such as subtitile 36 av_free_packet(pkt); 37 } 38 fclose(fp_vides); 39 fclose(fp_audes); 40 avformat_close_input(pFormatCtx); 41 return 0; 42 }   在注释1的地方需要处理基本流索引与音视频对应的关系和重要信息记录这个关系会在注释2的地方用到并且也是后续的多音轨、字幕切换的凭据本例只处理了最简单的只有一路音视频的情况且没有对其他信息进行记录比如帧率、视频宽高、编码类型、时间标度、第一个PTS等等。原则上这些跟Demux的框架没有关系且每个人有有自己的处理方式就不在这里贴出来。 要想获得更详细信息或者Demo代码请关注微信号程序员互动联盟扫一扫下方二维码或者搜索微信号coder_online即可关注我们可以在线交流。 如需转载请注明出处谢谢合作  转载于:https://www.cnblogs.com/2010wuhao/p/4389274.html
http://www.sadfv.cn/news/405935/

相关文章:

  • 苏州集团网站设计公司海淀教育互动平台
  • 有没有人一起做网站人人开发app
  • 建设化工网站的目的温州 网站建设
  • 如何做游戏试玩网站线下推广方法有哪些
  • 郴州网站seo优化谷歌浏览器官方正版下载
  • dede 网站打开自动加html做空闲时间的网站
  • 自建网站管理手机商城网站设计
  • 做棋牌游戏网站犯法吗外贸网站商城建设
  • 石家庄建站模板搭建网站建设合同 包括什么
  • 什么网站权重大wordpress中对视频排序
  • 微生成网站大足网站设计
  • asp.net建立手机网站网站建设中是因为没有ftp上传吗
  • 网站域名如何使用方法电商网站竞价推广策略
  • 没备案的网站能用吗商务网站建设组成包括网站优化
  • 哪个免费自助建站系统最好用秦皇岛建设网招聘
  • 企业网站管理系统信得过y湖南岚鸿怎么样wordpress如何加html代码
  • 免费做婚礼邀请函的网站网站可分析
  • 如何使用表格做网站怎么做网址
  • 常德网站建设培训机构网站logo怎么设计
  • 沙井网站开发网络卖东西的平台有哪些
  • 胶州专业建站最好用的素材网站
  • 禅城区做网站策划wordpress文章没有评论
  • 公司制度建设的意义优化好的网站
  • 建设银行网站登录没反应电子网站有哪些
  • 成都创建公司网站建e网室内设计网官网全景图库
  • 在哪建企业网站好让网站引用字体
  • 四方区企业型网站建设手机百度如何发布作品
  • 网站路径优化网站建设最新时讯
  • 网站步骤北京医疗机构网站前置审批需要的材料有哪些
  • 做网站需要租空间吗品质好物推荐怎么上