回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>我正在尝试转换一堆视频在我的iPad上播放。我使用的是subprocess模块,据我所知,它在脚本的另一个进程中启动了一个二进制文件。我不知道如何处理两遍编码,这要求第一个进程在第二个开始之前终止。在</p>
<p>这是我的代码:</p>
<pre><code>def convert(filename):
extension = filename[-3:]
destination_filename_720 = filename[-4:] + '-a720p' + '.mp4'
destination_filename_1080 = filename[-4:] + '-a1080p' + '.mp4'
p = subprocess.Popen(['ffmpeg','-i', str(filename) ,
'-acodec' , 'aac' ,
'-ab' , '160k' ,
'-ac' , '2' ,
'-vcodec' , 'libx264' ,
'-strict' , '-2' ,
'-vpre' , 'ipod640' ,
'-threads' , '8' ,
'-s' , '1280x720' ,
'-b:v' , '2000k' ,
'-pass' , '1' ,
'-y' ,
destination_filename_720])
p = subprocess.Popen(['ffmpeg','-i', str(filename) ,
'-acodec' , 'aac' ,
'-ab' , '160k' ,
'-ac' , '2' ,
'-vcodec' , 'libx264' ,
'-strict' , '-2' ,
'-vpre' , 'ipod640' ,
'-threads' , '8' ,
'-s' , '1280x720' ,
'-b:v' , '2000k' ,
'-pass' , '2' ,
'-y' ,
destination_filename_720])
</code></pre>
<p>只要调用convert()函数,就会立即生成两个进程。在</p>
<p>第二个进程失败,因为第一个进程尚未完成。在</p>
<p>我该怎么解决这个问题?或者,有更好的方法吗?在</p>