如何使用PyTube下载没有音频的youtube视频(mp4,质量好)



我已经对此进行了一两个小时的故障排除,有时会用streams.filter()方法猜测某些参数及其值。我想获取一个没有附加音频的mp4视频。你可能认为这很容易,但事实并非如此,至少对我来说是这样

列出了流过滤器参数,并提供了一些突出的参数,以实现我想要实现的目标。only_videomime_type,或者可能是resfps。你可以阅读他们的描述来了解他们将要做什么。

现在,将参数一起应用基本上意味着你可以根据你的过滤器过滤你的可用选项。选项将指定上述对象以及更多对象,因为它是自己的下载预设(如果您愿意的话(。要真正选择一个,您可以使用first()last()get_highest_resolution()等来确定您想要的下载。

我已经尝试了上面列出的几个参数,以获得一个不到5秒长的无声视频:

yt = YouTube(query)
t = yt.streams.filter(only_video=True).first()
print(t)
t.download(self.path, filename_prefix="Scout_")

有了这个输出,它看起来很有前景,但是,使用first()是很常见的,建议完成这项工作。如前所述;该查询的第一个结果";。我需要改变订单,所以我试着用last()代替,它起作用了。但是,它是一个140p的webm文件。在偶然发现这个代码结构后,我正在对它进行修改,看看我是否能获得一个没有声音的高质量mp4,而我现在遇到了一些麻烦,这让我开始写这篇文章。

是的,我正在打印流/查询结果,这些结果与我的参数一起使用,以查看我的选项。我真的需要一些关于这一点的见解,我是应该用pytube来解决这个问题,还是默认使用ffmpeg。我不想挑剔,但如果可能的话,而且不是完全不敬的话,我想用pytube本身获得这个无音频文件。

有没有想过我该如何做到这一点!

答案或解释

再摆弄一番之后。使用only_video=True似乎与某些方法不兼容,这些方法对于一个好的视频来说很有吸引力。然而,到目前为止,似乎只使用pytube,您可以获得完整长度的视频,它没有损坏,但只有360p。

t = yt.streams.filter(only_video=True).get_by_itag(itag=134)
print(t)
t.download(self.path, filename_prefix="Scout_")

这需要一个itag(我相信这对任何人和视频来说都不会改变(,即360便士的无声视频。我试着调到480便士及以上,得到了5秒的视频。我在这里打印了这份清单。

t = yt.streams.filter(only_video=True).all()
print(t)

我现在坚持这个方法,将来我会找到更好的方法。希望这能帮助到任何人!

最新更新