2011-02-27 77 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

相關問題