У меня есть программа на С ++, которая считывает визуализированные изображения из разделяемой памяти и записывает их в канал (mkfifo), чтобы я мог захватывать их с помощью ffmpeg и передавать их как живое видео через ffserver. Чтобы мой поток работал, я должен запустить программу и команду ffmpeg по отдельности.
Я спросил себя, нет ли возможности включить ffmpeg в программу и избежать использования канала.
Моя команда ffmpeg:
ffmpeg -re -f -rawvideo -s 800x600 -pix_fmt rgb24 -i myfifo http://localhost:8090/feed1.ffm
Мой вопрос:
Как лучше всего включить команду ffmpeg в программу на c ++? Есть ли какая-то другая идея улучшить это решение?
Любая помощь с благодарностью. Заранее спасибо.
Есть два способа:
Проще использовать system (), если вы работаете в Linux, и запустить команду ffmpeg.
if(system("ffmpeg -re -f -rawvideo -s 800x600 -pix_fmt rgb24 -i myfifo http://localhost:8090/feed1.ffm") != 0)
{
cout << "ffmpeg failed..." << endl;
}
Сложно включить библиотеку в свой проект и использовать ее для внутреннего использования: Можно ли использовать FFmpeg в качестве библиотеки вместо отдельной программы?.
Для начала проверить https://trac.ffmpeg.org/wiki/Using%20libav*, где описано, как использовать libav (внутренняя библиотека, используемая ffmpeg), и я бы рекомендовал следовать руководству http://dranger.com/ffmpeg/tutorial01.html
Других решений пока нет …