游戏电视苹果数码历史美丽
投稿投诉
美丽时装
彩妆资讯
历史明星
乐活安卓
数码常识
驾车健康
苹果问答
网络发型
电视车载
室内电影
游戏科学
音乐整形

得物视频编辑工具优化全指南

  一、背景介绍
  随着4G网络的推广和网络带宽的提升,视频成为互联网用户主要的消费载体,用户通过短视频来分享和浏览信息。由此视频的编辑功能越来越重要、越来越普遍。视频编辑的App也如雨后春笋般涌现。
  为更好地推动得物App社区业务的发展,得物也自研符合得物需求的视频编辑工具。我们致力于打造一个更快、更强的视频编辑工具。二、视频编辑工具介绍
  为了让大家更好地了解得物App的视频编辑工具,我们先简单介绍一下视频编辑工具的主要功能。
  下面是得物App视频编辑工具的主要功能:
  视频编辑工具的重点如下:
  视频编辑工具需要操作的资源:文字:包括普通的文字、特殊的艺术字、花字等等;图片:包括静态图,如JPEGPNG等等,也包括HEICGIF等动态图;视频:包括各种各样的视频(各种编码和封装格式),主流的格式一般是MP4的封装格式、H264视频编码格式、AAC音频编码格式等等;音频:包括各种各样的音频(各种编码和封装格式),当然视频当然也是包含音频轨道的。视频编辑工具主要的操作方式:操作图片、视频帧:我们知道视频是一帧一帧的图片组成的,所以操作视频帧和操作图片是一样的道理,我们通过添加一些特效在图片和视频帧上面,实现一些有趣的效果来吸引用户。操作音频:主流的操作音频方式如倍速、调整音量、变调等等,都是现今短视频的主要玩法。视频编辑工具最终生成的是一个新的视频,这个视频将特定的资源应用一些特效生成一个新的视频。
  下面的流程图可以很方便地让大家了解视频编辑的工作流程。为了方便,我们输入一个视频,加上一些特效,生成一个新的视频。
  从上面的流程可以看出来,原始视频A。mp4经过解封装分离出音频轨道和视频轨道,对它们解码之后,对音频数据应用音频特效、对视频帧数据应用视频特效,然后编码封装合成一个新的视频。当然解码和编码都是有一个队列控制的,流程图上标注了,没有深入展开,大家了解即可。
  经过上面的介绍,大家对视频编辑工具有了大概得了解,其实衡量一个视频编辑工具做得好不好,主要从下面这几个方面着手:内存占用情况导出视频的速度如何导出视频的清晰度如何
  下面从这三方面详细展开给大家阐述得物App的视频编辑工具优化的心路历程。三、内存优化
  性能是所有程序好不好的首要指标,一个工具即使功能再强大,但是一点就崩溃,或者用着用着内存暴涨、应用卡死,估计这个应用不能称为一个优秀的应用,下面我们具体谈一谈视频编辑工具的优化检测方案。
  优化内存从良好的编码习惯开始,尤其对音视频这种对内存需求非常高的应用而言。例如一个10801920的视频,解码出来原始数据一帧图片大小也是10801920,占用内存是10801920(83)85。93MB,一个视频帧就占用这么大,1秒一般有30帧,那得占用177。9MB,如果不加控制,那不管多高性能的手机也经不住这样的折腾。希望下面的内存检测和优化方案可以给你带来一些帮助。3。1合理设计队列
  上面我们在介绍视频编辑流程的视频谈到了解码队列和编码队列的概念。其实队列这个概念在音视频中使用非常频繁,正是因为内存的限制,所以才引入队列这个控制方式。大家可能还有点懵,但是看完下面的流程图,我相信你一定会豁然开朗。
  我们仅选取解码的部分来分析一下队列的重要应用。
  在视频编辑工具中有几个重要的队列:解码过程中:VideoPacketQueue:视频解码之前Packet存放的队列,一般建议的队列大小是100AudioPacketQueue:音频解码之前Packet存放的队列,一般建议的队列大小是150VideoFrameQueue:视频解码之后Frame存放的队列,一般建议的队列大小是3AudioFrameQueue:音频解码之后Frame存放的队列,一般建议的队列大小是8编码过程中:EncodeVideoPacketQueue:视频编码之后Packet存放的队列,一般建议的大小是100EncodeAudioPacketQueue:音频编码之后的Packet存放的队列,一般建议的大小是150
  按照上面的方式设计队列的大小,可以在保证功能正常的情况下最大程度地降低内存占用,提升用户体验。3。2排查内存泄漏
  Android上排查内存泄漏的方式有很多,这里介绍两种:Asan检测Profile检测
  Asan全称是AddressSanitizer是一种基于编译器的快速检测的工具,用于检测原生代码中的内存错误问题,Asan可以解决如下四种核心问题:堆栈和堆缓冲区上溢、下溢释放之后堆重新使用问题超过范围的堆栈使用情况重复释放、错误释放问题
  Asan的使用方式建议参考google官方文档,这儿就不多作介绍了:https:github。comgooglesanitizerswikiAddressSanitizer
  关于Profile的使用,如果需要检测Native内存使用情况,需要满足API29,大家在使用的时候需要非常注意。
  下面是我们在demo中应用Asan抓取的堆栈:2004220042?ADEBUG:2004220042?ADEBUG:Buildfingerprint:samsungt2qzcxt2q:11RP1A。200720。012G9960ZCU2AUGE:userreleasekeys2004220042?ADEBUG:Revision:132004220042?ADEBUG:ABI:arm642004220042?ADEBUG:Timestamp:2021091700:32:3108002004220042?ADEBUG:pid:19946,tid:20011,name:AudioTrackcom。jeffmony。audioplayer2004220042?ADEBUG:uid:103502004220042?ADEBUG:signal6(SIGABRT),code1(SIQUEUE),faultaddr2021091700:32:31。1572004220042?ADEBUG:Abortmessage:19946ERROR:AddressSanitizer:heapuseafterfreeonaddress0x004ac1e41080atpc0x007157f69580bp0x00705c0bb350sp0x00705c0bab08READofsize1792at0x004ac1e41080threadT32(AudioTrack)00x7157f6957c(dataappG094WKQQj7KZvdhvGYDLDAcom。jeffmony。audioplayerkcu1nmgzpBIQDRJDxCJDOQlibarm64libclangrt。asanaarch64android。so0x9f57c)10x706549c228(dataappG094WKQQj7KZvdhvGYDLDAcom。jeffmony。audioplayerkcu1nmgzpBIQDRJDxCJDOQlibarm64libltpaudio。so0x14228)20x706549bcd4(dataappG094WKQQj7KZvdhvGYDLDAcom。jeffmony。audioplayerkcu1nmgzpBIQDRJDxCJDOQlibarm64libltpaudio。so0x13cd4)30x70654994f0(dataappG094WKQQj7KZvdhvGYDLDAcom。jeffmony。audioplayerkcu1nmgzpBIQDRJDxCJDOQlibarm64libltpaudio。so0x114f0)40x70654a9cbc(dataappG094WKQQj7KZvdhvGYDLDAcom。jeffmony。audioplayerkcu1nmgzpBIQDRJDxCJDOQlibarm64libltpaudio。so0x21cbc)50x70654a91d4(dataappG094WKQQj7KZvdhvGYDLDAcom。jeffmony。audioplayerkcu1nmgzpBIQDRJDxCJDOQlibarm64libltpaudio。so0x211d4)60x715af9d188(systemlib64libwilhelm。so0x1c188)70x71570ea290(systemlib64libaudioclient。so0x8b290)80x71570e9480(systemlib64libaudioclient。so0x8a480)90x7156b664d4(systemlib64libutils。so0x154d4)100x71593e9974(systemlib64libandroidruntime。so0xa5974)110x7156b65db0(systemlib64libutils。so0x14db0)120x7156ace234(apexcom。android。runtimelib64bioniclibc。so0xb6234)130x7156a68e64(apexcom。android。runtimelib64bioniclibc。so0x50e64)0x004ac1e41080islocated0bytesinsideof1792byteregion〔0x004ac1e41080,0x004ac1e41780)freedbythreadT32(AudioTrack)here:00x7157f74c64(dataappG094WKQQj7KZvdhvGYDLDAcom。jeffmony。audioplayerkcu1nmgzpBIQDRJDxCJDOQlibarm64libclangrt。asanaarch64android。so0xaac64)10x70654a6d2c(dataappG094WKQQj7KZvdhvGYDLDAcom。jeffmony。audioplayerkcu1nmgzpBIQDRJDxCJDOQlibarm64libltpaudio。so0x1ed2c)20x70654a6af0(dataappG094WKQQj7KZvdhvGYDLDAcom。jeffmony。audioplayerkcu1nmgzpBIQDRJDxCJDOQlibarm64libltpaudio。so0x1eaf0)30x706549bf4c(dataappG094WKQQj7KZvdhvGYDLDAcom。jeffmony。audioplayerkcu1nmgzpBIQDRJDxCJDOQlibarm64libltpaudio。so0x13f4c)40x706549bcd4(dataappG094WKQQj7KZvdhvGYDLDAcom。jeffmony。audioplayerkcu1nmgzpBIQDRJDxCJDOQlibarm64libltpaudio。so0x13cd4)50x70654994f0(dataappG094WKQQj7KZvdhvGYDLDAcom。jeffmony。audioplayerkcu1nmgzpBIQDRJDxCJDOQlibarm64libltpaudio。so0x114f0)60x70654a9cbc(dataappG094WKQQj7KZvdhvGYDLDAcom。jeffmony。audioplayerkcu1nmgzpBIQDRJDxCJDOQlibarm64libltpaudio。so0x21cbc)70x70654a91d4(dataappG094WKQQj7KZvdhvGYDLDAcom。jeffmony。audioplayerkcu1nmgzpBIQDRJDxCJDOQlibarm64libltpaudio。so0x211d4)80x715af9d188(systemlib64libwilhelm。so0x1c188)90x71570ea290(systemlib64libaudioclient。so0x8b290)
  显示message是:heapuseafterfreeonaddress0x004ac1e41080说明是使用了已经释放掉的内存了,再继续看,这个内存具体在什么地方被释放的?0x004ac1e41080islocated0bytesinsideof1792byteregion〔0x004ac1e41080,0x004ac1e41780)Asan一个很大的优势就是可以追踪内存释放的路径,防止出现内存泄漏和野指针问题,特别是野指针,一旦出现特别难排查,简直是C开发的噩梦,希望大家用好工具,同时培养良好的C编码习惯。3。3优化线程
  另一个影响内存的重要因素是线程,视频编辑工具涉及到的线程非常多,线程的使用得遵循一些基本的原则:尽量少创建线程尽量少使用pthreadmutext本着功能隔绝原则使用线程能同步就别异步
  以编辑模块为例,这儿列一下我们使用到的所有线程:GL处理线程视频解封装线程视频中视频轨道解码线程视频音频轨道解码线程抽取缩略图线程音频编码线程视频编码线程视频封装线程
  如果插入了独立的音频文件,还需要添加两个额外的线程:音乐文件播放线程音乐文件解码线程
  上面列出的是一个视频编辑工具能正常工作所必备的最少线程,如果你的视频编辑工具中多了什么线程,我们建议可以适当优化一下,毕竟少一个线程,可以少一分开销,而且少一分线程同步的工作。
  我们在底层也按照Android的消息机制重写了一套C层的消息分发SDK,这个我们后续会另外分享文章阐释我们定制的消息分发SDK,这儿点到为止。四、提升导出视频的速度
  我们使用视频编辑工具,最终是希望导出一个视频,如果这个导出的过程很慢,那肯定是无法忍受的,从上面的介绍我们已知视频的导出需要经过解码应用特效编码的过程,其中解码和编码这两个过程对速度的影响至关重要。因为解码和编码视频需要耗费大量的资源,目前主要有两种方式软解编码和硬解编码。
  如果你使用过FFmpeg或者其他使用CPU进行视频编解码的来处理视频的话,你可能已经遇到了处理速度慢的问题。这主要是因为软编码和软解码使用CPU进行运算,而CPU在处理视频上的速度远低于DSP芯片;简而言之软解编码主要通过CPU来工作,通过CPU来主导大量的计算工作,是原始的处理方式,当然耗费的时间也比较长;硬解编码是通过GPU来处理,GPU是专用的图形处理芯片,对视频的解码和编码有专门的优化,所以编码和解码的速度非常快。
  Android上使用MediaCodec来实现硬解编码,iOS上使用VideoToolBox来实现硬解编码,这里着重介绍Android上编码解码的速度优化。
  从上面的流程我们可以看出,编码在解码的后面,一个时长60s(30fps)的视频,需要解码1800帧,然后编码1800帧视频才能完整生成另外一个视频,这样串行的等待是耗时的主要原因。
  这时候我们参考多线程方案,将一个60s的视频均分为两段,然后这两段视频同时进行解码操作,生成导出了两个30s的临时缓存视频文件,随后将这两个30s的视频合并为一个60s的B。mp4视频,最后删除临时缓存文件,这样我们只需要同时处理900帧的数据,理论上可以提升一倍的导出速度。
  这就是并行导出,下面是得物App并行导出的基本流程。
  首先我们要明确导出视频是需要消耗资源的,这个资源就是MediaCodec,最终是送入到GPU中处理,一个手机中的MediaCodec实例是有限的,正常情况下,一个手机可以提供的MediaCodec实例最多有16个,如果当前使用的MediaCodec实例超过16个,那么手机将无法正常工作。MediaCodec资源是手机中的所有App共同持有。所以并行分段的个数不是越多越好。只有一段,需要两个MediaCodec(一个用来解码视频,一个用来编码视频),注意:音频的解码和编码可以不要用MediaCodec,毕竟音频的耗时少多了,不是瓶颈。分成两段需要四个MediaCodec,分成三段需要六个MediaCodec,分成四段需要八个MediaCodec,以此类推。
  下面是并行导出的测试结果:
  两段并行速度提升5070,内存增加20,三段并行速度提升6090,内存增加80;并行超过三段的话就无法明显提升速度了。我们比较建议并行两段,在一些性能很好的机型上并行三段。
  如果有些同学对视频导出过程中文件操作还有疑问的,下面的示意图可以比较清楚地看出并行导出操作本地文件的过程:并行导出的过程中,生成了两个临时文件并行导出完成后,这两个临时文件合并为一个新的文件,两个临时生成的文件被删除了(节省用户宝贵的存储空间)原始文件jeffmonyout。mp4并没有被删除修改
  Tips:目前我们在处理过程中生成的临时文件和最终的适配文件都会保存在sdcardPicturesduappCompile下,而在处理完成后的临时文件清理过程会触发在某些机型上的保护机制,建议后续调整到App的私有目录下。
  当然还有其他的提升导出速度的建议,例如在视频帧特效处理的过程中,我们建议:尽量采用FBOEBOABO方式处理texture纹理如果过大要进行压缩严禁采用glFinish()
  这些做法都是我们在视频编辑开发过程中的切实经验,希望能给大家带来一些帮助。五、提升导出视频的清晰度
  一个视频编辑功能是否足够优秀,其中的一个重要指标就是同等条件下导出的视频是否足够清楚,通常而言,衡量视频是否清晰的有两种方式:主观标准:找一些用户观看不同的视频,根据用户的观感输出视频清晰度的对比结果,用户一般根据色彩、画面亮度、柔和度等来评估清晰度。客观标准:利用算法计算视频画面质量分,目前比较推荐Netflix推出的开源库VMAF来计算视频帧的质量分。
  实际上主观标准是比较准确的,但是可操作性比较差,特别是处理海量视频的时候,需要大量的人力,无法有效开展,因此日常工作中还是推荐客观标准进行海量计算,主观标准进行重点判断。具体的可以结合业务的重要程度来开展。
  下面结合我们实际的工作给出具体提升视频清晰度的方式:
  视频基础编码信息优化Profile优化:Profile有三种Level,分别是Baseline、Main、High,其中BaselineProfile对应清晰度最低,Android3。0之后的版本都支持的,MainProfile清晰度比BaselineProfile清晰度要好,但是从Android7。0之后才支持,HighProfile清晰度最高,也是从Android7。0之后才支持。我们在设置EncoderProfileLevel之前,需要判断一下当前是否支持。Bitrate码率设置:视频码率是视频数据传输时单位时间内传送的数据位数。单位是kbps,望文生义,码率越大,单位时间填充的数据就越多,视频质量就越高。但码率也不是设置的越大越好,超过必要限度,对视频画质的提升已不明显,建议采用合适的factor来调整码率。BitratewidthheightframeRatefactor,其中factor0。15。BitrateMode:有三种通过的编码模式VBR(可变码率)、CBR(固定码率)、ABR(平均码率),其中ABR是最好的方式,可以兼顾质量和视频大小。B帧设置:视频有I帧、P帧、B帧构成,其中I帧最大,P帧次之,B帧最小,我们在编码时尽量多设置B帧(在合理的范围内),并不会降低清晰度,但是可以大大降低视频的大小,这样我们就可以相应地调大码率,最终实现了提升清晰度的目标。
  HEVC编码优化:使用HEVC编码,可以保证在不增加文件大小的情况下,大大提升视频的清晰度。在相同的图像质量下,HEVC编码的视频比H。264编码的视频约减少40
  色彩调优综合调整亮度、对比度、色温、饱和度、锐度等颜色参数,进而优化整体的视频画面,让视频画面看上去更清晰。
  超分算法:采用ESRGAN算法,利用机器学习的优势对图片和视频进行去模糊、Resize、降噪、锐化等处理,重建图片,实现对图片的超分辨率处理。特征提取:计算噪点非线性映射:放大,模糊化噪点图像重建:差分,平滑过度,去噪
  下面是使用超分算法处理前后的对比图,可以很明显地看出右边的图更加清晰,少了很多噪点、图片更亮、过度更平滑。
  如果大家想了解视频清晰度优化的技术细节,可以参考文章视频清晰度优化指南
  六、总结
  本文开篇从介绍得物App的主要功能展开,提出了视频编辑工具优化的三个维度:
  优化内存占用提升视频导出速度提升导出视频的清晰度
  其中在提升视频导出速度时重点谈到了并行导出的技术方案,从最终的结果来看,视频导出速度的提升非常明显,同时也非常清楚地解释了并行导出过程中为什么生成临时文件?为什么有必要在导出完成之后删除临时文件?尽力给用户带来较好的体验。
  最后在提升导出视频的清晰度中重点提到的超分算法应用效果提升明显,超分之后的视频帧相比原帧图更加清晰、噪点更少,而且细节部分更加真实。
  后续我们还会结合AR特效输出更多有意义的技术分享,敬请期待。
  文JeffMony
  关注得物技术,每周一三五晚18:30更新技术干货
  要是觉得文章对你有帮助的话,欢迎评论转发点赞

