2011-11-22 51 views

回答

2

首先,我想,你需要知道什麼格式(編碼/所含的)你要流中。

我在想h264。使用Windows 7媒體基礎創建h264輔助函數。 您需要創建一個拓撲。源讀取文件和接收器將解碼和編碼格式轉換爲h264。所有你需要的是源和一個接收器。你實際上不需要解碼器和編碼器。拓撲生成器計算需要插入的內容。

有一個CreateTranscodeTopology功能,但不會幫助你,因爲它的編碼數據寫入到文件中。這就是爲什麼你需要創建自己的拓撲。

只有你需要寫的東西是實現IMFByteStream類。

你的接收器應該帶你實現這個字節流。您的實現「寫入」函數將寫入您想要發送數據的套接字。所以也許你可以將你的套接字傳遞給你的IMFByteStream實現或回調函數的構造函數。

我也建議你把其他的一些功能,打印語句,你需要在IMFByteStream實現,因爲SinkWriter調用某些東西一樣。 GetCapabilities,所以你至少應該返回。

HRESULT STDMETHODCALLTYPE NetworkOutputStream::GetCapabilities(__RPC__out DWORD  *pdwCapabilities){HRESULT hr=S_OK; 
printf("GetCapabilities\n"); 

*pdwCapabilities= (MFBYTESTREAM_IS_READABLE|MFBYTESTREAM_IS_WRITABLE|MFBYTESTREAM_IS_SEEKABLE); 

return hr; 
} 

話雖如此,如果你有你的客戶端(「HTML5瀏覽器),我會建議你使用‘MFCopy’例如在播放器。

創建拓撲結構主要是爲播放之類的東西。所以,解碼並編碼它的移動速度應該發揮,但所有你需要的是編碼文件併發送它的線 所以看看MFCopy並實現自己的IMFByteStream。而不是創建一個接收器寫入本地文件系統通過你的IMFByteStream到水槽

+0

謝謝 - 最好我會WMV格式(VC-1,Windows媒體9視頻編解碼器,W流indows媒體音頻編解碼器)。那種方法在這種情況下仍然可行嗎? – Warpin