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

问题描述

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

The streams filter parameters, 列出并展示了一些突出我想要实现的目标。 only_videomime_type,或者可能是 resfps。您可以阅读他们的描述以了解他们将做什么。

现在,一起应用参数基本上意味着您正在根据您的过滤器过滤可用选项。如果您愿意,这些选项将指定上述对象以及更多,因为它是自己的下载预设。要实际选择一个 you can use 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(我相信它不会因任何人和视频而改变),即 360p 的无声视频。我尝试达到 480p 及以上,并获得了 5 秒的视频。我在此处打印了该列表。

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

我现在坚持这个方法,以后我会遇到更好的方法。希望这对任何人都有帮助!

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...