2011-02-27 2 views
1

Я написал простой код, который взаимодействует с HandbrakeCLI, чтобы преобразовать видео в формат, который может обрабатывать iTunes. Как только это закончится, я хочу, чтобы он автоматически добавлялся в iTunes.Программно добавьте преобразованное видео в iTunes с помощью SDK

Из того, что я могу сказать, из документации 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'. Вероятно, он преобразует файл asynchronic, поэтому вы можете выполнить другой код 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