此命令下载视频并将自动生成的youtube字幕嵌入到文件中。
youtube-dl.exe -ci -f "bestvideo[ext=mp4]"+"bestaudio[ext=m4a]" --write-auto-sub --embed-subs --merge-output-format mp4 https://www.youtube.com/watch?v=k4rCdHsdiss然而,副标题只是嵌入。我希望它被烧毁/硬编码,这样它就可以在不嵌入的支持平台上播放,比如跑步机。
我使用的是windows 10
发布于 2019-12-14 04:35:33
youtube-dl不能单独烧掉字幕。您需要使用像FFmpeg或avconv这样的后置处理器。youtube-dl在内部使用它们来执行一些任务。当您成功地使用bestvideo+bestaudio参数时,您已经在系统中安装了其中一个参数。avconv是FFmpeg的一个分支,所以它们基本上都接受相同的参数。我将在这里展示FFmpeg的案例。
youtube-dl有一个向后处理器添加参数的功能,但我不知道如何使用它来解决这个任务。
另一种可能是使用--exec标志。遗憾的是,我现在没有Windows机器,所以我只编写了Linux变体。
youtube-dl -f "[height=360][ext=mp4]+bestaudio[ext=m4a]" --write-sub --write-autosub --embed-subs --exec "mkdir temp && ffmpeg -i {} -vf subtitles={}:force_style='FontName=Arial' -acodec copy temp/{} && mv -f temp/{} {} && rm -r temp" --restrict-filenames AO4In7d6X-c这是一个单行命令,但它有几个缺陷:
--restrict-filenames才能使其工作。没有更好的文件名。。
因此,我最好的猜测是,在下载了youtube-dl视频之后,手动使用FFmpeg或者使用批处理脚本。虽然没有在Windows上进行测试,但它应该运行得很好。
ffmpeg.exe -i "input.mp4" -vf subtitles="filename='input.mp4':force_style='FontSize=20,FontName=Arial'" -c:v libx264 -x264-params crf=22 -preset fast -profile:v high "output.mp4"input.mp4必须是一个带有嵌入式subtitles.libass的支持下编译。键入没有参数的ffmpeg.exe并查找--enable-libass。libx264也是推荐的。要调优编码的速度,crf参数。数字越小,质量越好,文件大小也越大。从16到30的数字是最佳的。baseline并降低级别。。
https://stackoverflow.com/questions/59303838
复制相似问题