共用方式為


IAMTimelineObj::SetStartStop 方法

[與此頁面相關的功能 DirectShow是舊版功能。 它已被 MediaPlayerIMFMediaEngineMedia Foundation 中的音訊/視訊擷取取代。 這些功能已針對Windows 10和Windows 11進行優化。 Microsoft 強烈建議新程式碼盡可能使用 MediaPlayerIMFMediaEngine音訊/視訊擷取 ,而不是 DirectShow。 Microsoft 建議使用舊版 API 的現有程式碼盡可能重寫為使用新的 API。

注意

[已被取代。 此 API 可能會從未來的 Windows 版本中移除。]

 

方法會 SetStartStop 設定物件的開始和停止時間,相對於物件的父代。

語法

HRESULT SetStartStop(
   REFERENCE_TIME Start,
   REFERENCE_TIME Stop
);

參數

啟動

新的開始時間,以 100 奈秒為單位,或 –1 保留現有的開始時間。

停止

新的停止時間,以 100 奈秒為單位,或 –1 保留現有的停止時間。

傳回值

傳回下列其中一個 HRESULT 值:

傳回碼 描述
S_OK
成功。
E_INVALIDARG
無效引數。
E_NOTIMPL
未實作。

 

備註

追蹤、組合和群組不會實作此方法。 對於這些物件,開始時間一律為零,而停止時間是其包含之物件的最大停止時間。

請勿在相同追蹤內設定來源物件的重迭時間。這樣做可能會導致未定義的行為。

對於來源物件,啟動和停止時間與媒體啟動和媒體停止時間無關。 變更一組值並不會變更另一組值。 若要設定媒體啟動和停止時間,請呼叫 IAMTimelineSrc::SetMediaTimes 方法。 如需詳細資訊,請參閱 DirectShow 編輯服務中的時間

若要取得畫面精確的剪下和轉換,請將 開始停止 參數設定為框架界限。 您可以使用 IAMTimelineObj::FixTimes 方法,將時間值轉換成最接近的框架界限,或使用下列函式,從框架編號轉換成參考時間:

REFERENCE_TIME inline FrameNumToTime(LONGLONG frame, double fps)
{
    double dt = (frame * 10000000 / fps);
    if (frame >= 0) 
    {
        dt += 0.5;    }
    else
    {
        dt -= 0.5;
    }
    return (REFERENCE_TIME)dt;
}

注意

標頭檔 Qedit.h 與 7 版之後的 Direct3D 標頭不相容。

 

注意

若要取得 Qedit.h,請下載Windows Vista Microsoft Windows SDK Update 和 .NET Framework 3.0。 Qedit.h 不適用於 Windows 7 和 .NET Framework 3.5 Service Pack 1 的 Microsoft Windows SDK。

 

規格需求

需求
標頭
Qedit.h
程式庫
Strmiids.lib

另請參閱

IAMTimelineObj 介面

錯誤和成功碼