ootd什么意思| 落日余晖什么意思| 胃胀不舒服吃什么药| 没吃多少东西但肚子很胀是什么| 电解质什么意思| 潮汕立冬吃什么| 今年什么生肖年| 宝宝支气管炎吃什么药| 毛囊炎什么症状| 无以回报是什么意思| 异常的反义词是什么| 木薯是什么| 孩子注意力不集中是什么原因| 处女膜是什么颜色| eblan是什么品牌| 沉香有什么作用与功效| 做梦梦见僵尸是什么预兆| span是什么意思| 火麻是什么植物| 看正月初一是什么生肖| 狗癣用什么药最有效| 飞刃是什么意思| 桃子不能和什么一起吃| 11.10是什么星座| 杵状指见于什么疾病| 红细胞分布宽度偏高是什么意思| 纲是什么意思| au990是什么金| 激素六项都是查什么| 鸡蛋清敷脸有什么好处和坏处| 帝王蟹什么季节吃最好| 肝癌有什么症状| 9.10是什么星座| 争辩的近义词是什么| 直男是什么意思| 口甜是什么原因引起的| 尚可是什么意思| 长脸型适合什么样的发型| 男人得了hpv有什么症状| 猿是什么动物| 牙痛是什么原因| 浅表性胃炎吃什么药好| 致癌是什么意思| 老年斑用什么药膏可以去掉| 为什么右眼一直跳| 露酒是什么| 今天是什么日子| 喝茶对身体有什么好处| 心里不舒服挂什么科| 处理是什么意思| hoegaarden是什么啤酒| 头发里长痣代表什么| 跳蚤是什么| 即兴是什么意思| 双鱼座是什么性格| 法令纹上的痣代表什么| 很困但是睡不着是什么原因| 抚琴是什么意思| 草字头下面一个高字读什么| 多吃黄瓜有什么好处和坏处| 雾化后为什么要漱口| 紫癜是什么意思| spao是什么牌子| 蝎子的天敌是什么| 婴儿大便有泡沫是什么原因| c14和c13有什么区别| 腿毛多是什么原因| 做梦梦见僵尸是什么预兆| 玻璃的原材料是什么| 枸杞什么时候吃最好| 低头族是什么意思| 六月什么星座| 12月20号是什么星座| 月桂酸是什么| 辰砂和朱砂有什么区别| 龙头凤尾是什么生肖| 鸽子补什么| 十八大什么时候| 增强免疫力吃什么药| 4月2号什么星座| 圣母什么意思| 阴盛阳衰什么意思| 开半挂车需要什么证| 上寒下热体质吃什么中成药| 梵是什么意思| 梦见缝被子是什么意思| 女性下面长什么样| 回族信仰什么教| 开放性神经管缺陷是什么意思| 什么手机拍照好看| 更年期什么症状| 重阳节是什么生肖| 胸长什么样| 喝蒲公英根有什么好处| 尿路感染看什么科室| 代谢慢是什么原因| 操逼什么意思| 发蜡和发泥有什么区别| 尿多是什么回事| 什么是事实婚姻| 跳蚤长什么样子| 吃干饭是什么意思| 恩裳是什么档次的衣服| 香蕉什么时候吃最好| 岳飞属什么生肖| 高筋小麦粉适合做什么| 一什么对联| 什么声什么气| 脾大是什么意思| 心率过慢有什么危害| 籍贯写什么| 三个山是什么字| 内痔疮吃什么药好得快| 绿萝叶子发黄是什么原因| 肠梗阻挂什么科| 项链折了意味着什么| 牙补好了还会痛什么原因| pco2是什么意思| 炖牛肉放什么料| 做蹲起有什么好处| 心肌缺血吃什么好| 补铁有什么作用和功效| 喝什么水最解渴| 武的部首是什么| 骨折挂什么科| 肚脐眼下面是什么部位| 白色和什么颜色搭配最好看| 喝醋有什么好处和坏处| 假体隆胸什么材料好| 右耳朵发烫是什么征兆| id医学上是什么意思| adp是什么| 唇炎用什么药膏| 梦见桥断了是什么意思| 无孔不入是什么意思| 银屑病是什么病| 什么星星| 人为什么会便秘| 经颅多普勒检查什么| 为什么大便会拉出血| ahc属于什么档次| l是什么意思| 牛角尖是什么意思| 活血化瘀吃什么药| 三天打鱼两天晒网什么意思| 关羽字什么| 男人精子少吃什么药| 脚气用什么药好| 徒刑是什么意思| 乌鸡放什么炖补气补血| 脚指甲盖凹凸不平是什么原因| 偈语是什么意思| 离心是什么意思| zqsg是什么意思| 梦见红色的蛇是什么意思| 今是什么结构| 肺结节增殖灶什么意思| 何德何能是什么意思| 老想喝水是什么原因| hpv感染是什么症状| 胃炎吃什么药效果好| 五什么六什么| 体寒湿气重喝什么茶好| 什么泡面最好吃| 肝炎是什么原因引起的| 什么什么有力| 姓彭的女孩子取什么名字好| 吊瓜是什么瓜| 湿疹有什么忌口的食物| 做梦梦见狗是什么意思| 愚昧什么意思| 脱髓鞘是什么病| 检查肠胃挂什么科| emoji是什么意思| lily是什么花| 巴雷特是什么| 左下腹痛挂什么科| acl医学上是什么意思| 脂肪肝什么东西不能吃| 肚子老是疼是什么原因| 神经衰弱什么症状| 凝血酶是什么| 避火图是什么| 小暑节气吃什么| 素色是什么颜色| 93鸡和94狗生什么宝宝| 血脂厚有什么症状| 贫血是什么意思| 什么的教学楼| 今天是什么月| 尿路感染吃什么消炎药| 鸡肉炖什么好吃| 橘络的功效与作用是什么| 320是什么意思| 8月2号是什么星座| 胃病看什么科室| 八字比肩是什么意思| 灰指甲不治疗有什么后果| 迪丽热巴什么星座| iic是什么意思| 脑白质病变是什么意思| 女性肾虚是什么原因导致的| 杨柳代表什么生肖| 什么是粉丝| 手指脱皮是缺什么维生素| 眼皮跳是什么原因引起的| nu11是什么意思| qd医学上是什么意思| 壮丁是什么意思| 五服是什么意思| 女的排卵期一般是什么时间| cpv是什么病毒| 红斑狼疮是什么病图片| 胸疼是什么原因引起的| 抛锚是什么意思| 人工荨麻疹是什么原因引起的| 鱼子酱是什么鱼的鱼子| 口腔脱皮是什么原因引起的| 什么争鸣成语| 脾胃不好吃什么药好| 巡视组组长什么级别| 胆红素高说明什么| 眼角痒是什么原因| 副处是什么级别| 端坐呼吸常见于什么病| 什么人容易得老年痴呆| 回族不吃什么肉| 时隔是什么意思| 慢性鼻炎吃什么药| 幅度是什么意思| 吃什么东西能养胃| 1月29号什么星座| 胃热吃什么药效果好| 颈部ct能检查出什么| 心慌是什么引起的| 做造影什么时候做最好| 甚好是什么意思| 1964年是什么命| 什么是肌张力| infp是什么意思| 次元是什么意思| 521代表什么含义| 反流性食管炎吃什么中药| 同型半胱氨酸高有什么症状| 衬衫搭配什么裤子好看| 肾不好会出现什么症状| 补气补血吃什么好| 双花红棍什么意思| 盐吃多了有什么危害| 头孢是治疗什么的| 刚怀孕有什么症状| 小腿发胀是什么原因| 诸葛亮是一个什么样的人| 痰核流注什么意思| 手肿是什么原因引起的| 鸡柳是什么肉| 718什么星座| 肚脐右边疼是什么原因| 中暑喝什么水| 婴儿呛奶是什么原因引起的| 蛟龙是什么| 宫颈糜烂用什么药| 痛风可以吃什么水果| 人情世故什么意思| 百度