小米有品上架便携式即热饮水机3秒速热,壶嘴可伸缩IT之家12月19日消息近日,小米有品联合上新了故宫上架了一款碧海青心水具系列便携式即热水机,体积小巧、出水壶嘴可伸缩、3秒速热,众筹价格299元。外观设计方面,这款便携……京东自营罗技闪购专场罗技M275无线鼠标探底54。9元IT之家6月24日消息京东自营罗技品牌,今日开启闪购专场:M275无线鼠标探底54。9元,MXMASTER直降300元。整个活动会场内的罗技键鼠皆为好价,有需求的小伙伴可不要错……网络游戏是怎么为你设置学习机制的?很多人会问我,曹老师你平时应该不看电视剧吧?曹老师你应该不玩游戏吧?可能日常的自律,让大家觉得我像个山顶洞人吧其实不管是电视剧还是游戏,我和所有人一样,都有着自然的痴迷。……169元,小米手环4标准版今日10点第二轮开售IT之家6月21日消息京东小米手环4标准版,将于今日(6月21日)10点再次开卖,售价为169元,有需求的小伙伴要提前准备好:点此购买。京喜红包将于今晚24点正式过期,勿……169元起,小米手环4标准版NFC版京东明日10点再次开售IT之家6月20日消息京东小米手环4标准版与NFC版,将于6月21日10点再次开卖,售价分别为169元、229元,有需求的小伙伴要提前准备好:点此购买。可与任何优惠叠加使……63岁山口百惠真会打扮,看了她的冬季搭配,每一套都不过时,真没有一个人能够制造那么一口钟,来为我们敲回已经逝去的时光。抛弃时光的人,时光也抛弃她,所以我们要常常回首,看看自己来时的路。即使是在时尚界,也常常利用传承款式,复古……千年文物引发思考人类科技被操控了吗?外星人是否会侵略地球现在为什么还没来今天看到一个提问:外星人是否会侵略地球?现在为什么还没来?问题下边的回复很多,不一一赘述了,而我想换个角度,从两件文物和一部科幻小说切……iQOO8系列两款新机入网配备120W充电器IT之家8月4日消息今日,型号为V2141A与V2136A的vivo5G数字移动电话机通过3C认证,均配备120W充电器。3C认证显示,这两款手机申请人、制造商、生产厂均……手机进水千万不要做这几件事1。不要开机手机进水,立马关机,开机状态,电流触动会造成多个线路的腐蚀,短路,断线,最终导致部分或多个功能的缺失,或者不开机2。不要甩动手机不要甩动手机,手机……荣耀X8发布网传特斯拉收购众泰汽车?小胡说车被车企警告【科技犬】荣耀X8发布荣耀发布了荣耀X8中档手机,荣耀X8搭载骁龙6804G处理器,配备了6GB的内存和2GB的虚拟内存,提供128GB的内置存储。运行的是基于An……华为MateBookXMateBook13MateBook1IT之家8月23日消息华为MateBookX2020款、MateBook13以及MateBook14三款机型现已正式开售。华为MateBookXi510210U8G……京山永漋河,那消失的老街作者:陈清人们喜欢恋旧,现在很多地方又兴起古镇的建设,开发旅游。但真正的很多古镇老街都消失了。人们去了大城市,留守的人越来越少,一些商铺也关门,小镇便消失了往日的繁华,退……
CBA球员按籍贯组队,辽宁独一档,广东排不进前三CBA能够在20年间不断地壮大发展,主要得益于各地不断培养出来的篮球人才。那么,如果CBA中的球员按籍贯征战比赛,哪个省份的球员最厉害呢?本赛季CBA公布了,联盟目……(经济)第六届进博会在阿根廷举办推介会新华社布宜诺斯艾利斯3月30日电(记者朱雨博)第六届中国国际进口博览会(简称进博会)30日在阿根廷首都布宜诺斯艾利斯举办推介会。阿根廷牛肉协会、红酒协会等参展机构和企业现场签署……在网上发布作品,引起了亲朋好友的意见,你们是坚持还是放弃呢?曾经有个,不曾说过我矫情、做作、高冷、难处等,等我长大点,这些词才经常出现我耳边!我为此难过,并非谁对我说了这些,而是,我总想起那个也不知去了天堂,还是去了地狱了,反正是……年轻人不愿意买定频空调,是不好用?我用了4台,终于搞明白了空调可以说是夏季的救命神器,是居家生活必不可少的电器,在降温解暑方面发挥着重要的作用。而作为空调中的定频空调和变频空调相比,因为价格相对便宜,故障率低,维修成本低,因此受……随着卡塞米罗暴露的问题曼联可以从四位免签球员中选择替代者在周日对阵南安普顿被红牌罚下之后,曼联将不得不接受未来4场国内比赛缺少卡塞米罗的事实。考虑到曼联现今对这位31岁的球员的依赖程度,这对滕哈格来说是一个沉重的打击,自从他夏天从皇……孩子出汗过多,是虚还是堵?孩子出汗多,很多人问到底怎么回事?孩子的生理特征,导致孩子比我们成年人更容易出汗,比如小宝宝吃奶时,会出汗;运动后会更容易出汗;衣服稍微穿多了,也容易出汗;入睡后一个小时……这6位当红男歌手,如今都被封杀,他们的所作所为都不值得原谅王力宏想不到,因为前妻李靓蕾的一条微博,自己苦心经营20余年的歌手生涯会毁于一旦。吃瓜群众们也没想到,当优质偶像被撕下面具的那一刻,里子竟会是如此的破碎不堪。或许,……散户应该如何利用仓位面对股灾保住本金股票市场瞬息万变,我们永远不知道机会和风险谁先来到,所以我们应该敬畏市场。迈进这个市场,我认为第一步不是研究该如何赚钱,而是研究如何规避风险、如何应对风险。先学会在市场生存,再……冯君斌大坞洪山口九女坟的由来位于山东滕州西北部的大坞镇洪山口区域,旅游资源丰富,历史文化底蕴深厚。伏羲庙、汉侯陵、于山遗址、古驿道等历史古迹保留基本完整。80多年前滕县保卫战中的洪山口阻击战在这里打响,4……建行四川省分行在内江市发放全省首笔人才易贷来源:人民网四川频道原创稿陈志友博士在推广柑橘种植技术。建行四川省分行供图太好啦!内江市支持人才的举措是越来越实在了,仅3个工作日,建行100万元的人才贷款就到账了……这7种食物有助稳定血压我们经常说高血压患者要少吃盐,其实归根到底,为的是要让高血压患者减少钠的摄入量,因为食盐中的钠离子,才是引起高血压的主要原因之一。除了减少钠的摄入以外,我们人体其实也有一……曹云金何云伟的背叛并不算什么,他才是真正伤透了郭德纲心的人德云社的名头在相声界可以说是广为人知。而一手创立德云社的郭德纲不但自己在相声艺术上造诣颇高,更是培养出了岳云鹏、张云雷等一众社内新秀。然而,高徒辈出的郭德纲也多次经历了退社和乱……
友情链接:易事利快生活快传网聚热点七猫云快好知快百科中准网快好找文好找中准网快软网