Существует более стабильная функция, также избавляется от сгибания строк.
// Add to C++ source
bool string_equal (const char* arg0, const char* arg1)
{
/*
* This function wraps string comparison with string pointers
* (and also works around 'string folding', as I said).
* Converts pointers to std::string
* for make use of string equality operator (==).
* Parameters use 'const' for prevent possible object corruption.
*/
std::string var0 = (std::string) arg0;
std::string var1 = (std::string) arg1;
if (var0 == var1)
{
return true;
}
else
{
return false;
}
}
И добавить объявление в заголовок
// Parameters use 'const' for prevent possible object corruption.
bool string_equal (const char* arg0, const char* arg1);
. Для использования просто поместите 'string_equal' вызывать как условие if (или тройного) оператора / блока.
if (string_equal (var1, "dev"))
{
// It is equal, do what needed here.
}
else
{
// It is not equal, do what needed here (optional).
}
Источник: кодек sinatramultimedia / fl32 (он написан сам)
Итак, я потратил некоторое время на изучение команд для melt
и выяснил, что на самом деле существует довольно эффективный способ изменения набора изображений (если число аргументов слишком длинное или слишком много символов для вашего терминала для обработки).
Вам нужно использовать -serialise <name of file>.melt
, в котором будут храниться ваши команды (, вы также можете создать этот файл вручную ). Затем, чтобы выполнить этот файл, используйте melt <name of file>.melt
вместе с любыми другими опциями, которые у вас есть для вашего видеофайла.
melt <images and what to do to them> -serialise <name of file>.melt
melt image1.png out=50 image2.png out=75 -mix 25 -mixer luma image3.png out=75 -mix 25 -mixer luma image3.png out=75 -mix 25 -mixer luma image4.png out=75 -mix 25 -mixer luma <...> -serialise test.melt
image1.png
out=50
image2.png
out=75
-mix
25
-mixer
luma
image3.png
out=75
-mix
25
-mixer
luma
image3.png
out=75
-mix
25
-mixer
luma
image4.png
out=75
-mix
25
-mixer
luma
<...>
melt test.melt -profile atsc_1080p_60 -consumer avformat:output.mp4 vcodec=libx264 an=1
В конце файла расплава должен быть дополнительный символ возврата. В противном случае будет выведено Exceeded maximum line length (2048) while reading a melt file.
Обратите внимание, что -serialise <name of file>.melt
не будет в файле .melt
Фактически расплаву потребуется некоторое время для загрузки расплавленного файла, прежде чем начнется процесс кодирования