View in English

  • Global Nav Open Menu Global Nav Close Menu
  • Apple Developer
Search
Cancel
  • Apple Developer
  • News
  • Discover
  • Design
  • Develop
  • Distribute
  • Support
  • Account
Only search within “”

Quick Links

5 Quick Links

Videos

Open Menu Close Menu
  • Collections
  • Topics
  • All Videos
  • About

More Videos

  • About
  • Transcript
  • 尼泊尔记者团结束访华回国

    百度 肚子痛吃什么药

    HTTP Live Streaming enables the reliable delivery of media content over a wide variety of network conditions. Learn best practices in HLS authoring, see how to verify your streams using the HTTP Live Streaming tools, and apply the results to improve the performance of your streams.

    Resources

      • HD Video
      • SD Video
    • Presentation Slides (PDF)

    Related Videos

    WWDC17

    • Advances in HTTP Live Streaming

    Tech Talks

    • Authoring 4K and HDR HLS Streams
  • Search this video…

    Hello. Welcome to this session on Validating HTTP Live Streams. My name is Eryk. I'm a media engineer at Apple. Let's get started. What are we doing when we validate a stream? We're trying to ensure the stream is correct. At least in terms of its structure.

    Structural checks can't find all the potential problems, but it will eliminate a lot of them.

    To be more precise, we first want the playlist and segments to be properly formatted. That is, is the software going to be able to parse the stream? Second, we have some additional requirements. For example, the HLS spec does not require I frame playlists. But we want to require them, because they improve the experience for the user.

    Third, we want these streams to reflect established best practices.

    Ultimately, this is all in service of making sure the stream plays well on your devices.

    So let's talk about the specifications we have.

    The most important is the HLS specification itself. If you've been working with HLS for any length of time, you've probably read this document a time or two.

    It is an Internet Engineering Taskforce -- IETF, internet draft. You can find it just by searching on the web for "draft pantos".

    The first version was published seven years ago. We updated two or three times a year. It details the structure of playlists. What kinds of tags exists, and their format. And explains the responsibilities for the clients and the server.

    More recently we introduced a new document. The HLS Authoring Specification.

    This is available in the reference library. We first published it last fall just for tvOS. For WWDC, we've updated it to cover iOS and OS X as well. This document tries to cover what constitutes well-structured HLS content.

    The requirements in the authoring specification come from several sources. Some echo requirements from the HLS specification. For example, where discontinuities should be. What your playlist duration should be. Some have to do with device support. For example, that all your video needs to be H.264. Or that you can't have more than 60 frame per second content.

    Others come from the desired user experience. For example, the I-Frame intervals that we expect. Or, the fact that we want you to support trick play.

    A number are informed by the past seven years of our experience and our analysis. I'm talking about the recommendations we have around delivery. The bitrates we recommend. And our recommendations around privacy and security.

    The requirements I've listed here are just some examples to give you a flavor of what's in the document. The specification itself is broken into categories. Like video encoding. Trick Play. Media segmentation. Delivery and so on.

    Now of course we don't expect you to do this validation by hand. So let's look at the tools we provide. But first, you need to get the tools. Everything important about HLS can be found here at the developer streaming page, developer.apple.com/streaming.

    Now if we scroll down a bit, down -- halfway down on the right, there is a link to the "Tools" download.

    Now please note you will have to log in with a developer enabled Apple ID in order to access this page. But remember that developer accounts are free. Now once you've done that, you end up on the downloads page. The download itself is a disk image which contains an installer package. Now the screenshot here is a little out of date. You should see a newer disk image dated June 2016 or later. We do typically update the tools several times a year.

    Now by the way, if you are viewing this during WWDC, the new version may not have been posted yet. After you've run the installer, you end up with sever tools. And I want to remind you that these tools run only on OS X.

    The first two -- the validation are what I'll cover in the rest of this talk.

    The next three tools are segmenters for files, streams, and subtitles. And I wanted to mention as a quick side that the subtitle segmenter is useful for breaking up the large web VTTT into a set of segmented web VTT's. The last two tools, Variant Playlist Creator is used to create master playlists.

    And the last one is used to format timed metadata that you can then insert using the segmenters. Now all of these tools have manned pages. And you can pass any of these attached H option to get help.

    But before we talk about the validation tools, I want to make a short pitch for mediafilesegmenter. It's simple to call, you just pass it a movie file.

    It produces a media playlist and media segments. While this tool has a lot of options, it's not as complicated as it might seem. The options break into a few categories.

    Options having to do with naming files. With structuring playlists.

    How to do encryption and so on. Even if you don't use this introduction, the mediafilesegmenter can be a good cross check on whatever process you do use to segment.

    So on to validation.

    Media stream validator is the core tool.

    You can call it with your master playlist.

    And it produces output on the terminal and the json file. Now this json contains everything that was important in the output, and more data besides.

    A couple of options that I want to call out. First of all you can adjust the path and the name of the json file. And you can adjust the timeout. Well, what's the timeout? By default, the validator times out. That is, it stops processing after five minutes. Now this may not be enough time to process a big video on demand stream. And for live content, while five minutes is fine for your initial checks, you'll want to do some checks over a much longer period, once you determine that the stream is basically correct.

    Here's what the media stream validator output looks like.

    So here we're calling media stream validator with URL.

    And first it tells you the version number. And then it outputs some trace as it's downloading playlists and files.

    And then it outputs information about every variant, rendition and I-Frame variant that it found. Now this can be hard to digest. So we created HLS report. This is a python script that takes the json and summarizes and condenses it.

    And it produces an HTML file as output.

    The name of that file is the same as the name of your json file, except the extension is changed.

    And again, there are some options I want to call out. We can change the name of the HTML file.

    The dash I or dash ID option is helpful when you want to match HTML output to portions of the json file. And I'll give you some more details about how that works when I go through the examples.

    Now the verbose option is a very handy option that gives you a lot of information about every variant and rendition. Unfortunately, I don't have time to go into detail about that output. But I wanted to call it out as something that is available.

    One quick aside here. You should validate your streams before you submit to the App Store.

    And also, when you submit to the App Store, you should include a test stream URL in your notes field so that the reviewers have a stream that they can look at.

    I'd like to run some demos. But rather than run all this on the screen and have you try to follow along and squint at tiny text, I've captured the output and I'll guide you through it. First, a little command line sample.

    Run media stream validator. And notice I'm giving the name of the json file. And I've just got a fake URL here to give you the flavor.

    Now we've seen the output before, so I'll skip that. But remember that this might take several minutes to run.

    Now once it's completed, we can run HLS report. Passing at the json that media stream validator created.

    If HLS report works well, we don't have any output. Just the HTML file.

    So if we look in our current directory, we'll see there are just two files around. The json that media stream validator created. And the HTML file that HLS report created.

    So let's take a look at some example reports.

    First, I'm going to start with a playlist that has several common errors.

    This is what a report looks like.

    The first thing you want to examine is the stream type.

    Now usually, this is VOD, or LIVE, or EVENT.

    These reflect a three kind -- basic kinds of streams that HLS supports. But you could get the value "UNKNOWN". And this means that we weren't able to read the playlists. Or worse, you could get the value mixed. Now this can mean that you had some unknowns. That is, that some of the media playlists couldn't be read. Or worse, it could be that you actually have conflicting types. Like for example, some of your variants claim to be EVENT, and some claim to be LIVE.

    Now the next item in the report is the variant overview table. It has one entry for each video variant.

    Now if we happened to have our stream type as mixed, that will be an added column in this table that indicates the playlist type. If we look over to the right, we can see that there are more columns. And in particular, if it's a VOD we're going to have a percent processed column. Now if this is less than 100%, that means that the timeout wasn't long enough. Now if you have live content, you won't see the percent process. Instead you'll see two columns. Average segment count, and average playlist duration.

    Now the next thing you want to check is the percent difference column. This shows you how much greater the measured bitrate is than the value that was declared in the master playlist.

    Now these values are way too high. Notice that variant one has a -- is 40% over what it should be. Now these values should be in the range of minus 10% to positive 10%.

    If the value here is positive, that means your declared value should be increased. And if the value is negative, your declared value should probably be decreased. Now notice we've actually got two of these. Because in our playlist we declared both the bandwidth and the average bandwidth. We are able to compare the declared and measured values for both.

    Now sometimes looking at this in terms of percentage can be a little hard to see what the real difference is. So if you add the -- pl option, meaning playlist, to your HLS report command line, you'll see two new columns.

    Playlist rate. And playlist average rate.

    So with this, we can see that for example, for variant one, the declared value is 392 kilobits per second. But the measured value was 551 kilobits per second. Now let's switch back to a version without the -p option and scroll down a bit.

    There's another table, the rendition overview.

    In this master playlist we have audio as a separate stream. That makes it a rendition, and so it gets reported here.

    Following this, we have our must fix issues. Now must fix issues are things which are essential for correct playback. Or things which we consider so important that we made them hard requirements.

    You see item #2 and #4 here are what we were just talking about. The fact that the peak and average bit rates, that the declared and measured values don't match up.

    Now item 3 we'll address in a later example.

    Scrolling down farther, we now have our should fix issues. Should fix issues are things which we strongly encourage you to do. Now these are followed lastly by the report information. The report information is so that we can backtrack to which version of media stream validator and HLS report was used. This is important if you pass us in a bug report, the output from HLS report. Or if you're even going back and looking at something after you've downloaded a more recent version of the tools.

    Now item 5 here is telling us that we don't have any captions or subtitles in our playlist. We'll fix this in our next example.

    Let's look at item number 7.

    So item number 7 says that our default video variant is not what we suggest.

    And it's telling us about variant #8.

    So let's scroll back up to the variant overview. And we can see that item #8 has the item number highlighted. That's how we can tell it's the default variant. Now remember the default variant is the variant that the client's going to play initially.

    It's the first variant in the master play list. And notice that this one, the max rate is 8 MB per second. That's way too high as a default.

    Okay. Those are some common problems that you might have. In our second example, we've taken the first example and fixed the problems I pointed out.

    We've adjusted the declared values, so now the percent difference is nearly zero.

    We've fixed the default variant to be something more reasonable -- variant #4 in this case -- by moving a different media play list to the first position in the master playlist.

    And if we look over on the right-hand side, we fixed our timeout, so we're now processing the entire playlist.

    Now we had a should fix item about captions. We fixed that by adding a subtitle playlist.

    Now notice as a subtitle's rendition -- rendition #12 -- doesn't have a max or average rate.

    That's because the subtitle playlist is not processed. And we put an n/a over in the percent processed column to remind us that this is in process.

    But we still have one big must fix, and that's no I-Frame playlist.

    So how does the report change when we add I-Frame playlist in? The first part looks the same, but let's scroll down.

    Now, in addition to the other overview tables, there's an I-Frame variant overview. Now notice we're a little off on our percent difference values here. But these are well within the range. Remember, that's +/- 10%.

    Now let's talk about these two columns over here. Scaled average and multiplier. Scaled average is the affective worst case average data rate of the I-Frame playlist.

    Yeah, that's kind of a mouthful. Remember that the measured, average bit rate represents the data rate at a 1 X playback speed. But the whole point of I-Frames of Trick Play is to play back at greater than 1 X speed. Now the multiplier tells us the lowest playback rate at which we will hit that worst case value.

    Higher rates are going to be no worse, because we will drop frames in order to keep the actual displayed frame rate at a constant value. What you should do with these values is compare the scaled average data rate here, against the normal variant data rate that has the same resolution.

    These should be close in value, or the I-Frame variant should be lower in value. Otherwise, Trick Play could cause a drop in resolution.

    Now in this report, I've also got another new column. That's because I added the -- id option to HLS report. Now as I mentioned before, this helps you find the same data in the json file.

    So let's look for this first one, data ID 16. Which is our lowest resolution I-Frame playlist. Let's look for that in the json.

    So here's an abbreviated text view of the json. The top level of the json is a dictionary. And we're interested in the variance value. Which is an array of dictionaries.

    Now one of those dictionaries will have data ID 16.

    And I want to note here that these are not in order by data ID.

    Now this one with data ID 16, that's the json variant entry whose data matches the row in the report. That is the lowest I-Frame variant.

    Now, I've skipped a lot of the data. There's much more information than this slide shows.

    Use your favorite tool for digging around json files, or write yourself some special purpose tools. Now, these json's can get very large. It's not uncommon for them to be over 100,000 lines in size.

    For our last example, we took that playlist and we added multiple kinds of audio to it. So the top looks pretty similar. Let's scroll down and look at our renditions. Now, rather than just that single, stereo audio, we've added two multi-channel audio renditions as well. One is AC-3 that is Dolby Digital. That one's called the aud2.

    And one is EC-3, Dolby Digital Plus.

    One we call aud3. So let's go up and look at our variance section.

    Now, notice that because AC-3 and EC-3 are not substitutable, and neither are they substitutable with AAC, each one has its own default variant.

    That is, once we choose aud2, the AC-3, we will default to variant #12. Because that variant is the first one in the aud2 group that appears in the master playlist.

    Similarly, if we chose EC-3, we would default to variant #20.

    Now notice there's a bitrate difference between the aud2 and aud3 variance. For example, variant #9 and variant #17. This is due to the different bitrates of the audio. The bitrate you'll see here for the variant is the combined bitrate including the renditions.

    Okay. That's it for my examples. Where can you find some examples of your own to look at? Well, there are three examples pointed to off of the streaming page. If you go to developer.apple.com/streaming, there's a pointer to the examples page. And you could dig the URLs out of this page.

    Or, you could just read them on this slide.

    The first two will have complaints when you validate. That's because these streams were created a long time ago, and we deliberately decided not to upgrade them. But that third variant is a new one, and should be almost perfect.

    All right, it's time to wrap up.

    Here are the only three things I absolutely want you to remember.

    Obey the authoring spec. Validate, validate, validate your streams. And include a test stream URL when you submit your app. For more information, go to the WWDC site, and use this session's number, 510. There's a lot of cool new stuff this year in HTTP live streaming. So I encourage you to attend or watch the talk, What's New in HTTP Live Streaming. Thank you, and have a great conference.

