【如何翻译视频 您所在的位置:网站首页 i站下载视频失败 【如何翻译视频

【如何翻译视频

2024-03-03 22:28| 来源: 网络整理| 查看: 265

转载(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-get

you-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和ffmpeg

Youtube更新了视频格式后,很多高清晰度格式都是音频视频文件分离的,需要使用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.vtt

youtube-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 实验室设备网 版权所有