用 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_tAHMhd1080 质量的特例:
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)