Developer Footer

  • Videos
  • WWDC16
  • Validating HTTP Live Streams
  • Open Menu Close Menu
    • iOS
    • iPadOS
    • macOS
    • tvOS
    • visionOS
    • watchOS
    Open Menu Close Menu
    • Swift
    • SwiftUI
    • Swift Playground
    • TestFlight
    • Xcode
    • Xcode Cloud
    • SF Symbols
    Open Menu Close Menu
    • Accessibility
    • Accessories
    • App Extensions
    • App Store
    • Audio & Video
    • Augmented Reality
    • Design
    • Distribution
    • Education
    • Fonts
    • Games
    • Health & Fitness
    • In-App Purchase
    • Localization
    • Maps & Location
    • Machine Learning
    • Open Source
    • Security
    • Safari & Web
    Open Menu Close Menu
    • Documentation
    • Tutorials
    • Downloads
    • Forums
    • Videos
    Open Menu Close Menu
    • Support Articles
    • Contact Us
    • Bug Reporting
    • System Status
    Open Menu Close Menu
    • Apple Developer
    • App Store Connect
    • Certificates, IDs, & Profiles
    • Feedback Assistant
    Open Menu Close Menu
    • Apple Developer Program
    • Apple Developer Enterprise Program
    • App Store Small Business Program
    • MFi Program
    • News Partner Program
    • Video Partner Program
    • Security Bounty Program
    • Security Research Device Program
    Open Menu Close Menu
    • Meet with Apple
    • Apple Developer Centers
    • App Store Awards
    • Apple Design Awards
    • Apple Developer Academies
    • WWDC
    Get the Apple Developer app.
    Copyright ? 2025 Apple Inc. All rights reserved.
    Terms of Use Privacy Policy Agreements and Guidelines
    谷丙转氨酶什么意思 锦纶是什么材料 怀孕孕酮低有什么影响 什么血型 ig是什么
    脑梗挂什么科室 多汗症是什么原因 打嗝是什么原因 被口是什么感觉 慢性炎伴鳞化是什么意思
    为什么胃有灼热感 whoo是什么牌子 香港代购什么东西好 鼹鼠是什么动物 胰腺炎不能吃什么
    6月13日是什么日子 医学mr是什么意思 左眼屈光不正是什么意思 治疗风湿有什么好方法 cl是什么单位
    女孩子喜欢什么礼物hcv9jop0ns5r.cn 湘潭市花是什么hcv8jop7ns9r.cn m是什么bysq.com 鼻炎吃什么药效果最好hcv9jop5ns2r.cn 新生儿便秘吃什么好hcv8jop6ns6r.cn
    脱脂牛奶是什么意思hcv9jop6ns0r.cn 单硬脂酸甘油酯是什么hcv8jop6ns7r.cn 什么品牌奶粉好消化hcv8jop0ns0r.cn 属羊人佩戴什么旺自己hcv9jop8ns3r.cn 芒果是什么季节的hcv8jop7ns2r.cn
    朕是什么时候开始用的shenchushe.com 维民所止什么意思hcv8jop0ns0r.cn 细菌性感冒吃什么药效果好hcv7jop6ns8r.cn 左边小腹痛什么原因女hkuteam.com 一模一样的意思是什么hcv8jop9ns5r.cn
    乡政府属于什么单位hcv7jop4ns5r.cn hivab是什么检测hcv8jop9ns4r.cn 为什么会闪电bfb118.com 蒸汽机是什么hcv8jop7ns1r.cn 舌头发麻是什么情况hcv7jop6ns4r.cn
    百度