专栏电商日志财经减肥爱情
投稿投诉
爱情常识
搭配分娩
减肥两性
孕期塑形
财经教案
论文美文
日志体育
养生学堂
电商科学
头戴业界
专栏星座
用品音乐

FFplay音频滤镜分析

  音频流的 滤镜是通过  configure_audio_filters()   函数来创建的,因为  ffplay   为了代码的通用性,即便命令行参数不使用滤镜, AVFrame   也会过一遍 空滤镜做下样子。
  configure_audio_filters()   函数的流程图如下:
  configure_audio_filters()   函数的定义如下: static int configure_audio_filters(VideoState *is, const char *afilters, int force_output_format){....}
  下面讲解一下这个函数的参数。
  VideoState *is   ,是 ffplay 播放器的全局管理器。
  char *afilters  ,是滤镜字符串,例如 下面的命令: ffplay -af "atempo=2.0" -i juren-5s.mp4
  "atempo=2.0"   这个字符串就会赋值给  afilters   。
  int force_output_format   ,代表是否强制把  buffersink   出口滤镜的音频帧采样等信息 设置为 跟  is->audio_tgt   一样。
  之前说过  is->audio_tgt   是音响硬件设备打开的信息。 is->audio_tgt   是 最终 要传递给 SDL 的音频格式。所有的采样率,声道数等等最后都要转成  is->audio_tgt   。
  下面来分析一下 configure_audio_filters()   函数里面的重点代码,如下:
  这个函数一开始就定义了 一些只有 2 个元素的数组,这其实是 ffmpeg 项目传递参数的方式,传递一个数组进去函数,主要有两种方式。
  1,  传递数组的大小。就是有多少个元素。
  2,  传递数组的结尾,只要读到结尾元素 (-1),就算结束了。
  ffmpeg 大部分函数采用的是第二种方式。
  然后他会调  avfilter_graph_free()   释放 滤镜容器 (FilterGraph),有些同学可能会疑惑, is->agraph   一开始不是  NULL   吗? 为什么需要释放?
  is->agraph   一开始确实是 NULL,但是  configure_audio_filters()   这个函数可能会调用 第二次 ,第二次的时候  is->agraph   就不是 NULL了。
  configure_audio_filters()    第一次调用 是在  stream_component_open()   里面,如下:
  第二次调用 是在  audio_thread()   里面,如下:
  【腾讯文档】FFmpegWebRTCRTMPRTSPHLSRTP播放器-音视频流媒体高级开发-资料领取FFmpegWebRTCRTMPRTSPHLSRTP鎾斁鍣�-闊宠棰戞祦濯掍綋楂樼骇寮€鍙�-璧勬枡棰嗗彇
  第二次调用  configure_audio_filters()   是因为实际解码出来的 AVFrame 的采样率,声道等,跟容器里面记录的不一致,之前  is->audio_filter_src   是直接从容器,封装层取的数据。封装层记录的音频采样率等, 可能是错的 ,需要以实际解码出来的  AVFrame   为准。
  而且,注意,第二次的时候, force_output_format   参数会置为 1,这样会强制  buffersink   出口滤镜的采样信息等 设置为  is->audio_tgt   一样。
  其实 configure_audio_filters()    必然会调第二次的 ,因为  is->auddec.pkt_serial != last_serial   这个条件肯定是真。
  接着就是设置 滤镜使用的线程数量,0 为自动选择线程数量,如下: is->agraph->nb_threads = filter_nbthreads;
  第三个重点是,设置重采样选项(aresample_swr_opts),如下:
  什么样的命令行参数才是重采样选项的,在  libswresample/options.c   里面可以找到,如下:
  举个例子,如下: ffpaly -ich 1 -i juren-5s.mp4
  ich 1   就会被解析拷贝进去  ffplay.c   里面的  swr_opts   变量里面。
  这里还用到了一个新的函数  av_opt_set()  ,这个函数其实不只可以设置 滤镜的属性字段 ,还可以设置大多数 数据结构 的属性字段,例如解码器,封装器 等等,只要内部有  AVClass   的数据结构,都能用  av_opt_set()   来设置属性,详情请阅读《opt.h文件函数分析》
  接下来的重点是设置入口跟出口滤镜,如下:
  出口滤镜 还设置了  sample_fmts   为  AV_SAMPLE_FMT_S16  ,这是  ffpaly   播放器自己的特性,就是说无论MP4文件里面的音频格式是怎样的,他都会转成  AV_SAMPLE_FMT_S16   格式丢给 SDL 播放,而且它在用 SDL_OpenAudioDevice 打开音频设备的时候,就是用的 S16 格式, 这是写死的 。
  force_output_format   的逻辑主要是 强制  buffersink   出口滤镜的采样信息等 设置为跟  is->audio_tgt   一样。 audio_tgt   是 SDL 接受音频帧的最终格式。
  第一次调用  configure_audio_filters()   函数, force_output_format   为 0,不会跑进去这块逻辑。
  最后就是调  configure_filtergraph()   函数来 链接入口跟出口滤镜 ,同时创建滤镜容器(FilterGraph),如下:
  上图最重要的是,入口滤镜 跟 出口滤镜 被赋值到全局管理器  is   了。后面只要把解码器输出的 AVFrame 往入口滤镜丢,然后往出口滤镜读就行了。

