Media (Intel® 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
Announcements
The Intel Media SDK project is no longer active. For continued support and access to new features, Intel Media SDK users are encouraged to read the transition guide on upgrading from Intel® Media SDK to Intel® Video Processing Library (VPL), and to move to VPL as soon as possible.
For more information, see the VPL website.

How to encode AVC1 for Flashplayer

Rocky_R_
Beginner
643 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
643 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