youtube-dl、you-get的安装
在安装这两个命令行下载工具前需要先安装Python和ffmpeg 1
2pip3 install youtube-dl
pip3 install you-get1
2youtube-dl --version
you-get --version1
2pip3 install --upgrade youtube-dl
pip3 install --upgrade you-get
Install Python on Windows
Installing FFmpeg in Windows
根据自己的操作系统选择下载最新的64位或32位静态程序版本: 下载的Win10 64位静态程序版本名称大致长这样:
ffmpeg-20200225-36451f9-win64-static.zip
解压下载好的FFmpeg程序压缩包,将其目录下的bin子目录添加至系统环境变量
然后在命令行窗口输入以下命令并执行,不报错说明安装成功 1
ffmpeg -version
youtube-dl、you-get的使用(国外网站推荐前者,国内推荐后者)
1 | youtube-dl [OPTIONS] URL [URL...] |
查看视频的信息 1
2youtube-dl -F "your_video_url"
you-get -i "your_video_url"1
2youtube-dl "your_video_url"
you-get "your_video_url"
下载播放列表(推荐用 youtube-dl
)
貌似会自动识别列表,可以不用加 --yes-playlist
选项 1
youtube-dl -f "bestvideo+bestaudio[ext=m4a]/bestvideo+bestaudio/best" --merge-output-format mp4 --yes-playlist "playlist_url"
1
youtube-dl -f "bestvideo+bestaudio[ext=m4a]/bestvideo+bestaudio/best" --merge-output-format mp4 --playlist-start=5 "playlist_url"
1
youtube-dl -f "bestvideo+bestaudio[ext=m4a]/bestvideo+bestaudio/best" --merge-output-format mp4 --playlist-item=3,6,9-12 "playlist_url"
1
youtube-dl -f "bestvideo+bestaudio[ext=m4a]/bestvideo+bestaudio/best" --merge-output-format mp4 --write-sub --sub-lang=en --convert-subs=ass --playlist-item=8,9 --embed-subs "playlist_url"
1 | youtube-dl --list-subs "video_url" |
1 | youtube-dl --list-subs "https://youtu.be/WUvTyaaNkzM" |
vtt
同时下载视频和自动英文字幕(并将字幕格式vtt
转换为srt
,便于后面用FFmpeg
烧录字幕)
这时字幕的名称会在视频名称的后面加上.en, 比如:file_name.mp4
和file_name.en.srt
1 | youtube-dl --sub-lang=en --write-auto-sub --convert-subs=srt "video_url" |
同时下载视频和上传的英文字幕 1
youtube-dl --sub-lang=en --write-sub --convert-subs=srt "video_url"
you-get
下载特定清晰度的视频
1 | you-get --itag=18 'https://www.youtube.com/watch?v=jNQXAC9IVRw' |
youtube-dl 的配置文件
On Windows, the user wide configuration file locations are %APPDATA%\youtube-dl\config.txt
or C:\Users\<username>\youtube-dl.conf
. Note that by default configuration file may not exist so you may need to create it yourself.
1 | # Use this proxy |
You can use --ignore-config
if you want to disable the configuration file for a particular youtube-dl run.
You can also use --config-location
if you want to use custom configuration file for a particular youtube-dl run.
FFmpeg的使用
合并多个 mp4
视频文件
更加具体的参考下面两个链接: Concatenating media files -- FFmpeg
How to concatenate two MP4 files using FFmpeg?
1 | :: Automatically generating the input file |
用法:先将需要合并的视频放在一个空的文件夹内(文件夹路径最好不要带中文和一些特殊字符?), 此时最好将这些文件排好序,因为合并是按 mylist.txt
中的文件顺序进行依次合并的, 将上述代码保存为.bat
格式的文件,放到空的文件夹内,双击即可,此时会跳出来黑色的命令行窗口,等待其合并。
当然最保险是将上述 bat
代码拆分为两个,第一步操作完后,打开 mylist.txt
检查文件顺序是否是你想要的,不是可以对其顺序进行调整。
其中第一步是将需要的 MP4
文件名打印到 mylist.txt
,这个 txt
文件将作为第二步的输入文件。mylist.txt
的内容长下面这样: 1
2
3
4# this is a comment
file "/path/to/file1.mp4"
file "/path/to/file2.mp4"
file "/path/to/file3.mp4"cd
到需要合并文件的目录)
On Windows Command-line: 1
(for %i in ("*.mp4") do @echo file "%i") > mylist.txt
第二步开始调用 ffmpeg
按次序合并 mylist.txt
文件中的视频。
将ts视频文件转为mp4单文件
1 | ffmpeg -i "la72.ts" -vcodec copy -acodec copy "ola72.mp4" |
多个转换,批处理文件 1
2for %%a in ("*.ts") do ffmpeg -i "%%a" -vcodec copy -acodec copy "newfiles\%%~na.mp4"
pause
将srt字幕内嵌到mp4文件中
单个视频 1
ffmpeg -i "w55.mp4" -vf "subtitles='w55.srt:force_style=FontName=Segoe UI,Fontsize=22'" "ow55.mp4"
1 | for %%a in ("*.mp4") do ffmpeg -i "%%a" -vf "subtitles='%%~na.en.srt:force_style=FontName=Segoe UI,Fontsize=22'" "merge\%%~na.mp4" |
bat批处理文件
如果中文乱码,将bat
文件编码另存为ANSI
编码
替换当前目录和字目录文件的字符
1 | @echo off |
删除当前目录和子目录特定文件格式的前N个字符
1 | @echo off |
删除文件名中某个特殊字符到最后 (待完善)
起因:用youtube-dl
下载播放列表老是在文件名添加一些标识信息?如:原本所需文件名-sdngj17eerw.mp4
这个问题已得到解决,因为youtube-dl的下载文件名默认带有id,The current default template is %(title)s-%(id)s.%(ext)s
. 只需在下载时再加一个参数:-o "%(title)s.%(ext)s"
1 | @echo off |
将[]
替换成你需要的特殊字符: 1
2
3@echo off
for /f "tokens=1,2* delims=-" %%a in ('dir /a-d/b') do if exist "%%~a-%%~b" ren "%%~a-%%~b" "%%~a%%~xb"
pause1
2
3abc-wee123.txt
sddf-tthh.txt
qaq-dff-ghh.txt1
2
3abc.txt
sddf.txt
qaq-dff-ghh.txt
将当前目录和子目录(不限层级)下的所有文件列出
然后可以对其复制或者剪切操作