位元組跳動音視訊面試一面掛,轉拿騰訊音視訊 offer

語言: CN / TW / HK

theme: Chinese-red

一、面試官: 視訊為什麼需要壓縮

心理分析:視訊壓縮在音視訊領域是一個恆久不變的話題,有壓縮也就意味有解壓操作,我們把壓 縮稱為編碼 解壓成為解碼。它們是成對出現的,做音視訊最難的就在音視訊編解碼。如何提高音 視訊播放效率,在不犧牲視訊質量下 做高度壓縮就顯得格外重要了。面試官想問的問題並不是壓 縮了什麼,而是編碼中對視訊幀做了什麼

求職者:需要求職者對視訊編碼有所瞭解,接下來我們從幀內壓縮,與幀間壓縮講起

  • 未經壓縮的數字視訊的資料量巨大 下圖一分鐘的視訊量 差不多需要68G
  • 儲存困難:一張32G的U盤只能儲存幾秒鐘的未壓縮數字視訊。
  • 傳輸困難 : 1兆的頻寬傳輸一秒的視訊需要大約10分鐘。

二、面試官: 封裝格式是什麼

心理分析:很多人對音視訊的概念停留在 蒼老師的小電影上,只能理解他是一個視訊檔案。面試官考 的對視訊檔案下的封裝格式,封裝格式裡面的內容有沒有了解

求職者:首先需要從封裝格式概念講起,慢慢深入到封裝格式基礎下,然後散發解封裝與封裝過程

(1)封裝格式(也叫容器)就是將已經編碼壓縮好的視訊軌和音訊軌按照一定的格式放到一個檔案中,也就 是說僅僅是一個外殼,可以把它當成一個放視訊軌和音訊軌的資料夾也可以。 (2)通俗點說視訊軌相當於飯,而音訊軌相當於菜,封裝格式就是一個碗,或者一個鍋,用來盛放飯菜的容 器。 (3)封裝格式和專利是有關係的,關係到推出封裝格式的公司的盈利。 (4)有了封裝格式,才能把字幕,配音,音訊和視訊組合起來。 (5)常見的AVI、RMVB、MKV、ASF、WMV、MP4、3GP、FLV等檔案都指的是一種封裝格式。

舉例MKV格式的封裝

三、面試官: 一個視訊檔案是否可以完成倒放(或者你們的倒放如何實現)

心理分析:面試官考的是 是否有經歷過音視訊剪輯相關的經驗,需要從求職者中得到的答案,不是 “能”或者“不能” 而是分析為什麼不能倒放,

不能倒放的本質原因,對I B P有有沒有了解

求職者:倒放在視訊剪輯中 是必備功能,按常理來看,倒放肯定是能夠實現的,但是問題就出現在 這裡,求職者如果對視訊編碼原理不理解的話,對視訊倒放肯定打不上來的,求職者需要首先答對 “一個視訊不能實現倒放,兩個檔案可以" 這個入手, 再從編解碼入手 講解為什麼不能實現倒放

答案

第一種方式: 1. 從第一個gop然後順序解碼 2. 將一個解碼的gop的yuv寫入檔案中 3. 將第二個gop順序解碼yuv寫入檔案 4. 第三個gop序列,以此類推....

然後倒序讀入記憶體中,進行編碼即可.

缺點:如果檔案過大,不能使用此方法,因為yuv檔案較大,一分鐘yuv就有1-2G左右,有可能撐爆sdcard.

第二種方式 1. 全部遍歷視訊一遍,獲取一共有多少gop序列 2. 跳到(seek)到最後一個gop的I幀,然後把這個gop解碼的yuv存放在sdcard 3. 再逆序讀出這個解碼的gop的yuv,進行編碼,這樣最後一個gop就變成了第一幀的gop; 4. 接下來seek到倒數第一個gop的I幀,依次類推,把每個gop解碼、然後編碼

其實在音視訊崗位面試中,問到得遠遠不止上面的相關問題,上述知識舉例,還有更多內容可以面試題可以參考:

1.什麼是I幀 P幀 B幀? 2.簡述H264視訊編碼流程? 3.視訊能倒放嗎,倒放如何實現? 4.硬編碼與軟編碼有什麼區別? 5.你對sps 和pps的理解? 6.如何從一段殘缺H264資料 解析出畫面? 7.講講MediaCodec硬編碼底層解碼機制? 8.音訊播放過快,視訊慢,如何選擇丟幀 9.位元速率和解析度都會影響視訊的清晰度 10.生產者和消費者的關係 11.sps和pps的區別 12.……

對一些沒有學習過、瞭解過音視訊這塊知識點的朋友,彷彿是在看天書一般,在這裡請大家不要著急,在這為大家準備了《Android 音視訊開發入門到精通》的學習筆記:https://qr18.cn/Ei3VPD,幫助大家快速提升。