2011-10-10 110 views
2

我們一直致力於處理原始H.264和AAC內容的流媒體應用。我們使用MediaStreamSource向MediaElement提供樣本,並且在我們使用PC SilverLight(在IE9上)進行音頻/視頻播放時沒有發現問題。只有音頻的流在WP7上也能正常工作。但是,我們面臨以下WP7上使用的視頻播放問題:使用MediaStreamSource進行視頻播放,WP7上的MediaElement

•當媒體流的視頻流屬性不CodecPrivateData,MediaElement的初始化「失敗」事件處理函數,錯誤代碼爲3100的視頻流的屬性被初始化爲:

Dictionary<MediaStreamAttributeKeys, string> videoStreamAttributes = new Dictionary<MediaStreamAttributeKeys, string>(); 
    videoStreamAttributes[MediaStreamAttributeKeys.VideoFourCC] = "H264"; 
    this.videoStreamDescription = new MediaStreamDescription(MediaStreamType.Video, videoStreamAttributes); 

•當媒體流的視頻流屬性與CodecPrivateData初始化([啓動代碼] [SPS] [起始碼] [PPS])的視頻播放,但似乎以更快的速度被打 - 2至3倍指定的FPS。視頻流屬性被初始化爲:

Dictionary<MediaStreamAttributeKeys, string> videoStreamAttributes = new Dictionary<MediaStreamAttributeKeys, string>(); 
    videoStreamAttributes[MediaStreamAttributeKeys.VideoFourCC] = "H264"; 
    videoStreamAttributes[MediaStreamAttributeKeys.CodecPrivateData] = "000000012742000D96540A0FD8080F162EA00000000128CE060C88"; 
    this.videoStreamDescription = new MediaStreamDescription(MediaStreamType.Video, videoStreamAttributes); 

注意相同的流播放罰款PC SilverLight的有和無CodecPrivateData與音頻以及視頻。 視頻流屬性初始化有問題嗎?什麼可能導致這個問題,我們如何解決它?

Regards, NKS。

回答

1

這裏的問題是時間戳被用於時間戳。我們的應用程序用來計算90Khz的時間戳,預期的時間戳是1Mhz。所以所有的幀都是在時間過去之後出現的,因此玩家會盡可能快地玩這些幀(我也看到了大約120fps的東西)。固定時間戳時鐘後,它工作正常

+0

我也有這個問題,你能幫我嗎? –

+1

對不起,上面的答案不是描述性的。我只是轉換了每個樣本的時間戳值。 newTs = oldTS * 90kHz/1MHz。 –