2011-02-27 78 views
1

我已经写了一些简单的代码,它与HandbrakeCLI接口将视频转换为iTunes可以处理的格式。一旦完成,我希望它自动添加到iTunes。以编程方式将转换后的视频添加到使用SDK的iTunes

从我可以从iTunes SDK文档,下面的VBScript代码应该工作讲: “上传”

Option Explicit 
Dim oiTunes 
Set oiTunes = CreateObject("iTunes.Application") 
oiTunes.ConvertFile2("D:\Development\VBScript\converted-video.avi") 
Set oiTunes = Nothing 
Msgbox "Uploaded!" 

然而,在运行时,消息出现,但iTunes尚未导入(甚至无法开始导入)任何视频文件。

任何人都可以建议我如何得到这个工作?另外,如果有人能告诉我怎样才能确定它是否已经完成了导入(因为我想在导入完成后重命名元数据),那么我真的很感激它。

回答

0

继AutomatedChaos有用的指针,我提供以下工作代码示例:

Option Explicit 
Dim oiTunes, oTracks, oAdd 
Set oiTunes = CreateObject("iTunes.Application") 
Set oTracks = oiTunes.LibraryPlaylist 
Set oAdd = oTracks.AddFile("D:\Development\VBScript\converted-video.mp4") 
Do : Loop While oAdd.InProgress = True 
Set oAdd = Nothing 
Set oTracks = Nothing 
Set oiTunes = Nothing 
Msgbox "Uploaded!" 

确保您可以通过iTunes UI首先导入视频文件,因为如果你不能,那么这将失败。

试图将任何东西放入Do .. Loop作为一个44分钟的视频添加到我的(合理低规格)计算机上约2秒钟没有意义。

0

看来oiTunes.ConvertFile2是一种返回'convert'对象的方法。可能它会将文件转换为异步,因此您可以同时执行其他VBScript代码。但是,您的代码会直接杀死oiTunes对象,同时也会杀死转换进程。
似乎有两个属性可以用来读取转换的状态:.ProgressValue.MaxProgressValue。所以,你可以创建一个循环,如:

Dim oConvert : Set oConvert = oiTunes.ConvertFile2(...) 
Do : Loop while oConvert.ProgressValue < oConvert.MaxProgressValue 
Set oConvert = Nothing 
Set oiTunes = Nothing 
MsgBox "Uploaded!" 

我没有iTunes现在,所以我不能确认这是否会解决你的问题,但我希望这是给你在正确的方向推。

+0

感谢您的指点。这说明我的代码有两个主要问题 - 扩展名应该是mp4不是avi,因为AddFile方法可以工作,所以我不需要转换文件。 – Richard 2011-02-28 23:11:12

相关问题