共用方式為


IWMSyncReader2::SetRangeByFrameEx method (wmsdkidl.h)

[The feature associated with this page, Windows Media Format 11 SDK, is a legacy feature. It has been superseded by Source Reader and Sink Writer. Source Reader and Sink Writer have been optimized for Windows 10 and Windows 11. Microsoft strongly recommends that new code use Source Reader and Sink Writer instead of Windows Media Format 11 SDK, when possible. Microsoft suggests that existing code that uses the legacy APIs be rewritten to use the new APIs if possible.]

The SetRangeByFrameEx method configures the synchronous reader to read a portion of the file specified by a starting video frame number and a number of frames to read. This method also retrieves the presentation time of the requested frame number.

Syntax

HRESULT SetRangeByFrameEx(
  [in]  WORD     wStreamNum,
  [in]  QWORD    qwFrameNumber,
  [in]  LONGLONG cFramesToRead,
  [out] QWORD    *pcnsStartTime
);

Parameters

[in] wStreamNum

Stream number.

[in] qwFrameNumber

Frame number at which to begin playback. The first frame in a file is number 1.

[in] cFramesToRead

Count of frames to read. Pass 0 to continue playback to the end of the file.

[out] pcnsStartTime

Start time in 100-nanosecond units.

Return value

If the method succeeds, it returns S_OK. If it fails, it returns an HRESULT error code.

Remarks

By getting the presentation time of the requested frame number, you can avoid problems caused by seeking to a delta frame. The synchronous reader begins delivering samples at key frame boundaries. You can ignore frames until you reach the presentation time of your target frame.

The file must be frame-indexed. If the call is successful, all streams are synchronized to the same position based on time.

Requirements

Requirement Value
Minimum supported client Windows 2000 Professional [desktop apps only],Windows Media Format 9 Series SDK, or later versions of the SDK
Minimum supported server Windows 2000 Server [desktop apps only]
Target Platform Windows
Header wmsdkidl.h (include Wmsdk.h)
Library Wmvcore.lib; WMStubDRM.lib (if you use DRM)

See also

IWMSyncReader2 Interface

IWMSyncReader::SetRangeByFrame