如何从Youtube搬运一个视频?
本文最后更新于 2023年11月2日 下午
今天刷油管看到了Joma发的新小视频, 感觉非常有意思, 萌生了翻译一下搬运到b站的想法
这里记录一下整个从下载 视频, 音频到编辑, 翻译, 合并双语字幕的整个工作流
youtube视频下载
现在最稳妥的youtube的视频下载方式就是通过github的这俩插件, 其中前者在github上已经达到了惊人的112k
star, 而后者是前者的优化升级版本
youtube-dl
: https://github.com/ytdl-org/youtube-dl
yt-dlp
: https://github.com/yt-dlp/yt-dlp
但是经过我的测试, youtube-dl
的下载速度不佳(一度40KB/s), 不知道为什么yt-dlp
速度快很多(10MB/s) (百兆宽带 + 科学上网)
这里以yt-dlp
为例, 展示下如何下载视频, 音频和字幕文件
下载直接到release页下载操作系统对应的可执行文件就好了, 我这里用的windows
btw, 下面的许多步骤都是基于你已经安装了ffmpeg
并配置好环境变量的基础上的.
ffmpeg安装: https://ffmpeg.org/download.html
命令
请先确认你的终端走了代理, cmd可以参考
set https_proxy=xx
, powershell可用$env:https_proxy=xx
下载视频和音频
yt-dlp.exe -F https://www.youtube.com/watch?v=asdf
: 查看可下载项
yt-dlp.exe -f [ID] https://www.youtube.com/watch?v=asdf
下载第一列ID对应的项
注意到VCDOEC
和ACODEC
标识了该项是音频or视频, 可以直接通过下面的命令下载并合并音视频:
yt-dlp.exe -f [ID1]+[ID2] https://www.youtube.com/watch?v=asdf
下载字幕
先用yt-dlp.exe --list-subs https://www.youtube.com/watch?v=asdf
查看所有字幕支持的语言
然后yt-dlp.exe --write-subs --sub-format SRT --sub-langs en --skip-download https://www.youtube.com/watch?v=asdf
--skip-download
表示不下载源视频
下载SRT格式的英文字幕, 如果下载下来为VTT格式的, 直接把VTT文档中的前两行删除, 然后文件名后缀为.srt
即可
顺带一提: 字幕翻译可以不必在这里下载翻译的字幕, 可以在下面的字幕制作中一起翻译
字幕编辑
推荐一个非常好用的开源字幕编辑器subtitleedit
https://github.com/SubtitleEdit/subtitleedit/releases
支持:
- 导入字幕文件视频并实时编辑查看
- 基于google翻译字幕
- 修改字幕样式
- etc
在编辑好字幕后
- 点击:
文件-保存
保存翻译后字幕 - 点击:
文件-保存原始字幕
保存英文字幕
字幕合并
目前字幕分为翻译和原始两个文件, 我们制作双语字幕期望他们一上一下出现, 可以自己写个简单的python脚本处理, 我这里网上随便找了一个: https://stackoverflow.com/questions/69868981/how-to-merge-multiple-subtitle-files-in-python
1 |
|
然后进行: python3 srt_merge.py subs1.srt subs2.srt -o final.srt
即可
注意提前安装一下srt模块: pip install srt
将srt嵌入视频
当我欣喜若狂的将嵌好字幕的视频发到b站后, 发现字幕并没有被显示, 原来使我都没搞清楚外挂字幕和内嵌字幕
软字幕 (内挂字幕)
软字幕是通过stream copy流拷贝的方式进行的, 一般保存为mkv
文件, 打开可以发现可以用视频播放器调整字幕大小等.
1 |
|
这里推荐一个批量嵌入当前文件夹下所有MP4和同名SRT文件的bat:
1 |
|
硬字幕 (内嵌字幕)
内嵌字幕就是直接把字幕合并死到视频里
可以通过
1 |
|
来操作
如果视频本身就是mkv的, 可以:
1 |
|
来操作
注意上传到b站等视频平台最好直接硬字幕嵌入再上传.
或者直接上传源视频文件和srt文件(不过b站连<br>
都解析不出来, 太菜了)