Python 使用ffmpeg处理的视频不是由标志指定的1080p
我正在使用ffmpeg+libx264转换Python中的视频 我注意到当我使用下面的代码时,输出的宽度和高度是不一致的。所有输入文件都是1080p,但输出文件有时是1080p,有时是大小的两倍或介于两者之间 这是我用来生成视频的2遍代码Python 使用ffmpeg处理的视频不是由标志指定的1080p,python,ffmpeg,video-streaming,html5-video,Python,Ffmpeg,Video Streaming,Html5 Video,我正在使用ffmpeg+libx264转换Python中的视频 我注意到当我使用下面的代码时,输出的宽度和高度是不一致的。所有输入文件都是1080p,但输出文件有时是1080p,有时是大小的两倍或介于两者之间 这是我用来生成视频的2遍代码 #Generate 1080p Movie if not os.path.exists(destination_filename_1080): pass_num = 1 while pass_num <= 2: p =
#Generate 1080p Movie
if not os.path.exists(destination_filename_1080):
pass_num = 1
while pass_num <= 2:
p = subprocess.Popen(['ffmpeg','-i', str(filename),
'-acodec' , 'aac' ,
'-ab' , '192k' ,
'-ac' , '2' ,
'-vcodec' , 'libx264' ,
'-strict' , '-2' ,
'-vpre' , 'ipod640' ,
'-threads' , '8' ,
'-s' , '1920x1080' ,
'-b:v' , '10M' ,
'-pass' , str(pass_num) ,
'-passlogfile' , random_1080 ,
'-y' ,
destination_filename_1080_temp])
p.wait()
pass_num = pass_num + 1
#生成1080p电影
如果不存在os.path.exists(目标\u文件名\u 1080):
pass_num=1
而pass_num有两件事:
1.预设文件检查:我应该确保我的预设没有给出大小。
2.参数顺序。它们在许多方面都很重要。改变你给他们看的地方
编辑:除非我们有出错案例的完整控制台输出,否则很难判断出哪里出了问题。预设文件中有什么特别的内容吗?只是mbit速率的规范,与维度无关。尝试手动对有问题的文件运行ffmpeg
,并将输出重定向到一个文件。查看该文件以寻找线索。与往常一样,完整的ffmpeg控制台输出在这种情况下会很有用。ffmpeg附带的ipod640预设不包括更改大小的选项,并且OP已经将-s 1920x1080
作为输出选项。是的,同意。最好在这里获得完整的控制台输出。我在一些文件上尝试了ffmpeg-I input.mp4-acodec aac-ab 192k-ac2-vcodec libx264-strict-2-vpre ipod640-threads 8-s 1920x1080-b:v 10M-pass 1-passlogfile random_1080-y out.mp4,每次都有效。所以想知道他面临什么问题。