我已经从Youtube上下载了两个使用pytube的文件。一个是音频文件.webm扩展名。采用.mp4扩展的is自适应流8k视频。我必须结合音频和视频超过720 p的分辨率一般。为此,我使用以下FFmpeg代码
os.system("ffmpeg -i vid.mp4 -i aud.webm -c copy \""+ title +"\".mkv")
对于我下载的许多mp4视频来说,这是有效的。给出错误的原因是找不到8k的编解码器参数。我对ffmpeg不太了解。如果我做错了什么,请修复这8k视频的代码。8k视频的流输出是
<Stream: itag="571" mime_type="video/mp4" res="4320p" fps="30fps" vcodec="av01.0.16M.08" progressive="False"
type="video">
webm音频的流输出是。
<Stream: itag="251" mime_type="audio/webm" abr="160kbps" acodec="opus" progressive="False" type="audio"> #webm **same for all videos**
下面是我在同一个音频中成功地连接到的编解码器
<Stream: itag="135" mime_type="video/mp4" res="480p" fps="30fps" vcodec="avc1.4d401f" progressive="False" type="video">
我能够合并的另一个视频有以下流
<Stream: itag="137" mime_type="video/mp4" res="1080p" fps="30fps" vcodec="avc1.640028" progressive="False" type="video">
问题是为什么ffmpeg出现错误,以及如何修复下载视频和音频的代码是
from pytube import YouTube
url = "https://www.youtube.com/watch?v=Zv11L-ZfrSg"
yt = YouTube(url)
yt = yt.streams
stream=yt.order_by('resolution').desc().filter(mime_type="video/mp4").first()
stream.download(filename="vid.mp4" , skip_existing=False)
stream = yt.get_by_itag(251)
stream.download(filename="aud.webm" , skip_existing=False)
注意:我正在使用python运行ffmpeg。
发布于 2021-12-22 08:38:17
您要下载的8k视频使用AV1 https://en.wikipedia.org/wiki/AV1 https://aomediacodec.github.io/av1-isobmff/#codecsparam编码格式。
为了更好地理解它,视频编解码器av01.0.16M.08意味着以下内容
密钥在级别标识符16 ( 6.0 )中,级别4.0的解码器可以解码1080 p视频@30 for,但它不能解码1080 p@60 for,它需要级别4.1,对于4k@30 for,我们需要5.0级,60 for需要级别5.1,8k需要级别6.0或更高级别。
有关这些级别的更多信息,请参阅下面。
https://en.wikipedia.org/wiki/AV1#Levels
第7级尚未定义。
您可以看到,其中一些级别是相当新的,因为8k尚未成为主流。ffmpeg只从4.0版本开始支持AV1编解码器,并且在新版本中增加了更多的解码器支持。
因此,为了回答您的问题,您只需要更新您的ffmpeg的最新版本,它应该解决这个问题。或者你可以下载一个要求较低的解码器级别的视频,这样就足够了。所增加的资料可供参考,使偶然发现问题的人能够更好地理解问题发生的原因,我希望这将有助于解决今后类似的问题。
https://stackoverflow.com/questions/70335973
复制相似问题