2016-08-04 12 views
0

Я использую API-интерфейсы Media Foundation для чтения одного файла mp4 кадр за кадром и управления несколькими пикселями и для сохранения снова как mp4. Но когда я уменьшаю размер файла mp4-файла, уменьшает (если я использую 3000kb результат видео будет 2800)CPP MediaFoundation - mp4 Размер файла

используя тип входного и выходного типа, как, как это

MFT_REGISTER_TYPE_INFO inputType = { MFMediaType_Video, MFVideoFormat_RGB32 }; 
    MFT_REGISTER_TYPE_INFO outputType = { MFMediaType_Video, MFVideoFormat_H264 }; 

    if(false == g_bMFTFactoryRegistered) 
    { 
     hResult = MFTRegisterLocal(&g_MFTFactory, MFT_CATEGORY_VIDEO_ENCODER, L"MFTFactory", 0, 1, &inputType , 1, &outputType); 

Как сделать источник и размер назначения так же ?? Кто-нибудь, пожалуйста, помогите мне

ответ

0

Вы повторно сжимаете видео, и это изменяет бит-поток, следовательно, вы не можете сделать его одинакового размера точно. Ваш выход зависит от настроек видеокодера, где у вас есть гибкость для определения профиля вывода, уровня, битрейта и т. Д. Ваша попытка скопировать это из исходного видео может приблизить вас к размерам ввода и вывода, но в любом случае из-за процесса повторного сжатия размеры будут отличаются, и вполне вероятно, что исходное качество изображения (детализация) будет потеряно в некоторой степени.

+0

Я попытался hResult = pMediaTypeOut-> SetUINT32 (MF_MT_AVG_BITRATE, 0xFFFFFFFF), чтобы увеличить биттрейт, но все же размер меньше – syam218

+0

Есть ли полезная ссылка? – syam218