Мне нужно записать экран с наложением веб-камеры, у меня есть следующие входы:

  1. Снимок экрана с gdigrab
  2. Система Audio использует другое программное обеспечение, которое передает необработанный звук в ffmpeg
  3. Поток веб-камеры
  4. Микрофон аудио

Мне удалось объединить все вышеперечисленное, кроме наложения веб-камеры. вот моя команда ffmpeg:

ffmpeg -f f32le -ac 2 -ar 44.1k -i \\.\pipe\systemAudioPipe -f dshow -i video="TOSHIBA Web Camera - HD":audio="Internal Mic (IDT High Definition Audio CODEC)" -f gdigrab -thread_queue_size 512 -offset_x 0 -offset_y 0 -video_size 1366x728 -framerate 60 -draw_mouse 1 -i desktop -vcodec libx264 -pix_fmt yuv420p -preset ultrafast -filter_complex "[0:a][1:a]amerge=inputs=2[a],[a][2:v]overlay" -map 2 -map "[a]" "output.avi"

и я получаю эту ошибку:

[Parsed_amerge_0 @ 063ebb80] Media type mismatch between the 'Parsed_amerge_0' filter output pad 0 (audio) and the 'Parsed_overlay_1' filter input pad 0 (video) [AVFilterGraph @ 063a3a80] Cannot create the link amerge:0 -> overlay:0

Ошибка инициализации сложных фильтров

если я удалил часть [a][2:v]overlay из фильтра, она работает нормально (без наложения веб-камеры), так как я могу наложить веб-камеру?

1 ответ1

0

[a] относится к выходу amerge, поэтому его нельзя отправить на видеофильтр, такой как overlay . Если вы хотите наложить веб-камеру поверх рабочего стола, наложение [2:v][1:v]overlay является необходимым синтаксисом.

использование

ffmpeg -f f32le -ac 2 -ar 44.1k -i \\.\pipe\systemAudioPipe -f dshow -i video="TOSHIBA Web Camera - HD":audio="Internal Mic (IDT High Definition Audio CODEC)" -f gdigrab -thread_queue_size 512 -offset_x 0 -offset_y 0 -video_size 1366x728 -framerate 60 -draw_mouse 1 -i desktop -vcodec libx264 -pix_fmt yuv420p -preset ultrafast -filter_complex "[0:a][1:a]amerge=inputs=2[a];[2:v][1:v]overlay[v]" -map "[v]" -map "[a]" "output.avi"

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .