Я пытаюсь передать необработанные кадры h264 через STDIN в ffmpeg, но получаю
[h264 @ 0x3ced540] bytestream overread -28
[h264 @ 0x3ced540] error while decoding MB 52 6, bytestream -28
Когда я использую файл на диске, ошибок нет.
fd_ffmpeg = popen("/root/ffmpeg -y -hide_banner -loglevel trace -f h264 -i pipe:0 -vcodec copy -an -movflags +frag_keyframe+empty_moov+default_base_moof -threads 1 -f mp4 \"/root/out.mp4\"", "w");
fwrite(p.data(), 1, p.size(), fd_ffmpeg);
Я пытаюсь создать mp4 в реальном времени, так как кадры приходят для потоковой передачи.
РЕДАКТИРОВАТЬ: У меня был некоторый прогресс, это было потому, что fwrite возвращал частичную запись.Теперь ошибка:
Could not write header for output file #0 (incorrect codec parameters ?): Immediate exit requested
EDIT2: Хорошо, проблема теперь в том, что FFMPEG начинает обрабатывать и выводить видео, только если STDIN закрывается.Есть ли способ запустить его в потоковом режиме, кадр за кадром, чтобы получить вывод ffmpeg?