开门见喜!国羽女双新搭档首次参赛就夺冠,圣贤组合有前途有希望北京时间1月29日,2023世界羽联巡回赛印尼公开赛进入到决赛日。在下午最早开始的女双冠军争夺战中,中国羽毛球队新组合刘圣书和张姝贤,以2比0完胜日本名将前世界第一的福岛由纪和广田詹姆斯空砍41分,湖人加时121125不敌凯尔特人2223赛季NBA常规赛今天继续进行,湖人队客场挑战凯尔特人,在全场大部分时间都处于比分领先的情况下,湖人队在末节的防守似乎出现了一些问题,霍福德和布罗格登三分打进,凯尔特人反超比(新春走基层海外追梦人)德国国家武术队总教练吴敏让武术在德国生根开花国际在线报道(记者阮佳闻)吴敏是德国国家队的武术总教练,在她的指导下,越来越多的德国选手亮相竞技舞台。她还创办了德国第一所武术和中文相结合的华人学校,为传承中华武术和国学文化做出积2比1战胜莱巴金娜,萨巴伦卡首夺澳网女单冠军萨巴伦卡的左前臂上,文着一头嘶吼的猛虎。墨尔本的周六,她像极了这头猛虎。势大力沉杀伐决断,猛兽的心中,莫不藏着一颗勇敢的心。2比1战胜莱巴金娜,萨巴伦卡抛掉球拍,倒地掩面2023年不舔不吹,詹皇实至名归旗帜鲜明的捧一波詹姆斯。对,就是那个在NBA打篮球的勒布朗雷蒙詹姆斯,哪怕虽然反正尽管他不差我这一粉。数据说话先1984年12月30日出生,现年38岁。2003年6月27日,以高中帕金斯盛赞布朗联盟超巨,詹姆斯深夜发推意难平,华子谈全明星宿敌对决裁判抢戏。北京时间1月29日备受瞩目的黄绿大战,詹姆斯最后时刻的明显被打手漏吹湖人最终失利败北,引起广泛争议。此役布朗顶住五犯的压力,在21扳平后加时赛暴走独得11分最终帮明显犯规不吹,詹姆斯跳脚跪地抱怨,贝弗利拿相机给裁判看北京时间1月29日,NBA常规赛今天继续进行,焦点之战当属湖人客场挑战凯尔特人的黄绿大战。詹姆斯首发登场,沃克迎来复出,和浓眉一样替补登场绿军那边,斯玛特和罗威因伤缺阵。开局阶段,全员归队!辽宁男篮集结,备战下一阶段比赛结束春节假期的辽宁男篮队员1月28日全部归队,在沈阳开始第三阶段联赛的备战。资料图片1月19日,结束第二阶段联赛的辽宁男篮从诸暨返回沈阳,全队迎来春节假期。大年初五,年轻队员率先归迪马利亚梅西给你俩窝窝,因为荷兰队挑衅在先,干扰我们罚点球1月29日消息,日前,阿根廷球员迪马利亚接受阿根廷媒体奥莱报的采访,谈到了对世界杯上与荷兰队的争议庆祝,他表示,梅西对对方前锋韦霍斯特爆粗等是因为荷兰队冒犯在先。在卡塔尔世界杯14丁俊晖冲第15冠,中国5将冲冠,00后小将680零封威尔士赛冠军北京时间1月29日消息,2023斯诺克单局限时赛继续进行。周跃龙范争一袁思俊曹宇鹏徐思等6名中国选手,在第二轮强势晋级。其中,00后小将袁思俊,在与威尔士公开赛冠军乔丹布朗的比赛中张本智和无缘三冠王,户上隼辅打出了王楚钦的感觉,反手很霸气头条创作挑战赛全日乒乓球锦标赛男单决赛,户上隼辅42击败名将张本智和,成功替自己的偶像王楚钦复仇。户上隼辅这场比赛的反手特别火爆,竟然压制了张本智和。难怪户上隼辅被称作是内战王,面
医用面膜,过敏肤质真的可以用吗?首先小仙女们要明白过敏和敏感的概念,过敏是说的对某种敏感源无免疫力,接触就会产生不适反应,有可能是成分,有可能是气味,这是一种病。而敏感是因为皮肤的耐受问题或皮肤受损,接触某种成分大众输了一次,20多万的途昂,却卖不过30多万的国产车,咋回事?为何20多万的途昂不能比30多万的国产车销量低?国产高端汽车的热销令很多人感觉疑惑,以相同的预算选择到的合资或进口汽车,品质难道不比国产汽车强吗?可以说很多缺乏或毫无汽车知识的所谓本田丰田和日产究竟谁的质量最好?就发动机质量而言,本田最好。关于本田有买发动机送车,本田大法好,一日本田终生本田的说法。足以看出本田发动机的质量水平。本田是世界上最大的发动机制造商,并且有先进的技术。本田曾经在F你的家乡最具家乡特色的酒是哪一个?我是喂食家,我来回答,我是广东人客家人,广东是中国酒类文化的摇篮之一,也是许多特色酒的家园。梅州客家娘酒,又称客家娘酒和客家黄酒,是一种米酒。娘酒这个名字来源于这种酒主要由客家妇女宝鸡自驾到青海湖怎么走?宝鸡自驾青海湖还是比较方便的,除往返需要两天时间外,其它时间均可在青海湖周边游玩,往返大概5天时间就够,想玩的尽兴点呢就放到六天。下边我先说说怎么走,你看看行程适合嘛。第一天,宝鸡如何评价?要说刚开始迷茫还有情可原一直迷茫是不是有点过了适者生存!哪个领域不是如此呢?这个世界不就是这样形成的吗?业余时间有时间就弄,没时间就先去解决吃饭问题这些都是无可厚非的事情!我来到头一个班里中等左右的学生,智力中等水平,通过花大价钱补习,可能考上清华北大吗?看到小编的提问,我来唠叨几句,班级里中等左右的学生,花大钱补习课本知识,能考上北大,清华吗?首先,是天赋,后天的刻苦努力,物质可以金钱衡量,知识不是金钱所替代的,知识靠的是勤奋,积备孕半年多却一直没有成功,该怎么办?你好,非常高兴为你解答问题,备孕半年多没有怀孕,还没有达到不孕症的诊断标准。不孕症的诊断标准是有正常的性生活,没有采取避孕措施一年以上没有怀孕。如果你平时月经周期比较规律,也可以继新生儿在月子里可以喂白开水吗?很多宝妈都会在坐月子的时候听过医生和护士的吩咐六个月内的孩子只需要喝母乳就行了,不需要再添加额外的水。这是有科学依据的。为什么不需要在日常额外补水?母乳中已经含有大量的水分,足够满六七十年代,人们恋爱和结婚的口号,或常说的话是什么?天隆隆,地隆隆,嫁个贫顾农最英雄!(阶段斗争年代)一军,二干,三脱产,至死不嫁庄稼汉。老子英雄儿好汉,四类子女靠边站。亲戚亲,不如阶级亲,嫁汉不找成份高的人。六七十年代,婚姻观是贫有哪些优秀耐玩的独立游戏?我来推荐几个吧,手游的话,推荐阿瑞斯病毒,这款游戏是是一款末日求生的游戏,杀变异生物,获得材料制作装备,而且剧情也不错,任务多样。我觉得是手机独立游戏中不可多得的好游戏。PC端的话
友情链接:快好知快生活快百科快传网中准网文好找聚热点快软件