Media (Intel® oneAPI Video Processing Library, Intel Media SDK)
Access community support with transcoding, decoding, and encoding in applications using media tools like Intel® oneAPI Video Processing Library and Intel® Media SDK

How to encode AVC1 for Flashplayer

Rocky_R_
Beginner
183 Views

I encode NV12 to AVC1 using Media SDK, the AVC1 bitstreams can decoded well using h264 decoder such as LEADTOOLS H.264 Decoder, but cannot decoded using Flashplayer. I think there's something I missed when I initialize mfxVideoParam.What should I do to make Flashplayer work?

Codes as follows:

MFXVideoENCODE* m_pmfxENC;
mfxVideoParam m_mfxEncParams; 

m_mfxEncParams.mfx.CodecId                 = MFX_CODEC_AVC;

m_mfxEncParams.mfx.CodecProfile                = MFX_PROFILE_AVC_PROGRESSIVE_HIGH;
m_mfxEncParams.mfx.TargetUsage                = MFX_TARGETUSAGE_BALANCED;
m_mfxEncParams.mfx.TargetKbps                  = 125000;
m_mfxEncParams.mfx.MaxKbps                     = 125000;
m_mfxEncParams.mfx.RateControlMethod       = MFX_RATECONTROL_VBR;
ConvertFrameRate(25, &m_mfxEncParams.mfx.FrameInfo.FrameRateExtN, &m_mfxEncParams.mfx.FrameInfo.FrameRateExtD);

m_mfxEncParams.mfx.GopPicSize               = pInParams->nKFrameInterval;
m_mfxEncParams.mfx.GopRefDist                = 1;
m_mfxEncParams.mfx.GopOptFlag               = MFX_GOP_STRICT;
m_mfxEncParams.mfx.IdrInterval                   = 0;
m_mfxEncParams.mfx.NumRefFrame            = 0;
m_mfxEncParams.mfx.EncodedOrder            = 0;

m_mfxEncParams.IOPattern = MFX_IOPATTERN_IN_SYSTEM_MEMORY;

m_mfxEncParams.mfx.FrameInfo.FourCC            = MFX_FOURCC_NV12;
m_mfxEncParams.mfx.FrameInfo.ChromaFormat = MFX_CHROMAFORMAT_YUV420;
m_mfxEncParams.mfx.FrameInfo.PicStruct         = MFX_PICSTRUCT_PROGRESSIVE;

m_mfxEncParams.mfx.FrameInfo.Width  = MSDK_ALIGN16(352);
m_mfxEncParams.mfx.FrameInfo.Height = MSDK_ALIGN16(288) ;

m_mfxEncParams.mfx.FrameInfo.CropX   = 0;
m_mfxEncParams.mfx.FrameInfo.CropY  = 0;
m_mfxEncParams.mfx.FrameInfo.CropW = 352;
m_mfxEncParams.mfx.FrameInfo.CropH  = 288;

m_pmfxENC->Init(&m_mfxEncParams);

Best regards, Rocky

0 Kudos
1 Reply
Jeffrey_M_Intel1
Employee
183 Views

Most players only work with container formats, not elementary streams.  The Media SDK encoder only outputs elementary streams.  This must be muxed into a container format.  Examples of this can be found in sample_full_transcode and the ffmpeg integration example in the tutorial package.

Regards, Jeff

0 Kudos
Reply