kiến thức Tổng hợp những addon chất cho Firefox / Chromium

Uầy uầy hot hot

Nhưng vừa thử copy đặt để file phủng như thầy gầy hướng dẫn thì KHÔNG thấy thay đổi gì.
Mở MPV -> copy link Youtube vào MPV -> vẫn đợi 15s mới bắt đầu play. Thử mấy lần rồi :(

Sao vậy ta, ae copy link Youtube vào MPV hết 5s thôi à? Nhờ thầy @toi la gay :sosad: chữa bệnh giúp em



Vô lý vậy. Cái video Tuấn Tiền Tỷ mình copy vào MPV mà 15s nó mới mở :( nhục thế. Ae làm kiểu j vậy
vẫn còn cái file ytproxy.lua đặt ở thư mục script nữa mà, fen bỏ vào chưa
 
Những vid hoạt động thì lên vid khoảng 3s, 3-4s nó load full vid vào cache, khoảng 300MB :big_smile:
Hix vid Tuấn Tiền Tỷ t mở 15s, mấy video Anh Trai giẫm gai cũng 15s. Nói chung 15s mới bắt đầu chạy video

vẫn còn cái file ytproxy.lua đặt ở thư mục script nữa mà, fen bỏ vào chưa
Có chứ, đủ cả r :(

gSMIZJC.png
 
cái này khéo do mạng quá.:amazed: chậm lắm thì 7-8s là cùng
Mạng sao được. Mở trực tiếp trên browser có mà chơi luôn phát 1.

Speedtest tầm hơn 200Mbps

L0aIM92.png


Xem Youtube trên Firefox thì 1 phát chơi luôn.

====================
Có điều khi mở ở MPV thì t phát hiện ra 1 vấn đề

Chỗ Speed chỉ tính vài trăm KiB/s trong khi của ae là vài MiB/s. Nhưng không thể nói do mạng được vì tốc độ mạng không tệ và chơi ở Browser hay FreeTube vẫn rất nhanh :/ chỉ có thể ở MPV thôi

mhTULTn.jpeg



1080 mà chạy như xé gió :extreme_sexy_girl:
flMpEx2.jpeg
 
Last edited:
hình như không phải do playlist mà do từng video thầy ạ. Ví dụ như link này em load vô tư
Nhưng link này thì tốc độ không có gì thay đổi
đúng nè cái link tuấn tiền tỉ mình mở lên vài giây là nó load xong video luôn, cái link dưới thì bình thường.
Mình có test lại thì thấy nó chỉ tải video tầm 10 phút 1 lần rồi ngừng tải, nếu tua thì nó tải tiếp
Untitled.png
 
Last edited:
Em dùng m3u8 mở cakhia sang mpv mà không phát được, bác nào pro biết cách fix giúp em không ạ
 

Attachments

  • Screenshot from 2024-07-02 00-03-16.png
    Screenshot from 2024-07-02 00-03-16.png
    1.3 MB · Views: 2
Một ông Tây Lông hảo tâm khác đã chia sẻ phần mềm viết bằng Rust giúp tăng tốc tải video khi xem bằng MPV bằng cách phân luồng như IDM/vịt pede, giúp tăng tốc tải Youtube như khi xem trực tiếp (thậm chí hơn) cũng như tăng tốc tải các trang khác hỗ trợ Range header:
  • Phân luồng giống IDM thì hơi sai, mặc định yt-dlp sẽ mặc định lựa chọn Protocol để tải Video là HTTPS, Stream ở Protocol này không chia thành các chunks như HLS mà chỉ là 1 file duy nhất. Tuy nhiên tại đây Youtube sẽ throttles các Request lớn hơn 10MB. Vậy nên để bypass được thì thay vì gửi 1 Request yêu cầu toàn bộ file thì sẽ chia thành nhiều Request nhỏ với độ lớn là 10MB. yt-dlp đã bypass thông qua cách nêu trên.
  • Tuy nhiên mpv chỉ sử dụng yt-dlp để parse link https Stream của Youtube, toàn bộ phần Download được Handle bởi ffmpeg. Không như yt-dlp, ffmpeg yêu cầu toàn bộ file thay vì yêu cầu file theo từng Range => bị Youtube throttle. Để bypass được thì cần phải yêu cầu ffmpeg Implement Ranged Requests, tuy nhiên đã bị dev ffmpeg bơ và ko biết bao giờ có.
  • Thê nên Proxy trên được sinh ra, Proxy sẽ chính sửa Range trong HTTP Request Header thay vì yếu cầu toàn bộ file, thêm giới hạn cho Range giúp Request có độ lớn là 10MB, (Range: bytes=0-) - > (Range: bytes=0-10485760), sau đó gửi đến Youtube rồi trả kết quả về cho ffmpeg. ffmpeg nhận Response sau đó Request bytes tiếp theo (từ Response) cho bytes cuối của file và nhiệm vụ Proxy vẫn sẽ là Limit Range lại. Vậy nên mọi thứ vẫn sẽ tuần tự ko có đa luồng ở đây, và Proxy chỉ có tác dụng đối với Youtube mà thôi hoặc các trang có cơ chế tương tự như Youtube.
  • Ngoài Proxy thì vẫn có cách khác đơn giản hơn là sử dụng HLS(m3u8). Không như HTTPS, HLS chia file thành nhiều segment nhỏ => ffmpeg không tạo các request qua 10MB nên sẽ không bị throttles như HTTPS. Tuy nhiên, mpv sẽ bị lỗi nêu tua đến các phần chưa được Cache. Fact nhỏ là đối với Video có 1080p Enhanced Bitrate, yt-dlp sẽ mặc định sẽ ưu tiên chọn track này và ở đây sẽ chỉ có mỗi M3U8 thôi. Nên với config mặc định đôi khi sẽ bị tình trạng lỗi không thể tua nến phần chưa được Cache là do đây.

  • Về đưa Proxy vào config của mình thì theo mình hiện tại cách sử dụng vẫn còn hơi chắp vá (nếu rảnh thì mình sẽ nghiên cứu cách tốt hơn hoặc improve Proxy trên), vậy nên mình sẽ chưa đưa vào config ai cần thì có thể theo hướng dẫn trên đây cài vào.
 
Mạng sao được. Mở trực tiếp trên browser có mà chơi luôn phát 1.

Speedtest tầm hơn 200Mbps

L0aIM92.png


Xem Youtube trên Firefox thì 1 phát chơi luôn.

====================
Có điều khi mở ở MPV thì t phát hiện ra 1 vấn đề

Chỗ Speed chỉ tính vài trăm KiB/s trong khi của ae là vài MiB/s. Nhưng không thể nói do mạng được vì tốc độ mạng không tệ và chơi ở Browser hay FreeTube vẫn rất nhanh :/ chỉ có thể ở MPV thôi

mhTULTn.jpeg
đúng nè cái link tuấn tiền tỉ mình mở lên vài giây là nó load xong video luôn, cái link dưới thì bình thường.
Mình có test lại thì thấy nó chỉ tải video tầm 10 phút 1 lần rồi ngừng tải, nếu tua thì nó tải tiếp
View attachment 2556929
hình như không phải do playlist mà do từng video thầy ạ. Ví dụ như link này em load vô tư
Nhưng link này thì tốc độ không có gì thay đổi
Ủa lạ nhỉ đây là video test thử, có tăng tốc mà 😔

Vào mpv.conf rồi copy phần profile-cond của youtube-quality rồi ném lên, khả năng là Youtube nó chọn định dạng mà không chia được như m3u8, bởi Youtube nó có nhiều giao thức:
  • HTTP
  • M3U8 (không phân luồng được, vẫn chậm)
  • DASH (mpv không biết phân luồng, dùng như HTTP)

Đoán 99% do thay đổi profile-cond thành kiểu không dùng 22/18... hoặc giống cái này:
Code:
[quality-youtube]
profile-cond=string.find(path, 'youtube') ~= nil or string.find(path, 'youtu.be') ~= nil or string.find(path, 'yt.be') ~= nil
profile-restore=copy
#720 mp4
ytdl-format=22/136+worstaudio/232+worstaudio/18/17/(mp4)[height<=?720][fps<=?30]+worstaudio[acodec~=opus]/(mp4)[height<=?720][fps<=?30]/bv+ba/ba
#ytdl-format=bestvideo[container*=dash][proto*=http_dash_segments][height<=?720][fps<=?30][vcodec!=?vp9]+bestaudio/best
#1080 mp4
#ytdl-format=bestvideo[height<=?1080][vcodec*=?avc]+bestaudio/best
#1080 av1
#ytdl-format=bestvideo[height<=?1080][vcodec*=?av01]+bestaudio/best
#1080 vp9
#ytdl-format=bestvideo[height<=?1080][vcodec*=?vp9]+bestaudio/best
#best av1
#ytdl-format=bestvideo[vcodec*=?av01]+bestaudio/best

Ngoài Proxy thì vẫn có cách khác đơn giản hơn là sử dụng HLS(m3u8). Không như HTTPS, HLS chia file thành nhiều segment nhỏ => ffmpeg không tạo các request qua 10MB nên sẽ không bị throttles như HTTPS. Tuy nhiên, mpv sẽ bị lỗi nêu tua đến các phần chưa được Cache. Fact nhỏ là đối với Video có 1080p Enhanced Bitrate, yt-dlp sẽ mặc định sẽ ưu tiên chọn track này và ở đây sẽ chỉ có mỗi M3U8 thôi. Nên với config mặc định đôi khi sẽ bị tình trạng lỗi không thể tua nến phần chưa được Cache là do đây.
Cái vụ M3U8 mình test với dev của yt-dlp rồi, không tăng tốc đâu vẫn bị Youtube bóp, chỉ có DASH/HTTP chia ra 10MB mới tăng tốc thôi.
Thử test với video này: LINK
Code:
yt-dlp -F https://www.youtube.com/watch?v=kxJUu2kCZuE
ID  EXT   RESOLUTION FPS CH │   FILESIZE   TBR PROTO │ VCODEC          VBR ACODEC      ABR ASR MORE INFO
─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
sb2 mhtml 48x27        0    │                  mhtml │ images                                  storyboard
sb1 mhtml 80x45        0    │                  mhtml │ images                                  storyboard
sb0 mhtml 160x90       0    │                  mhtml │ images                                  storyboard
233 mp4   audio only        │                  m3u8  │ audio only          unknown             [en] Default
234 mp4   audio only        │                  m3u8  │ audio only          unknown             [en] Default
139 m4a   audio only      2 │   31.61MiB   49k https │ audio only          mp4a.40.5   49k 22k [en] low, m4a_dash
140 m4a   audio only      2 │   83.90MiB  129k https │ audio only          mp4a.40.2  129k 44k [en] medium, m4a_dash
251 webm  audio only      2 │   88.31MiB  136k https │ audio only          opus       136k 48k [en] medium, webm_dash
269 mp4   256x144     30    │ ~151.94MiB  234k m3u8  │ avc1.4D400C    234k video only
160 mp4   256x144     30    │   53.87MiB   83k https │ avc1.4D400C     83k video only          144p, mp4_dash
230 mp4   640x360     30    │ ~542.60MiB  837k m3u8  │ avc1.4D401E    837k video only
134 mp4   640x360     30    │  233.49MiB  360k https │ avc1.4D401E    360k video only          360p, mp4_dash
18  mp4   640x360     30  2 │ ≈316.47MiB  488k https │ avc1.42001E         mp4a.40.2       44k [en] 360p
605 mp4   640x360     30    │ ~440.39MiB  680k m3u8  │ vp09.00.21.08  680k video only
136 mp4   1280x720    30    │  802.74MiB 1239k https │ avc1.64001f   1239k video only          720p, mp4_dash
311 mp4   1280x720    60    │ ~  2.39GiB 3780k m3u8  │ avc1.640020   3780k video only
298 mp4   1280x720    60    │    1.01GiB 1600k https │ avc1.640020   1600k video only          720p60, mp4_dash
312 mp4   1920x1080   60    │ ~  4.60GiB 7274k m3u8  │ avc1.64002A   7274k video only
299 mp4   1920x1080   60    │    1.93GiB 3047k https │ avc1.64002A   3047k video only          1080p60, mp4_dash
M3U8: mpv https://www.youtube.com/watch?v=kxJUu2kCZuE --ytdl-format=331+233
1719881727059.png



Còn nếu dùng proxy bên trên thì chạy như ngựa Xích Thố: mpv https://www.youtube.com/watch?v=kxJUu2kCZuE --ytdl-format=22/136+worstaudio/232+worstaudio/18/17
1719882018060.png
 
Ủa lạ nhỉ đây là video test thử, có tăng tốc mà 😔

Vào mpv.conf rồi copy phần profile-cond của youtube-quality rồi ném lên, khả năng là Youtube nó chọn định dạng mà không chia được như m3u8, bởi Youtube nó có nhiều giao thức:
  • HTTP
  • M3U8 (không phân luồng được, vẫn chậm)
  • DASH (mpv không biết phân luồng, dùng như HTTP)

Đoán 99% do thay đổi profile-cond thành kiểu không dùng 22/18... hoặc giống cái này:
Code:
[quality-youtube]
profile-cond=string.find(path, 'youtube') ~= nil or string.find(path, 'youtu.be') ~= nil or string.find(path, 'yt.be') ~= nil
profile-restore=copy
#720 mp4
ytdl-format=22/136+worstaudio/232+worstaudio/18/17/(mp4)[height<=?720][fps<=?30]+worstaudio[acodec~=opus]/(mp4)[height<=?720][fps<=?30]/bv+ba/ba
#ytdl-format=bestvideo[container*=dash][proto*=http_dash_segments][height<=?720][fps<=?30][vcodec!=?vp9]+bestaudio/best
#1080 mp4
#ytdl-format=bestvideo[height<=?1080][vcodec*=?avc]+bestaudio/best
#1080 av1
#ytdl-format=bestvideo[height<=?1080][vcodec*=?av01]+bestaudio/best
#1080 vp9
#ytdl-format=bestvideo[height<=?1080][vcodec*=?vp9]+bestaudio/best
#best av1
#ytdl-format=bestvideo[vcodec*=?av01]+bestaudio/best
Em có để theo kiểu này này. Nhưng để là ytdl-format=bestvideo+bestaudio/best. Thầy có cao kiến gì để fix không :bad_smelly:
 
Vào mpv.conf rồi copy phần profile-cond của youtube-quality rồi ném lên, khả năng là Youtube nó chọn định dạng mà không chia được như m3u8, bởi Youtube nó có nhiều giao thức:
  • HTTP
  • M3U8 (không phân luồng được, vẫn chậm)
  • DASH (mpv không biết phân luồng, dùng như HTTP)

Đoán 99% do thay đổi profile-cond thành kiểu không dùng 22/18... hoặc giống cái này:
Code:
[quality-youtube]
profile-cond=string.find(path, 'youtube') ~= nil or string.find(path, 'youtu.be') ~= nil or string.find(path, 'yt.be') ~= nil
profile-restore=copy
#720 mp4
ytdl-format=22/136+worstaudio/232+worstaudio/18/17/(mp4)[height<=?720][fps<=?30]+worstaudio[acodec~=opus]/(mp4)[height<=?720][fps<=?30]/bv+ba/ba
#ytdl-format=bestvideo[container*=dash][proto*=http_dash_segments][height<=?720][fps<=?30][vcodec!=?vp9]+bestaudio/best
#1080 mp4
#ytdl-format=bestvideo[height<=?1080][vcodec*=?avc]+bestaudio/best
#1080 av1
#ytdl-format=bestvideo[height<=?1080][vcodec*=?av01]+bestaudio/best
#1080 vp9
#ytdl-format=bestvideo[height<=?1080][vcodec*=?vp9]+bestaudio/best
#best av1
#ytdl-format=bestvideo[vcodec*=?av01]+bestaudio/best

Đây, của em đây
Code:
[quality-youtube]
profile-cond=string.find(path, 'youtube') ~= nil or string.find(path, 'youtu.be') ~= nil or string.find(path, 'yt.be') ~= nil
profile-restore=copy
#720 mp4
ytdl-format=bestvideo[height<=?720][vcodec*=?avc]+bestaudio/best
#profile_cond=136/232/(mp4)[height<=?720]/bv+ba/ba
#ytdl-format=136/232/(mp4)[height<=?720][vcodec*=?avc]+bestaudio/best
#ytdl-format=22/18/17/(mp4)[height<=?720]+worstaudio[acodec~=opus]/(mp4)[height<=?720][fps<=?30]/bv+ba/ba
#ytdl-format=22/18/17/(mp4)[height<=?720][fps<=?30]+worstaudio[acodec~=opus]/(mp4)[height<=?720][fps<=?30]/bv+ba/ba
#ytdl-format=bestvideo[container*=dash][proto*=http_dash_segments][height<=?720][fps<=?30][vcodec!=?vp9]+bestaudio/best
#1080 mp4
#ytdl-format=bestvideo[height<=?1080][vcodec*=?avc]+bestaudio/best
#1080 av1
#ytdl-format=bestvideo[height<=?1080][vcodec*=?av01]+bestaudio/best
#1080 vp9
#ytdl-format=bestvideo[height<=?1080][vcodec*=?vp9]+bestaudio/best
#best av1
#ytdl-format=bestvideo[vcodec*=?av01]+bestaudio/best

Hiện đang activate dòng này ytdl-format=bestvideo[height<=?720][vcodec*=?avc]+bestaudio/best
Vậy giờ sửa thành gì thầy?

M3U8: mpv https://www.youtube.com/watch?v=kxJUu2kCZuE --ytdl-format=331+233
1719881727059.png



Còn nếu dùng proxy bên trên thì chạy như ngựa Xích Thố: mpv https://www.youtube.com/watch?v=kxJUu2kCZuE --ytdl-format=22/136+worstaudio/232+worstaudio/18/17
1719882018060.png
Để ý 2 ảnh thì ngộ ra
Không nhận ytproxy -> speed chỉ vài trăm KiB/s (của em (200-300 KiB/s) còn nhanh hơn trên ảnh (165 KiB/s))
Còn khi nhận ytproxy -> speed tính bằng MiB/s như các ae đã config thành công
Nghĩ mà buồn :( sao mình gian nan thế

Chạy CLI như thầy gầy thử thì :(
Ij9xcly.png
 
Last edited:
Đây, của em đây
Code:
[quality-youtube]
profile-cond=string.find(path, 'youtube') ~= nil or string.find(path, 'youtu.be') ~= nil or string.find(path, 'yt.be') ~= nil
profile-restore=copy
#720 mp4
ytdl-format=bestvideo[height<=?720][vcodec*=?avc]+bestaudio/best
#profile_cond=136/232/(mp4)[height<=?720]/bv+ba/ba
#ytdl-format=136/232/(mp4)[height<=?720][vcodec*=?avc]+bestaudio/best
#ytdl-format=22/18/17/(mp4)[height<=?720]+worstaudio[acodec~=opus]/(mp4)[height<=?720][fps<=?30]/bv+ba/ba
#ytdl-format=22/18/17/(mp4)[height<=?720][fps<=?30]+worstaudio[acodec~=opus]/(mp4)[height<=?720][fps<=?30]/bv+ba/ba
#ytdl-format=bestvideo[container*=dash][proto*=http_dash_segments][height<=?720][fps<=?30][vcodec!=?vp9]+bestaudio/best
#1080 mp4
#ytdl-format=bestvideo[height<=?1080][vcodec*=?avc]+bestaudio/best
#1080 av1
#ytdl-format=bestvideo[height<=?1080][vcodec*=?av01]+bestaudio/best
#1080 vp9
#ytdl-format=bestvideo[height<=?1080][vcodec*=?vp9]+bestaudio/best
#best av1
#ytdl-format=bestvideo[vcodec*=?av01]+bestaudio/best

Hiện đang activate dòng này ytdl-format=bestvideo[height<=?720][vcodec*=?avc]+bestaudio/best
Vậy giờ sửa thành gì thầy?


Để ý 2 ảnh thì ngộ ra
Không nhận ytproxy -> speed chỉ vài trăm KiB/s (của em (200-300 KiB/s) còn nhanh hơn trên ảnh (165 KiB/s))
Còn khi nhận ytproxy -> speed tính bằng MiB/s như các ae đã config thành công
Nghĩ mà buồn :( sao mình gian nan thế

Chạy CLI như thầy gầy thử thì :(
Ij9xcly.png
Theo hình là bị Youtube nó chặn đó, 403 là lỗi chặn đối tượng, mạng có đang bật VPN nào không ? Bởi Youtube nó sẽ chặn ai chơi VPN không khớp IP với cái ip= trong cái url đỏ đỏ trên, với lại mạng đang dùng IPv6 đó hả thì xác định IPv6 luôn chậm hơn IPv4 nhé, tối ưu thử MPV tắt IPv6 xem:

ytdl-raw-options=force-ipv4= bỏ vào mpv.conf.
 
Back
Top