創作內容

2 GP

YouTube 的音訊格式

作者:玄暗烏黛墨縲黑黓焦皂│2019-06-06 23:17:57│贊助:4│人氣:152
站在巨人的肩膀上可以看得更遠,
本篇採用了由 maple3142 製作的 本地 YouTube 下載器 作爲研究工具之一。

大神做的工具就是不一樣,看看這下載次數... (截於 20190606)



回到正題。

YouTube 影片的音訊格式都是 webm,其編碼格式不是 vorbis 就是 opus
(這是爲了能在可接受範圍內達到更高的壓縮率,以及更快的壓縮速度)

基於上述理由,所以想要看到 mp3 格式基本上是不可能。
本圖來自維基百科。可以看到 mp3 完全輸 vorbis 與 opus,自然不會採用。


那,沒事研究這個幹什麼呢?

其實我一直都很想寫一個腳本,是可以擷取片段並下載的。

爲了實現這個夢想,我又學到了所謂的 HTTP range requests,並採取這個方式達到下載部分檔案。

本以爲離成果就差一步了,沒想到現實還是十分殘忍的:
  • 如果 Range 設定爲 0-99999,會下載一個 100KB 整的檔案,可以正常播放,但是檔案長度會錯誤(估計是把時間長度寫在標頭之類的),結果大概會像這樣:

    .
  • 如果設定爲取中間的話,如 10000-99999,那麼會載下一個 90KB 整的檔案,然後....

    嗚嗚嗚嗚嗚嗚...
    .
  • 也許是沒抓到標頭?那我試試這個... "0-9999, 40000-99999" ,抓一個 70KB 的檔案:

    嗚嗚嗚... 代誌果然不是憨人想的這麼簡單QAQ

不試啦!顯然 opus, vorbis 不能像 mp3 那樣可以裁中間還能播放的
除非我能看懂 opus 的規格,然後再利用 base64 來重組,不然想只用腳本且不用第三方服務的話,這個功能不可能辦到。

唉...


最後附上範例程式碼:
fetch(location.href, { headers: { "Range" : "bytes=0-9999"} }).then(res => res.blob().then(blob => {
    var a = document.createElement('a');
    var url = window.URL.createObjectURL(blob);
    var filename = `${Date.now()}.ogg`;

    a.href = url;
    a.download = filename;
    a.click();
    window.URL.revokeObjectURL(url);
}))

引用網址:https://home.gamer.com.tw/TrackBack.php?sn=4418681
All rights reserved. 版權所有,保留一切權利

相關創作

同標籤作品搜尋:youtube|audio|codecs|vorvis|opus|mp3|javascript|ogg

留言共 1 篇留言

Mos
這議題用youtube-dl跟ffmpeg好像就能解決了
https://unix.stackexchange.com/questions/230481/how-to-download-portion-of-video-with-youtube-dl-command

06-10 13:53

玄暗烏黛墨縲黑黓焦皂
youtube-dl 可是神器呢,我幾乎天天在用(嘿嘿嘿嘿

可是,我不知道為什麼,早在很久以前就想自己寫一個下載工具了 (那是在看到開頭說的工具之前)。
不過礙於完全沒有概念,這個願望就一直拖拖拖拖、拖到近期才發現這個大關卡。(嗚嗚嗚

不過看起來這道關卡也不是不能跨越的...
以 opus 來說,它的 spec 貌似是公開的,所以我只要... 算了,我還是讀好我的英文再說了...
06-10 15:08
玄暗烏黛墨縲黑黓焦皂
附帶一提,我一直想做的是僅利用 userscript 就能達成,意外地做法和開頭用的工具相同,可惜不同的是,它辦到了,而我沒有QQ06-10 15:10
我要留言提醒:您尚未登入,請先登入再留言

2喜歡★LianSheng142 可決定是否刪除您的留言,請勿發表違反站規文字。

前一篇:【隨記】論自信的重要性... 後一篇:【冷知識】史上最短的月份...

追蹤私訊

作品資料夾

strive0603巴哈的大夥
夢想與現實,選哪一個?有時候一個決定,可以推向巔峰,也可以推向地獄🤔看更多我要大聲說19分前


face基於日前微軟官方表示 Internet Explorer 不再支援新的網路標準,可能無法使用新的應用程式來呈現網站內容,在瀏覽器支援度及網站安全性的雙重考量下,為了讓巴友們有更好的使用體驗,巴哈姆特即將於 2019年9月2日 停止支援 Internet Explorer 瀏覽器的頁面呈現和功能。
屆時建議您使用下述瀏覽器來瀏覽巴哈姆特:
。Google Chrome(推薦)
。Mozilla Firefox
。Microsoft Edge(Windows10以上的作業系統版本才可使用)

face我們了解您不想看到廣告的心情⋯ 若您願意支持巴哈姆特永續經營,請將 gamer.com.tw 加入廣告阻擋工具的白名單中,謝謝 !【教學】