2017-06-19 64 views
0

Windows Media Player ActiveXコントロール(WMPlayer2)と2つのコマンドボタン、つまりcmd_PlayVideoとcmd_GetTimeCodeをExcelシートに追加しました。 Windows Media Playerでビデオを再生し、ビデオの再生中にcmd_GetTimeCodeボタンをクリックすると、ビデオのタイムコードをキャプチャしたいと思います。Windows Media Playerを使用したExcel VBA:ビデオタイムコードの取得中にランタイムエラーが発生する

IWMPControls3インターフェイスで 'currentPositionTimecode'プロパティが使用できるため、WMPlayer2.controlsからの戻り値をIWMPControls3インターフェイスにキャストしました。ただし、 'MsgBox controls.currentPositionTimecode'行は以下をスローします。

実行時エラー430:「クラスがオートメーションをサポートしていないか、または予期したインターフェイスをサポートしていません」

ようaudioLanguageCount、currentAudioLanguage、のCurrentItem、controls.getAudioLanguageID、getLanguageName、 とgetAudioLanguageDescription作業細かいとしてIWMPControls3インターフェイスの他の特性。

ビデオのタイムコードを取得するにはどうすればよいですか?

ここに2つのボタンがあります。

Private Sub cmd_PlayVideo_Click() 

MsgBox Application.Sheets("Sheet1").Range("B2") 
WMPlayer2.URL = Application.Sheets("Sheet1").Range("B2") 

End Sub 

Private Sub cmd_GetTimeCode_Click() 

Dim controls As WMPLib.IWMPControls3 
Dim Media As WMPLib.IWMPMedia 
Set controls = WMPlayer2.controls 

MsgBox controls.audioLanguageCount 
MsgBox controls.currentAudioLanguage 
If controls.isAvailable("currentItem") Then 
    Set Media = controls.currentItem 
    MsgBox Media.durationString 
    MsgBox Media.Name 
    MsgBox Media.SourceUrl 
End If 

MsgBox controls.getAudioLanguageID(1) 
MsgBox controls.getLanguageName(1) 
MsgBox controls.getAudioLanguageDescription(1) 
MsgBox controls.currentPositionTimecode 

End Sub 

答えて

-1

私はメディアの再生開始後currentPositionTimecodeパラメータを読むことだけでエラーがスローされますことに気付きました。すなわち、メディア位置が0にリセットされたとき(例えば、00:00:00)にのみエラーなしでタイムコード位置を読み取るように見える。私はこれを有効にするフラグ(CanScan?のようなもの)が必要か、メディアがSMPTEのタイムコードをサポートしていないと思われます。私はまだ研究中です。

関連する問題