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
0
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 :(