用 Golang 下载 YouTube 视频
该软件包是Youtube 视频下载软件包,有关更多详细信息,请参阅 https://github.com/rg3/youtube-dl。
安装:
go get github.com/kkdai/youtube
或者
git clone https://github.com/kkdai/youtube.git go run youtubedr/main.go
在 Termux 中安装
pkg install youtubedr
用法
直接使用二进制
使用起来真的很简单,只需从 youtube 网址获取视频 ID -- 例如:
https://www.youtube.com/watch?v=rFejpH_tAHM
视频 id 是 rFejpH_tAHM。
$ youtubedr QAGDGja7kbs $ youtubedr https://www.youtube.com/watch?v=rFejpH_tAHM
将此包导入您的 golang 程序中
package main import ( "flag" "fmt" "log" "os/user" "path/filepath" . "github.com/kkdai/youtube" ) func main() { flag.Parse() log.Println(flag.Args()) usr, _ := user.Current() currentDir := fmt.Sprintf("%v/Movies/youtubedr", usr.HomeDir) log.Println("download to dir=", currentDir) y := NewYoutube(true) arg := flag.Arg(0) if err := y.DecodeURL(arg); err != nil { fmt.Println("err:", err) } if err := y.StartDownload(currentDir, "dl.mp4", "medium",0); err != nil { fmt.Println("err:", err) } }
选项
option | type | description | default value |
---|---|---|---|
-d
|
string | the output directory | $HOME/Movies/youtubedr |
-o
|
string | the output file name ( ext will auto detect on default value ) | [video's title].ext |
-d
|
string | the Socks 5 proxy (e.g. 10.10.10.10:7878) | |
-q
|
string | the output file quality (medium, hd720) | |
-i
|
string | the output file itag (13, 17 etc..) | 0 |
-info
|
bool | show information of available streams (quality, itag, MIMEtype) |
示例:
-
获取dotGo-2015-rob-pike 视频的信息以供下载
go get github.com/kkdai/youtube/youtubedr
从 dotGo 2015 - Rob Pike - Simplicity is Complicated 下载视频youtubedr -info https://www.youtube.com/watch?v=rFejpH_tAHM Title: dotGo 2015 - Rob Pike - Simplicity is Complicated Author: dotconferences -----available streams----- itag: 18 , quality: medium , type: video/mp4; codecs="avc1.42001E, mp4a.40.2" itag: 22 , quality: hd720 , type: video/mp4; codecs="avc1.64001F, mp4a.40.2" itag: 137 , quality: hd1080 , type: video/mp4; codecs="avc1.640028" itag: 248 , quality: hd1080 , type: video/webm; codecs="vp9" ........
-
下载 dotGo-2015-rob-pike-video
go get github.com/kkdai/youtube/youtubedr
从 dotGo 2015 - Rob Pike - Simplicity is Complicated 下载视频youtubedr https://www.youtube.com/watch?v=rFejpH_tAHM
-
下载视频到特定的文件夹和名称
go get github.com/kkdai/youtube/youtubedr
下载 dotGo 2015 - Rob Pike - Simplicity is Complicated 到当前目录,并将文件命名为simple-is-complicated.mp4youtubedr -d ./ -o simplicity-is-complicated.mp4 https://www.youtube.com/watch?v=rFejpH_tAHM
-
下载具有特定质量的视频
go get github.com/kkdai/youtube/youtubedr
从 dotGo 2015 - Rob Pike - Simplicity is Complicated 下载特定质量的视频youtubedr -q medium https://www.youtube.com/watch?v=rFejpH_tAHM
hd1080 质量的特例:
hd1080 需要安装 ffmpegffmpeg //check ffmpeg is installed, if not please download ffmpeg and set to your PATH. youtubedr -q hd1080 https://www.youtube.com/watch?v=rFejpH_tAHM
-
下载指定 itag 的视频
go get github.com/kkdai/youtube/youtubedr
从 dotGo 2015 - Rob Pike - Simplicity is Complicated 下载视频youtubedr -i 18 https://www.youtube.com/watch?v=rFejpH_tAHM
工作原理
- 解析你在 URL 中输入的视频 id
- 例如:
https://www.youtube.com/watch?v=rFejpH_tAHM
其视频 id 是rFejpH_tAHM
- 例如:
- 通过视频 id 取得视频信息。
- 分析和解码视频信息。
- 下载 URL 在 "url="
- title in "title="
- 从 URL 下载视频
- 需要 "url" 的字符串组合
灵感来源
- https://github.com/ytdl-org/youtube-dl
- https://github.com/lepidosteus/youtube-dl
- 拆解 Youtube 影片下載位置
- iawia002/annie
- How to get url from obfuscate video info: youtube video downloader with php
Project52
它是我的 project 52 之一。
许可
此包在 MIT 许可下使用。有关详细信息,请参阅 LICENSE。
(The first version translated by vz on 2020.08.01)