环境

演示环境:linux

要求

linux 环境能够科研上网(透明模式)

安装 ffmpeg

1
2
3
4
5
6
wget https://johnvansickle.com/ffmpeg/releases/ffmpeg-release-amd64-static.tar.xz
tar xf ffmpeg-release-amd64-static.tar.xz
cp ffmpeg-5.1.1-amd64-static/ffmpeg /usr/bin/
chunli@blog:~/youtobe_dl$ ffmpeg #运行测试
ffmpeg version 5.0.1-static
chunli@blog:~/youtobe_dl$

网页音乐 URL

1
2
3
4
5
https://www.youtube.com/watch?v=S_OdveEXq7Y
https://www.youtube.com/watch?v=sNtbumfu1Z8
https://www.youtube.com/watch?v=hpMAc2m6d3c
https://www.youtube.com/watch?v=1x8fsVFLP80
https://www.youtube.com/watch?v=mLCoCHxFxY8

2023.09.01 更新

youtube-dl 已失效

使用yt-dlp 替代

1
2
3
4
wget https://github.com/yt-dlp/yt-dlp/releases/download/2023.07.06/yt-dlp -O yt-dlp
chmod +x yt-dlp

用 yt-dlp代替 youtube-dl, 两者的使用参数也兼容

youtube-dl 已经失效 2023.09.01

安装 youtube-dl

1
2
3
wget https://youtube-dl.org/downloads/latest/youtube-dl
chmod +x youtube-dl
chunli@blog:~/youtobe_dl$ sudo cp youtube-dl /usr/bin/

开始下载音乐

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
youtube-dl --extract-audio --audio-format best https://www.youtube.com/watch?v=S_OdveEXq7Y
[youtube] S_OdveEXq7Y: Downloading webpage
[youtube] S_OdveEXq7Y: Downloading player d759e46a
[download] Destination: 2022抖音熱歌一小時好聽歌曲不間斷:目及皆是你、熱愛105度的你⋯⋯-S_OdveEXq7Y.webm
[download] 30.3% of 73.49MiB at 49.47KiB/s ETA 17:40


chunli@blog:~/youtobe_dl$ ./youtube-dl --extract-audio --audio-format best https://www.youtube.com/watch?v=S_OdveEXq7Y
[youtube] S_OdveEXq7Y: Downloading webpage
[youtube] S_OdveEXq7Y: Downloading player d759e46a
[download] Destination: 2022抖音熱歌一小時好聽歌曲不間斷:目及皆是你、熱愛105度的你⋯⋯-S_OdveEXq7Y.webm
[download] 100% of 73.49MiB in 25:24
[ffmpeg] Destination: 2022抖音熱歌一小時好聽歌曲不間斷:目及皆是你、熱愛105度的你⋯⋯-S_OdveEXq7Y.opus
Deleting original file 2022抖音熱歌一小時好聽歌曲不間斷:目及皆是你、熱愛105度的你⋯⋯-S_OdveEXq7Y.webm (pass -k to keep)

chunli@blog:~/youtobe_dl$ ll
total 114M
-rw-r--r-- 1 chunli chunli 73M Jan 1 12:12 2022抖音熱歌一小時好聽歌曲不間斷:目及皆是你、熱愛105度的你⋯⋯-S_OdveEXq7Y.opus
chunli@blog:~/youtobe_dl$

查看音频信息

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
chunli@blog:~/youtobe_dl$ ffprobe -show_streams 2022抖音熱歌一小時好聽歌曲不間斷:目及皆是你、熱愛105度的你⋯⋯-S_OdveEXq7Y.opus
Input #0, ogg, from '2022抖音熱歌一小時好聽歌曲不間斷:目及皆是你、熱愛105度的你⋯⋯-S_OdveEXq7Y.opus':
Duration: 01:15:32.93, start: 0.007500, bitrate: 134 kb/s
Stream #0:0(eng): Audio: opus, 48000 Hz, stereo, fltp
Metadata:
encoder : Lavf59.27.100
[STREAM]
index=0
codec_name=opus
codec_long_name=Opus (Opus Interactive Audio Codec)
profile=unknown
codec_type=audio
codec_tag_string=[0][0][0][0]
codec_tag=0x0000
sample_fmt=fltp
sample_rate=48000
channels=2
channel_layout=stereo
bits_per_sample=0
id=N/A
r_frame_rate=0/0
avg_frame_rate=0/0
time_base=1/48000
start_pts=360
start_time=0.007500
duration_ts=217580520
duration=4532.927500
bit_rate=N/A
max_bit_rate=N/A
bits_per_raw_sample=N/A
nb_frames=N/A
nb_read_frames=N/A
nb_read_packets=N/A
extradata_size=19
DISPOSITION:default=0
DISPOSITION:dub=0
DISPOSITION:original=0
DISPOSITION:comment=0
DISPOSITION:lyrics=0
DISPOSITION:karaoke=0
DISPOSITION:forced=0
DISPOSITION:hearing_impaired=0
DISPOSITION:visual_impaired=0
DISPOSITION:clean_effects=0
DISPOSITION:attached_pic=0
DISPOSITION:timed_thumbnails=0
DISPOSITION:captions=0
DISPOSITION:descriptions=0
DISPOSITION:metadata=0
DISPOSITION:dependent=0
DISPOSITION:still_image=0
TAG:language=eng
TAG:encoder=Lavf59.27.100
[/STREAM]
chunli@blog:~/youtobe_dl$

ffprobe基本使用

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
ffprobe xxx.mp4                   //查看信息
ffprobe -show_format xxx.mp4 //输出格式信息
ffprobe -show_streams xxx.mp4 //输出每个流的具体信息
ffprobe -show_frames xxx.mp4 //显示帧信息
ffprobe -show_packets xxx.mp4 //查看包信息


ffprobe支持多种格式的输出,包括XML、INI、JSON、CSV、FLAT等。
如何定制输出格式呢,ffprobe -print_format 或者 ffprobe -of 来格式化:
ffprobe -print_format json -show_streams xxx.mp4 //输出每个流的具体信息(以JSON格式)
ffprobe -print_format xml -show_streams xxx.mp4 //输出每个流的具体信息(以XML 格式)


ffprobe -select_streams v -show_packets xxx.mp4 //查看音频
ffprobe -select_streams a -show_packets xxx.mp4 //查看音频
ffprobe -select_streams a:0 -show_packets xxx.mp4 //选择音轨 0