Przykład zapisania obrazów RGBA do formatu video

0

Potrzebuje aby mój program miał funkcję zamiany sekwencji obrazów RGBA na plik MP4,
szukam jakiegoś prostego przykładu na start .
Nie mogę zapisywać plików tymczasowych na dysku i używać aplikacji ffmpeg.exe , mogę używać tylko bibliotek ffmpeg

1

może opencv da radę?
https://docs.opencv.org/4.6.0/dd/d9e/classcv_1_1VideoWriter.html
Ale czy dasz RGBA radę zapisać? Musi to być RGBA?

0

zbadałem wątek z opencv, zaznaczyłem zbudowałem tylko moduł videoio co powoduje że opencv buduje tylko 450 plików zamiast 1700 , wiec mozna odchudzić bibliotekę, na razie jednak nie ciągnę tej drogi

zamiast tego znalazłem niekompletny kod , uzupełniłem brakujące drobiazgi i powstała mała klasa która ożywa tylko ffmpeg
https://github.com/mariuszmaximus/raw2video

int main(int, char**) 
{
    Raw2Video::Params params;
    params.width = 256;
    params.height = 256;
    params.fps = 10;
    params.bitrate = 1024*1024*64;
    params.preset = "medium";
    params.crf = 23;
    params.src_format = AV_PIX_FMT_BGRA;
    params.dst_format = AV_PIX_FMT_YUV420P;
    params.codec = AV_CODEC_ID_H264;

    // raw DATA MEMORY  
    std::vector<uint8_t> raw_RGBA (params.width * params.height * 4);

    auto fillRand=[&](Raw2Video &raw2video){
        for (int i=0; i<100; i++)
        {
            for(auto &one: raw_RGBA)
            {
                one = rand() % 256;	
            }
            raw2video.Write(raw_RGBA.data());
        }
        raw2video.Close();
    };

    Raw2Video file_H264_mp4("file_H264.mp4", params);
    fillRand(file_H264_mp4); 

}

jedna małą wada: działa tylko kodowanie H264 i mogę zapisać tylko do pliku .MP4 albo .MKV

jak zaczynam zmieniać kodowanie albo che zapisać .AVI to niestety nie działa :(

1 użytkowników online, w tym zalogowanych: 0, gości: 1