V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Moonkin
V2EX  ›  程序员

油管前端如何隐藏视频播放链接的?

  •  
  •   Moonkin · 348 天前 · 2271 次点击
    这是一个创建于 348 天前的主题,其中的信息可能已经有所发展或是发生改变。
    鄙人不是前端猿,以前一直以为视频都是一个链接指向.mp4 或者.m3u8/.ts 。今天看了 b 站和 YouTube ,发现 F12 network 里面没有请求这些文件。求教这是什么实现原理?有什么关键词或者大概讲一下就行,不用太详细。
    7 条回复    2023-11-27 09:40:12 +08:00
    SunsetShimmer
        1
    SunsetShimmer  
       348 天前
    网络请求获取分段视频,请求里能找到,但不会显示成视频,因为格式可能是私有或者包装过的。

    Youtube 视频下载的第三方实现: https://github.com/yt-dlp/yt-dlp
    a8Fy37XzWf70G0yW
        2
    a8Fy37XzWf70G0yW  
       348 天前   ❤️ 3
    YT 邏輯是這樣的:

    1.使用者打開一個頁面要觀看影片
    2.播放器根據內容 ID 去重定向伺服器上獲取最近有此內容的 CDN 列表
    3.播放器嘗試連接列表中的 CDN ,如成功,則獲取 CDN 上私有格式編寫的相應格式元數據訊息
    4.以分段方式,同時嘗試獲取元數據中顯示的影像流和音頻流(如分辨率大於 1080P 獲取的是兩個流)
    5.開始載入播放器進行播放,並定期 post 使用者的播放進度到伺服器(這麼做的目的是減少帶寬消耗,並實現自動調節畫質的功能)
    estk
        3
    estk  
       348 天前 via iPhone
    m3u8 和 mpd 都是视频分片技术
    油管用的好像是 mpd ,可以做到音频和视频分开调节码率
    只知道点皮毛和关键词,细节没深究,等大神解答
    vituralfuture
        4
    vituralfuture  
       347 天前 via Android
    blob url 好像通常不会显示在浏览器开发者工具中

    另外提到私有格式的,我有一个疑问,私有格式是否影响硬件视频解码?
    siknet
        5
    siknet  
       347 天前
    油管 1080P 以上的码率才是音视频分开的
    SunsetShimmer
        6
    SunsetShimmer  
       347 天前
    @vituralfuture #4 私有格式的核心应该还是标准的视频,交给浏览器之前通过 js 修改一下。
    Satelli
        7
    Satelli  
       346 天前
    @viberconnection
    @siknet

    1080p 不是限定条件,只是音频 + 视频包在一起的最高限定为 1080p 而已,并且 YouTube 网页版也不再提供 1080p 的单文件音频 + 视频了。以 DASH 方式载入的视频下到 144p 上到 8K 都有的。
    https://gist.github.com/MartinEesmaa/2f4b261cb90a47e9c41ba115a011a4aa

    @estk HLS 也可以分开调节音频和视频码率。如 https://events-delivery.apple.com/2409nbcxymeynatwojbbrjuhryomtudb/m3u8/vod_index-oXZvssLWyjfQDEQuVuCBHPWDywaNEipk.m3u8

    @vituralfuture 要硬件解码需要走平台的硬解 API ,即 Windows 仅限 PlayReady (原生、Edge 、IE ),苹果平台仅限 FairPlay (原生、Safari )。Chrome 只有在 ChromeOS 上才有 Widevine 硬解,否则为软解。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2491 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 33ms · UTC 15:51 · PVG 23:51 · LAX 07:51 · JFK 10:51
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.