色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

一個關于Netflix應用程序在新機頂盒上啟動的問題

LiveVideoStack ? 來源:LiveVideoStack ? 作者:LiveVideoStack ? 2021-01-19 14:52 ? 次閱讀

并非真正使用了 WebRTC,但此處存在使用 WebRTC 技術性質的相似之處。

Netflix的應用程序可以在數百臺智能電視、電視棒和付費電視機頂盒上運行。Netflix的合作工程師的角色是幫助設備制造商在他們的設備上啟動Netflix應用程序。在這篇文章中,我們將討論一個特別困難的問題,它影響了一款設備在歐洲的正常發布。

神秘的開始

2017年底,我參加一個電話會議,其中主要討論一個關于Netflix應用程序在新機頂盒上啟動的問題。box是一款全新的Android電視設備,具有4k播放功能,基于Android開放源碼項目(AOSP) 5.0版本,又名“棒棒糖”。我在Netflix工作了幾年,過去發布過很多臺設備,但這是我推出的第一款Android電視設備。

與該設備相關的四家公司都在此次電話會議中:推出該設備的大型歐洲付費電視公司(運營商)、集成機頂盒固件的承包商(集成商)、系統芯片供應商(芯片供應商)和我(Netflix)。

這家集成機頂盒固件的承包商(集成商)和Netflix已經完成了嚴格的Netflix認證程序,但在這家電視運營商的內部測試過程中,該公司的一名高管報告了一個嚴重問題:Netflix在他的設備上播放“結巴(卡頓)”。即視頻會播放很短的時間后暫停,接著重新開始,隨后又暫停。這種情況并不會一直發生,但肯定會在機頂盒通電后的幾天內開始發生。他們提供了一段演示視頻,情況看起來很糟糕。

設備集成商找到了重現這個問題的方法:反復啟動Netflix,開始播放,然后回到設備的用戶界面。他們提供了一個腳本來自動化這個過程,有時這個過程會持續長達五分鐘的時間,但是腳本總是能夠穩定地重現錯誤。

與此同時,芯片供應商的一名現場工程師診斷出了根本原因:Netflix的Android電視應用程序Ninja傳輸音頻數據的速度不夠快。卡頓是由于設備音頻管道緩沖不足引起的。當解碼器等待Ninja傳送更多的音頻流時,播放停止,等待更多的數據到達后恢復播放。集成商、芯片供應商和運營商都認為問題已經確定,他們向我傳達的信息很明確:Netflix,你的應用程序中有一個漏洞,你需要修復它。我從通話里聽出了壓力。他們設備的上線時間推遲了,而且超出了預算,他們期待我的解決方案。

調查

我持懷疑態度。同樣的Ninja應用程序在數以百萬計的Android電視設備上運行,包括智能電視和其他機頂盒。如果Ninja存在漏洞,為什么它只出現在這款設備上?

我首先使用他們提供的腳本重現了問題,同時聯系了芯片供應商的同事,詢問他以前是否見過類似的情況(他沒有見過)。接下來我開始檢查Ninja的源代碼,我想找到傳輸音頻數據的那行代碼。我認識很多,但我在播放代碼中開始不知所措,我需要幫助。

我上樓找到了Ninja編寫音頻和視頻傳輸代碼的工程師,他幫我梳理了代碼。我自己花了一些時間研究源代碼來理解它的工作部分,并添加了我自己的日志記錄來確認我的理解。Netflix應用程序很復雜,簡單來說,它從Netflix服務器傳輸數據,在設備上緩沖數秒的視頻和音頻數據,然后一次一次地將視頻和音頻幀發送到設備的播放硬件。

圖1:設備播放管道(簡化)

讓我們花點時間來討論Netflix應用程序中的音頻/視頻管道。在每個機頂盒和智能電視上,直到“解碼器緩沖區”都是相同的,但是將A/V數據傳輸到設備的解碼器緩沖區是一個特定的程序,在它自己的線程中運行。它的例行工作是通過調用提供音頻或視頻數據下一幀的API(Netflix提供)來保持解碼器緩沖區滿狀態。在Ninja中,這一任務是由Android線程執行的。有一個簡單的狀態機和一些邏輯來處理不同的播放狀態,但在正常播放下,線程將一幀數據復制到Android播放API中,然后告訴線程調度程序等待15毫秒并再次調用處理程序。當你創建一個Android線程時,可以請求線程重復運行,就像在一個循環中一樣,但是調用處理程序的是Android的線程調度程序,不是你自己的應用程序。

