Quantcast
Channel: Media Foundation Development for Windows Desktop forum
Viewing all articles
Browse latest Browse all 1079

IMFSinkWriter settings for live video streaming

$
0
0

I have tried whether to be able to publish live video streaming with Microsoft Media Foundation.

MF_LOW_LATENCY parameter can be used in Windows 8, but it seems that this doesn't become effective in encoding. It is an ideal that encoded data is created for every frame. Is this realizable? 

	MFCreateAttributes(&spattr, 10);
	spattr->SetUINT32(MF_READWRITE_ENABLE_HARDWARE_TRANSFORMS, TRUE);
	spattr->SetUINT32(MF_LOW_LATENCY, TRUE);
	spattr->SetGUID(MF_TRANSCODE_CONTAINERTYPE, MFTranscodeContainerType_FMPEG4);

	hr = MFCreateSinkWriterFromURL(NULL, outstream, spattr, &writer);
	RELEASE(spattr);
	if (FAILED(hr)) return false;

	MFCreateMediaType(&mediaout);
	mediaout->SetGUID(MF_MT_MAJOR_TYPE, MFMediaType_Video);
	mediaout->SetGUID(MF_MT_SUBTYPE, MFVideoFormat_H264);
	mediaout->SetUINT32(MF_MT_AVG_BITRATE, bitrate * 1024);
	mediaout->SetUINT32(MF_MT_INTERLACE_MODE, MFVideoInterlace_Progressive);
	MFSetAttributeSize(mediaout, MF_MT_FRAME_SIZE, width, height);
	MFSetAttributeRatio(mediaout, MF_MT_FRAME_RATE, fps, 1);
	MFSetAttributeRatio(mediaout, MF_MT_PIXEL_ASPECT_RATIO, 1, 1);
	hr = writer->AddStream(mediaout, &vindex);
	if (FAILED(hr)) goto EXIT;

	MFCreateMediaType(&mediain);
	mediain->SetGUID(MF_MT_MAJOR_TYPE, MFMediaType_Video);
	mediain->SetGUID(MF_MT_SUBTYPE, MFVideoFormat_ARGB32);
	mediain->SetUINT32(MF_MT_INTERLACE_MODE, MFVideoInterlace_Progressive);
	MFSetAttributeSize(mediain, MF_MT_FRAME_SIZE, width, height);
	MFSetAttributeRatio(mediain, MF_MT_FRAME_RATE, 60, 1);
	MFSetAttributeRatio(mediain, MF_MT_PIXEL_ASPECT_RATIO, 1, 1);
	hr = writer->AddStream(mediaout, &aindex);

	hr = writer->SetInputMediaType(vindex, mediain, NULL);
	if (FAILED(hr)) goto EXIT;



Viewing all articles
Browse latest Browse all 1079

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>