常用视频文件的下载

前言

目前是视频为王的时代,人人皆演员,人人皆导演。如何拆解各种视频也成了码农的一项技能。而首当其中的是,如何从视频网站上下视频。

you-get

下B站视频的利器。用的代理库为PySocks.
在这里插入图片描述

在这里插入图片描述

安装ffmpeg和you-get:

brew install ffmpeg
brew install you-get
brew info you-get

Ubuntu下安装:
pip install you-get

使用:
先查看信息:

you-get -i  <视频URL>
you-get -s 192.168.1.26:1081 https://xxx.be/Dwv60z_XeaE

然后指定格式下载:

you-get --format=dash-flv480 https://www.bbbli.com/video/BV12u4y1q7ns?t=18.3

yout^be-dl

youtxbe-dl 是下载神器,用的代理是原生的socket。
显示视频的所有格式:

youtxbe-dl --proxy socks5://127.0.0.1:13659/  URL --verbose -F

下载指定格式:

 youtxbe-dl --proxy socks5://127.0.0.1:13659/ -f 160 URL --verbose

yt-dlp

A youtabe-dl fork with additional features and fixes
一大特色:多线程下载。

pip install yt-dlp

-F, 参数查看有哪些分辨率
-N, --concurrent-fragments N Number of fragments of a dash/hlsnative
video that should be downloaded concurrently
(default is 1)

yt-dlp --proxy socks5://127.0.0.1:13659/ https://yoourtu.be/RqvIVZHVS1I -N 10

默认格式,高于720P的格式一般是 webm 格式

yt-dlp https://youtu.be/sKrT6mBrosc

下载视频转换成mp4(用–merge-output-format参数)

yt-dlp –merge-output-format mp4 https://youtxxxu.be/sKrT6mBrosc

下载最佳mp4视频+最佳m4a音频格式并合成mp4

yt-dlp -f ‘bv[ext=mp4]+ba[ext=m4a]’ –embed-metadata –merge-output-format mp4 https://youtuxx.be/sKrT6mBrosc

cat list.txt | xargs -n 1 -P 8 -I {
    
    } yt-dlp --cookies cookies.txt --download-archive archive.txt {
    
    }

拆解视频下载位置

會得到一串 query string 資料, 拆解資料可獲得影片
hl 為預設語言
author 為影片上載者
iurlsd 為封面圖片
thumbnail_url 為封面縮圖
length_seconds 為影片長度,以秒計算
title 為影片標題
url_encoded_fmt_stream_map 為另一串 query string 保存著影片的來源資訊,而來源資訊以 , 分類

再將 url_encoded_fmt_stream_map 拆解
quality 為影片品質,分別有:
smail 為 240p
medium 為 360p
large 為 480p
hd720 為 720p
hd1080 為 1080p
sig 為用作許可影片播放的「簽名」
type 為影片類型,分別有:
video/3gpp 為 3gp 格式
video/mp4 為 mp4 格式
video/webm 為 webm 格式
video/x-flv 為 flv 格式
url 為影片來源,都是一種 query string

要下載一個 影片,需要將 url 及 sig 以 signature 連接才能夠下載
即 &signature= 的超連結

@set_time_limit(0); // 將載入時間設定為 0 即不限操作時間,避免操作逾時
//$video_id = $_GET['video_id']; // 讓 video_id 可以透過 query string 代入,這樣可以動態拆解不同的 影片
$video_id = 'fEcnrA6RIzo';
 
$params = array(); // 宣告 $params 為 array
// 讀取  API 的 query
$query_string = file_get_contents('http://www.yotue.com/get_video_info?video_id=' . $video_id);
parse_str($query_string, $params); // 拆解 query string 載入至 $params
 
$streams = explode(',', $params['url_encoded_fmt_stream_map']); // 以 , 將 $params['url_encoded_fmt_stream_map'] 分拆
foreach ($streams as $stream){
    
    
    $s = array();
    parse_str($stream, $s);
    if (($index = strpos($s['type'], ';')) !== false){
    
    
        $s['mime'] = substr($s['type'], 0, $index); // 選取 mimetype 部分
    }
//  是因為 br 在 blog 中會變成換行,不能顯示,閣下是不需要將 br 分開
    printf('<a href="%s&signature=%s">%s-%s(%s-%s)</a><b' . 'r/>'
        , urldecode($s['url'])
        , $s['sig']
        , $params['author']
        , $params['title']
        , $s['mime']
        , $s['quality']
    );
}

链接

  • https://github.com/soimort/you-get.git
  • https://github.com/ytdl-org/youtxbe-dl
  • https://github.com/yt-dlp/yt-dlp
  • Go语言版本

猜你喜欢

转载自blog.csdn.net/jgku/article/details/132306203
今日推荐