60幀/秒是Netflix能播放視頻的最高幀率,設備必須每16.66毫秒渲染一個新幀,所以每15毫秒檢查一個新樣本的速度足以領先于Netflix提供的任何視頻流。因為集成商已經確定音頻流是問題所在,所以我將注意力集中放在將音頻樣本傳遞給Android音頻服務的特定線程處理程序上。

我想回答這個問題:額外的時間在哪里?假設罪魁禍首是處理程序調用的某個函數,所以我在處理程序中添加了日志消息,假設錯誤代碼是顯而易見的。很快就可以看出,處理程序中沒有任何不正常的行為,即使播放不流暢,處理器也能在幾毫秒內運行正常。

啊哈,洞察力

最后,我關注了三個數字:數據傳輸速率,處理程序被調用的時間,以及處理程序將控制權交還給Android的時間。我編寫了一個腳本來解析日志輸出,并制作了下面的圖表,它給出了答案。

圖2:可視化音頻吞吐量和線程處理器時間

橙色的線是數據從流媒體緩沖區移動到Android音頻系統的速率,單位是字節/毫秒。在這張圖表中,你可以看到三種不同的行為:

這兩個又高又尖的部分,數據速率達到500字節/毫秒。這是在播放開始之前的緩沖階段。處理程序正在盡可能快地復制數據。

中間的區域是正常播放階段。音頻數據以大約45字節/毫秒的速度傳輸。

當音頻數據以接近10字節/毫秒的速度傳輸時,卡頓區域在右側。速度還不夠快,無法維持正常播放。

不可避免的結論是橙色線證實了芯片供應商工程師的報告:Ninja傳輸音頻數據的速度不夠快。

為了理解這其中的原因,讓我們看看黃線和灰線又說明了哪些問題。

黃色的線顯示花費在處理程序本身的時間,根據處理程序頂部和底部記錄的時間戳計算。在正常播放和卡頓的區域,處理程序花費的時間是相同的:大約2毫秒。峰值顯示由于在設備上其他任務花費了時間而導致Ninja傳輸音頻數據的速度不夠快。

真正的原因

灰色的線是兩次調用處理程序之間的時間,它說明了不同的情況。在正常播放的情況下,你可以看到處理程序大約每15毫秒被調用一次。在播放卡頓的情況下,在右側大約每55毫秒調用一次處理程序。調用之間有額外的40毫秒,沒有辦法跟上播放的速度。但這是為什么呢?

我把我的發現告訴了集成商和芯片供應商 (看,這是Android線程調度程序!),但他們對這一發現并不感冒。為什么不在每次調用處理程序時復制更多的數據呢?這是一個合理的質疑,但改變這種行為涉及更深層次的變化,超出了我的準備,我繼續尋找根本原因。我深入研究了Android源代碼,了解到Android線程是一個用戶空間結構,線程調度程序使用epoll()系統調用進行計時。我知道epoll()的性能不能得到保證,所以我懷疑有什么東西以系統的方式影響epoll()。

就在這時,芯片供應商的另一位工程師救了我,他發現了一個漏洞,這個漏洞在下一個名為“棉花糖”(Marshmallow)的Android版本中已經修復了。Android線程調度程序根據應用程序是在前臺運行還是在后臺運行來改變線程的行為。后臺線程被分配額外的40毫秒(4000萬ns)的等待時間。

Android系統本身的一個深層漏洞意味著當線程移動到前臺時,這個額外的定時器值被保留。通常音頻處理線程是在應用程序處于前臺時創建的,但有時線程是在Ninja仍然在后臺時創建的。當這種情況發生時,播放就會卡頓。

經驗教訓

這并不是我們在這個平臺上修復的最后一個漏洞,但卻是最難追蹤的一個。它在Netflix應用程序之外,在播放線程之外的系統部分,所有的初始數據都表明Netflix應用程序本身存在缺陷。

