【如何翻译视频 | 您所在的位置:网站首页 › i站下载视频失败 › 【如何翻译视频 |
转载(20年的教程,不过大差不差,稍微改动了一点,加绿字):https://zangchuantao.com/tech-zh/2020/use-you-get-to-download-youtube-playlist/ 摘要: 本文记录怎样使用you-get或youtube-dl工具下载整个youtube播放列表的内容。末尾顺便添加了一个Windows下的批处理命令用来批量转换视频到mp3. 2020年8月更新: 最近发现you-get好像无法下载youtube列表了,所以又重新试了一下youtube-dl,这个目前好用。它和you-get非常相像。youtube-dl而且支持跳过已经下载完的视频来避免重复下载,因此更推荐用这个。 首先声明我反对下载YouTube上的版权视频来二次传播牟利。我记录这些工具的目的纯粹是为了自己使用方便。YouTube上有很多有意思的视频,保存到本地就可以随时收看而不需要网络支持,也不用担心被删掉而找不到了,还有很多故事听听就足够了,完全没有必要开视频。我顺便搜了下相关版权知识,YouTube上的视频版权归上传者,YouTube只是提供一个展示上传者版权作品的服务,YouTube公司并不拥有任何版权。 使用you-getyou-get 是个不错的工具,https://github.com/soimort/you-get。它还有个网站https://you-get.org/, 从安装到使用都写的很详细。我搬了一些内容过来。 实时更新到最新版本:建议先安装anaconda,教程https://www.bilibili.com/video/BV17N411J7CS?p=2,而且you-get可以用cookies下载(这样可以下载需要账号登录的视频,cookies获取使用谷歌浏览器插件editthiscookies,将b站cookies保存为Netscape格式的cookies.txt,放置到命令行当前文件夹。教程:https://cnplugins.com/devtool/editthiscookie/detail.html) pip3 install --upgrade you-get下载一个视频,直接 you-get url即可: 可以先加参数 -i 来看看可以得到哪些格式的文件,默认是最高分辨率的: you-get下载命令可以先加参数 -i 来看看可以得到哪些格式的文件,默认是最高分辨率的: 加上itag参数就可以选择不同格式下载: 对于youtube播放列表的URL,进入视频作者主页后点击播放列表会列出所有视频列表,然后每个列表下都有个“查看完整详细列表”的链接,这个链接就是该链表的URL。也可以点开其中一个视频后再手动修改获得播放离别表的url。比如一个播放列表的某个视频在电脑浏览器里显示的地址是https://www.youtube.com/watch?v=-GOC7QTSYV4&list=PL5hbpwc66yGGyhrMvMWYgBB-3GiVh6YEk 手动将watch参数改为playlist,再加list参数就可以,即改成https://www.youtube.com/playlist?list=PL5hbpwc66yGGyhrMvMWYgBB-3GiVh6YEk 然后就可以用上面的命令下载了 you-get https://www.youtube.com/playlist?list=PL5hbpwc66yGGyhrMvMWYgBB-3GiVh6YEk 安装youtube-dl和ffmpegYoutube更新了视频格式后,很多高清晰度格式都是音频视频文件分离的,需要使用ffmpeg自动和并起来,所以除了安装youtube-dl,还要安装ffmpeg。 Windows:教程(https://blog.51cto.com/qchenz/5073120) 一般使用pip安装youtube-dl,实时更新到最新版本: pip3 install --upgrade youtube-dl ffmpeg不需要安装,只要下载后把ffmpeg.exe所在路径添加到系统path后就可以了。 Linux下可以搜索相关信息进行安装,本文后面记录RHEL8/Centos8下安装二者的具体步骤。 使用youtube-dl默认下载方式默认下载方式命令很简单,就是加个url参数即可。 这个url可以指向单个视频文件,也可以是列表, 它会自动选择分辨率最高的格式。这里我以https://www.youtube.com/watch?v=9o6mAYxm5CQ 这个视频为例,网页打开后发现它最高支持4K分辨率2160P, 运行下载后发现它自动选择了最高分辨率的格式(代码313和251)进行下载并自动合成,文件大小为324MB, 格式为webm。 youtube-dl https://www.youtube.com/watch?v=9o6mAYxm5CQ# 运行后显示 [youtube] 9o6mAYxm5CQ: Downloading webpage[download] Destination: How beautiful is Chengdu【民乐版成都】和我在成都的街头走一走,聆听城市的声音,感受大运的活力丨民乐也疯狂丨成都赵雷丨古筝琵琶二胡笛子-9o6mAYxm5CQ.f313.webm[download] 100% of 324.89MiB [download] Destination: How beautiful is Chengdu【民乐版成都】和我在成都的街头走一走,聆听城市的声音,感受大运的活力丨民乐也疯狂丨成都赵雷丨古筝琵琶二胡笛子-9o6mAYxm5CQ.f251.webm[download] 100% of 3.94MiB [ffmpeg] Merging formats into "How beautiful is Chengdu【民乐版成都】和我在成都的街头走一走,聆听城市的声音,感受大运的 活力丨民乐也疯狂丨成都赵雷丨古筝琵琶二胡笛子-9o6mAYxm5CQ.webm"Deleting original file How beautiful is Chengdu【民乐版成都】和我在成都的街头走一走,聆听城市的声音,感受大运的活力丨民 乐也疯狂丨成都赵雷丨古筝琵琶二胡笛子-9o6mAYxm5CQ.f313.webm (pass -k to keep)Deleting original file How beautiful is Chengdu【民乐版成都】和我在成都的街头走一走,聆听城市的声音,感受大运的活力丨民 乐也疯狂丨成都赵雷丨古筝琵琶二胡笛子-9o6mAYxm5CQ.f251.webm (pass -k to keep)加参数 -o dir/filename 来指定输出文件路径或输出文件名, 这里我指定下载完的文件名是newname.mp4, 可以发现它仍然是下载了313和251这个两个格式并合成,生成的新文件仍然是webm格式而newname.mp4被整个嵌入到新文件名里了,也就是说这个命令会忽略用户输入的文件名格式。 youtube-dl https://www.youtube.com/watch?v=9o6mAYxm5CQ -o newname.mp4[youtube] 9o6mAYxm5CQ: Downloading webpage[download] Destination: newname.mp4.f313[download] 100% of 324.89MiB in 00:18[download] Destination: newname.mp4.f251[download] 100% of 3.94MiB in 00:00[ffmpeg] Merging formats into "newname.mp4.webm"Deleting original file newname.mp4.f313 (pass -k to keep)Deleting original file newname.mp4.f251 (pass -k to keep)下载多个文件上述命令里直接用空格分开多个url即可,也可以把所有url放入一个文件,每行1个,然后加载: youtube-dl url1 url2 url3youtube-dl -a url.txt查看所有格式以及选择格式下载查看支持的视频格式和文件大小 : youtube-dl -F 可以看到一些支持的视频和音频格式,记住它们对应的数字代码如140, 137等,后续会用到: youtube-dl -F https://www.youtube.com/watch?v=9o6mAYxm5CQ # 输出如下[youtube] 9o6mAYxm5CQ: Downloading webpage[info] Available formats for 9o6mAYxm5CQ:format code extension resolution note249 webm audio only tiny 65k , opus @ 50k (48000Hz), 1.56MiB250 webm audio only tiny 85k , opus @ 70k (48000Hz), 2.06MiB140 m4a audio only tiny 130k , m4a_dash container, mp4a.40.2@128k (44100Hz), 3.44MiB251 webm audio only tiny 161k , opus @160k (48000Hz), 3.94MiB278 webm 256x144 144p 115k , webm container, vp9, 25fps, video only, 2.59MiB160 mp4 256x144 144p 130k , avc1.4d400c, 25fps, video only, 2.72MiB242 webm 426x240 240p 265k , vp9, 25fps, video only, 5.20MiB133 mp4 426x240 240p 288k , avc1.4d4015, 25fps, video only, 6.32MiB243 webm 640x360 360p 458k , vp9, 25fps, video only, 9.40MiB134 mp4 640x360 360p 627k , avc1.4d401e, 25fps, video only, 13.04MiB244 webm 854x480 480p 862k , vp9, 25fps, video only, 16.78MiB135 mp4 854x480 480p 1222k , avc1.4d401e, 25fps, video only, 26.00MiB247 webm 1280x720 720p 1725k , vp9, 25fps, video only, 32.89MiB136 mp4 1280x720 720p 2433k , avc1.64001f, 25fps, video only, 51.05MiB248 webm 1920x1080 1080p 2882k , vp9, 25fps, video only, 56.22MiB137 mp4 1920x1080 1080p 5015k , avc1.640028, 25fps, video only, 105.07MiB271 webm 2560x1440 1440p 8773k , vp9, 25fps, video only, 172.03MiB313 webm 3840x2160 2160p 16747k , vp9, 25fps, video only, 324.89MiB18 mp4 640x360 360p 490k , avc1.42001E, 25fps, mp4a.40.2@ 96k (44100Hz), 13.03MiB22 mp4 1280x720 720p 2048k , avc1.64001F, 25fps, mp4a.40.2@192k (44100Hz) (best)注意上面有些视频格式提示video only,它们就是没有声音的,这种视频文件下载后还需要再单独下载音频文件然后合成。这也就解释了最开始默认下载方式里为什么要下载313(3840x2160, video only)和251(audio only)然后再合成的表现了。 youtube-dl命令支持指定格式下载,加上 -f format_code 参数即可: youtube-dl -f format_code url 这个格式参数format_code定义很灵活,如下所示: 单个数字,比如313, 那么就下载它对应的webm文件,没有声音;140 只下载音频。 数字组合,用+连接表示合成, 如313+251。youtube-dl会下载对应视频和音频并调用ffmpeg进行合成,合成后删除原文件。 多个选项尝试匹配, 选项间用斜线/分割, 如下面的例子列出了4个组合:137+140/136+140/bestvideo+bestaudio/best, youtube-dl会挨着尝试,当存在该组合对应文件格式时,则按此组合格式进行下载。有些播放列表里的视频文件格式并不统一,比如有的支持137格式的视频,有的只支持136格式,此时上面的参数组合就可以避免因为找不到137格式而报错停止下载。 只下载音频可以采用上面的格式命令,指定一个音频格式,比如 -f 140,或者-f 251。也可以采用命令参数 -x: youtube-dl -x https://www.youtube.com/watch?v=9o6mAYxm5CQ [youtube] 9o6mAYxm5CQ: Downloading webpage[download] Destination: How beautiful is Chengdu【民乐版成都】和我在成都的街头走一走,聆听城市的声音,感受大运的活力丨民乐也疯狂丨成都赵雷丨古筝琵琶二胡笛子-9o6mAYxm5CQ.webm[download] 100% of 3.94MiB in 00:00[ffmpeg] Destination: How beautiful is Chengdu【民乐版成都】和我在成都的街头走一走,聆听城市的声音,感受大运的活力丨民乐也疯狂丨成都赵雷丨古筝琵琶二胡笛子-9o6mAYxm5CQ.opusDeleting original file How beautiful is Chengdu【民乐版成都】和我在成都的街头走一走,聆听城市的声音,感受大运的活力丨民 乐也疯狂丨成都赵雷丨古筝琵琶二胡笛子-9o6mAYxm5CQ.webm (pass -k to keep)它默认下载了251对应的OPS格式音频,保存为了.ops文件。如果需要mp3 格式,则需要借助ffmpeg 进行转换: youtube-dl -x --audio-format mp3 https://www.youtube.com/watch?v=9o6mAYxm5CQ# 输出[youtube] 9o6mAYxm5CQ: Downloading webpage[download] Destination: How beautiful is Chengdu【民乐版成都】和我在成都的街头走一走,聆听城市的声音,感受大运的活力丨民乐也疯狂丨成都赵雷丨古筝琵琶二胡笛子-9o6mAYxm5CQ.webm[download] 100% of 3.94MiB in 00:00[ffmpeg] Destination: How beautiful is Chengdu【民乐版成都】和我在成都的街头走一走,聆听城市的声音,感受大运的活力丨民乐也疯狂丨成都赵雷丨古筝琵琶二胡笛子-9o6mAYxm5CQ.mp3Deleting original file How beautiful is Chengdu【民乐版成都】和我在成都的街头走一走,聆听城市的声音,感受大运的活力丨民 乐也疯狂丨成都赵雷丨古筝琵琶二胡笛子-9o6mAYxm5CQ.webm (pass -k to keep)下载字幕--write-sub Write subtitle file--write-auto-sub Write automatic subtitle file (YouTube only)--all-subs Download all the available subtitles of the video--list-subs List all available subtitles for the video--sub-format FORMAT Subtitle format, accepts formats preference, for example: "srt" or "ass/srt/best"--sub-lang LANGS Languages of the subtitles to download (optional) separated by commas, use IETF language tags like 'en,pt', 需要配合--write-sub使用有些video的字幕是youtube自动生成的,有些是上传者手动添加的,这里以美食作家王刚的一个视频为例:https://www.youtube.com/watch?v=pffIsZ1hBvM # --all-subs 下载所有语言的字幕youtube-dl -f 134+140 --all-subs https://www.youtube.com/watch?v=pffIsZ1hBvM [youtube] pffIsZ1hBvM: Downloading webpage[info] Writing video subtitles to: 大红灯笼挂起红红火火,对联贴上新年新气象,王刚祝大家新春快乐!(请打开cc字幕看字幕)-pffIsZ1hBvM.zh-Hans.vtt[info] Writing video subtitles to: 大红灯笼挂起红红火火,对联贴上新年新气象,王刚祝大家新春快乐!(请打开cc字幕看字幕)-pffIsZ1hBvM.zh-Hant.vtt[info] Writing video subtitles to: 大红灯笼挂起红红火火,对联贴上新年新气象,王刚祝大家新春快乐!(请打开cc字幕看字幕)-pffIsZ1hBvM.en.vtt# 可以看到它同时下载了3个不同语言的字幕文件, 格式都是vtt... # 查看所有字幕信息(未下载)youtube-dl --list-subs https://www.youtube.com/watch?v=pffIsZ1hBvM [youtube] pffIsZ1hBvM: Downloading webpage[youtube] pffIsZ1hBvM: Looking for automatic captionsWARNING: Couldn't find automatic captions for pffIsZ1hBvMpffIsZ1hBvM has no automatic captions# 这是说没有youtube自动生成的字幕,所以--write-auto-sub 这个参数就不适用于这个url了。 Available subtitles for pffIsZ1hBvM: # 列出了3种语言和它们支持的字幕文件格式Language formatszh-Hans vtt, ttml, srv3, srv2, srv1zh-Hant vtt, ttml, srv3, srv2, srv1en vtt, ttml, srv3, srv2, srv1 # 只下载字幕,不下载音视频文件 --skip-download # 只下载某种语言的字幕,加--sub-lang zh-Hans来下载中文字幕youtube-dl --write-sub --sub-lang zh-Hans --skip-download https://www.youtube.com/watch?v=pffIsZ1hBvM [youtube] pffIsZ1hBvM: Downloading webpage[info] Writing video subtitles to: 大红灯笼挂起红红火火,对联贴上新年新气象,王刚祝大家新春快乐!(请打开cc字幕看字幕)-pffIsZ1hBvM.zh-Hans.vttyoutube-dl 添加多线程下载一般来说上面的方法就够用了,可实际使用中发现下载速度很慢,搜索发现可以使用aria2下载加速器。具体做法就是先下载aria2下载器,windows版本是zip文件,解压后不需要安装,只需要把该文件夹路径添加到系统path里就可以了。然后执行如下命令: youtube-dl -f 137+140 youtube-list-url --external-downloader aria2c --external-downloader-args "-x 8 -s 8 -k 1M" 然后就发现下载速度有了明显提高。 避免重复下载已下载视频有些youtube的播放列表是不断更新的,因此我们希望可以使用同一个youtube-dl 下载命令来不断更新,同时跳过已经下载完的视频。为此,可以使用如下参数 --download-archive archive.txt # 可以使用如下命令来定期更新追踪下载新的视频youtube-dl --download-archive archive.txt https://www.youtube.com/playlist?list=PLxx --external-downloader aria2c --external-downloader-args "-x 8 -s 8 -k 1M"使用ffmpeg批量转换视频到mp3文件Windows下可以使用如下批处理命令来将一个视频文件夹下所有文件转换成mp3。Windows里可以写一个.bat文件,内容如下: for %%a in ("*.*") do ffmpeg -i "%%a" -codec:a libmp3lame -qscale:a 2 "mp3\%%~na.mp3"pause 注意上面是从一个.bat文件里获得,所以各种宏变量都是用两个%,即%%a,而如果是直接在cmd.exe里运行,则需要删掉1个%, 上述命令就变成了 for %a in ("*.*") do ffmpeg -i "%a" -codec:a libmp3lame -qscale:a 2 "mp3\%~na.mp3" 微软的命令就是这么麻烦,到处是坑。%%~na的意思是不保留扩展名。上面命令里的*.* 还可以具体成只操作某个格式的,比如*.mp4就是对所有.mp4类型文件进行操作。 |
CopyRight 2018-2019 实验室设备网 版权所有 |