這個故事確實體現了我熱愛這份工作的一個方面:我不能預知我們的合作伙伴會向我拋出的所有問題,要解決這些問題,我必須了解多個系統,與優秀的同事合作,并不斷督促自己學習更多知識。我所做的事直接影響著現實中的人們以及他們的用戶體驗。我知道,當人們在客廳里享受Netflix時,我是Netflix團隊中不可或缺的一員,是我們讓這一切成為現實。

責任編輯:lq

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 應用程序
    +關注

    關注

    38

    文章

    3292

    瀏覽量

    57850
  • Netflix
    +關注

    關注

    0

    文章

    90

    瀏覽量

    11234
  • WebRTC
    +關注

    關注

    0

    文章

    57

    瀏覽量

    11273

原文標題:Netflix 工程師的生活 —— 40毫秒的案例

文章出處:【微信號:livevideostack,微信公眾號:LiveVideoStack】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    九聯科技與海思移動機頂盒集采落地開工宴

    凱歌而行,乘勢而。近日,九聯&海思移動機頂盒集采項目落地開工宴火熱舉行,吹響奮斗的號角,啟航沖鋒的征途!
    的頭像 發表于 12-17 11:15 ?489次閱讀

    電視機頂盒互聯互通的能力

    隨著科技的飛速發展,家庭娛樂方式也不斷演變。電視機頂盒作為家庭娛樂的核心設備之,其互聯互通的能力正在成為衡量其性能的重要標準。 、互聯互通的定義與重要性 互聯互通是指設備之間能夠
    的頭像 發表于 12-16 15:42 ?332次閱讀

    電視機頂盒與流媒體設備的區別

    電視機頂盒(STB) 電視機頂盒種連接電視機與外部信號源的設備,它允許用戶接收和解碼各種視頻和音頻信號,以便在電視播放。 功能特點 信號接收與解碼 :電視
    的頭像 發表于 12-16 15:40 ?241次閱讀

    電視機頂盒信號不好怎么辦 電視機頂盒更新固件的方法

    當電視機頂盒信號不好時,可以嘗試以下方法來改善信號質量: 檢查連接線的穩固性 : 確認電視與機頂盒之間的連接線是否插緊,避免松動導致的信號丟失。 檢查連接線是否損壞,如有損壞,請更換新的連接線
    的頭像 發表于 12-16 15:38 ?1121次閱讀

    電視機頂盒連接電視的方法 電視機頂盒常見問題及解決辦法

    ) 遙控器(電視機頂盒附帶) 2. 連接電源 將電視機頂盒的電源適配器插入電源插座,并確保電視機頂盒已經接通電源。 3. 連接線纜 HDMI連接 :找到電視機和電視機頂盒
    的頭像 發表于 12-16 15:33 ?2108次閱讀

    電視機頂盒與智能電視的比較 電視機頂盒有哪些功能

    、電視機頂盒與智能電視的基本定義 電視機頂盒(Set-Top Box,STB)是種連接電視機與外部信號源的設備,它可以接收和解碼數字電視信號,將信號轉換為電視機可以顯示的格式。電視
    的頭像 發表于 12-16 15:31 ?646次閱讀

    九聯科技中標中國移動智能機頂盒產品集中采購項目

    日前,中國移動2024年至2026年智能機頂盒產品集中采購(公開采購部分)項目公布了中標候選人。九聯科技憑借深厚的技術實力、優質的產品性能和卓越的服務能力,成功中標2產品標包(包1:4K機頂盒約為
    的頭像 發表于 12-11 11:46 ?447次閱讀

    湯誠科技機頂盒5V降壓DCDC、音頻驅動芯片解決方案

    湯誠科技主營音頻功放芯片、電源管理芯片、MOS,機頂盒應用上產品線物料豐富、性能優異、品質優良、價格有優勢,有多款5V降壓DCDC、音頻驅動芯片可供終端工程師選型。 隨著科技的發展,電視已經從20
    的頭像 發表于 04-23 10:18 ?785次閱讀
    湯誠科技<b class='flag-5'>機頂盒</b>5V降壓DCDC、音頻驅動芯片解決方案

    用于數字機頂盒的電源管理IC TPS652x數據表

    電子發燒友網站提供《用于數字機頂盒的電源管理IC TPS652x數據表.pdf》資料免費下載
    發表于 04-09 10:36 ?0次下載
    用于數字<b class='flag-5'>機頂盒</b>的電源管理IC TPS652x數據表

    九聯科技推出首款星閃+4K機頂盒

    近日于上海盛大舉辦的2024年中國家電及消費電子博覽會(AWE 2024),九聯科技以款全新亮相的首款星閃+4K機頂盒吸引了全球觀眾的目光。作為星閃技術
    的頭像 發表于 03-20 09:27 ?1364次閱讀

    用于數字機頂盒的電源管理IC TPS652x數據表

    電子發燒友網站提供《用于數字機頂盒的電源管理IC TPS652x數據表.pdf》資料免費下載
    發表于 03-06 14:03 ?0次下載
    用于數字<b class='flag-5'>機頂盒</b>的電源管理IC TPS652x數據表

    應用在機頂盒遙控器中的2.4GHz無線芯片

    機頂盒遙控器是用于控制機頂盒,進而控制電視機的遙控器。以機頂盒遙控器為例,其遙控器按鈕由前后兩部分組成,前部分按鈕是用來代替電視機遙控器的,而后
    的頭像 發表于 02-29 09:48 ?971次閱讀
    應用在<b class='flag-5'>機頂盒</b>遙控器中的2.4GHz無線芯片

    求助機頂盒配置

    這臺機頂盒配置是什么配置?求助
    發表于 02-23 22:02

    iptv機頂盒怎么連接 iptv機頂盒和網絡機頂盒有什么區別

    和其他互聯網內容。本文中,我們將討論IPTV機頂盒的連接方式以及與傳統的網絡機頂盒之間的區別。 IPTV機頂盒的連接方式可以通過有線或無線網絡實現。首先,我們來看
    的頭像 發表于 02-05 13:40 ?2694次閱讀

    機頂盒怎么選擇信號源 機頂盒反應特別慢怎么辦

    反應緩慢的問題。 第部分:如何選擇信號源 菜單選擇信號源:大多數機頂盒都配有菜單按鈕,用戶可以通過菜單來選擇信號源。遙控器找到菜單按鈕,按下后會彈出
    的頭像 發表于 01-31 11:44 ?4250次閱讀
    主站蜘蛛池模板: hdsexvideos中国明星| 达达兔欧美午夜国产亚洲 | 亚洲高清中文字幕免费 | 疯狂做受XXXX高潮欧美日本 | 久久亚洲精品专区蓝色区 | 久久久精品免费免费直播 | 小p孩玩成年女性啪啪资源 小777论坛 | 俄罗斯性孕妇孕交 | 欧美14videosex性欧美成人 | 抽插内射高潮呻吟V杜V | 高傲教师麻麻被同学调教123 | 国产亚洲精品AV麻豆狂野 | 日韩中文无线码在线视频 | 成人午夜精品无码区久久漫画日本 | 国产伦精品一区二区三区精品 | 最近中文字幕在线中文高清版 | 在野外被男人躁了一夜动图 | V8成品人视频 | 果冻传媒在线观看进入窗口 | 和老外3p爽粗大免费视频 | 黄 色 网 站 免 费 涩涩屋 | 良家人妻无码专区九色颜射 | 污污内射久久一区二区欧美日韩 | 果冻传媒在线看免费高清 | 国产又粗又猛又爽黄老大爷 | 玩弄人妻少妇500系列网址 | 免费的av不用播放器的 | 性生生活大片又黄又 | 黑丝女仆恋上我 | 亚洲国产精品免费观看 | 激情内射亚州一区二区三区爱妻 | 两个奶头被吃得又翘又痛 | 欧美日韩久久久精品A片 | 脱jk裙的美女露小内内无遮挡 | 两个奶被男人揉了一个晚上 | 美女强奷到抽搐在线播放 | 人人干人人爽 | 99九九精品视频 | 久久视频这里只精品99热在线 | 奶好大下面流了好多水水 | 伊人亚洲综合网色 |