ffmpeg DirectShow захват 2 контакта

Вот параметры ffmpeg DirectShow

 DirectShow video device options
  Pin "Capture"
   pixel_format=yuyv422  min s=720x480 fps=59.9402 max s=720x480 fps=59.9402
   pixel_format=yuyv422  min s=720x480 fps=29.97 max s=720x480 fps=29.97
   pixel_format=yuyv422  min s=720x576 fps=50 max s=720x576 fps=50
   pixel_format=yuyv422  min s=720x576 fps=25 max s=720x576 fps=25
   pixel_format=yuyv422  min s=640x480 fps=59.9402 max s=640x480 fps=59.9402
   pixel_format=yuyv422  min s=1920x1080 fps=29.97 max s=1920x1080 fps=29.97
   pixel_format=yuyv422  min s=1920x1080 fps=25 max s=1920x1080 fps=25
   pixel_format=yuyv422  min s=1920x1080 fps=24 max s=1920x1080 fps=24
   pixel_format=yuyv422  min s=1280x720 fps=59.9402 max s=1280x720 fps=59.9402
   pixel_format=yuyv422  min s=1280x720 fps=50 max s=1280x720 fps=50
  Pin "Audio"

Какая команда ffmpeg захватит оба контакта?

Обновить

Имя моего устройства 7160 HD Capture ffmpeg -f dshow -i video = 7160 HD Capture out.mp4

Следующая команда работает нормально: -

ffmpeg -f dshow -s 1280x720 -i video="7160 HD Capture" -rtbufsize 2000M out19.mp4

Я пытался

ffmpeg -f dshow -s 1280x720 -i "video=7160 HD Capture:audio=7160 HD Capture" -rtbufsize 2000M out20.mp4

он не работает и возвращает ошибку: -

[dshow @ 000000000250b540] Could not enumerate audio devices. video=7160 HD Capture:audio=7160 HD Capture: Input/output error

Я видел, что звуковой PIN-код имеет разные имена на разных картах. Может, стоит прямо назвать это.

Обновление 2

GraphEdit

У меня нет устройств для захвата звука, но в Video Capture определенно есть звук.

Я могу воспроизвести этот звуковой пин на аудиоустройстве по умолчанию


person Max    schedule 01.10.2013    source источник
comment
это перекладина (несколько входов?)   -  person rogerdpack    schedule 30.12.2014
comment
Это карта захвата HDMI. Timeleak HD72A или HD75A. Я использовал его для записи экранного видео с мобильного телефона.   -  person Max    schedule 30.12.2014


Ответы (4)


Хорошо, что поддержка этого была (надеюсь) недавно добавлена ​​в FFmpeg dshow, теперь вы можете указать ffmpeg -f dshow -i video="AJA Capture Source":audio="AJA Capture Source", и это сработает.

Есть даже новые параметры для выбора, какой вывод вы хотите использовать, если они вам нужны. https://www.ffmpeg.org/ffmpeg-devices.html#dshow

Если это не сработает для кого-то / кого-то, пожалуйста, дайте мне знать [email protected] или прокомментируйте здесь.

person rogerdpack    schedule 27.01.2015

Нет команды, которая отображала бы оба вывода из одного и того же экземпляра фильтра. Например, возьмите эту команду:

ffmpeg.exe -f dshow -i "video=<src_filter_name>:audio=<src_filter_name>"

графически говоря, он создаст два экземпляра «src_filter_name» (которые соответствуют имени, которое я придумал, поскольку вы не указали его в своем вопросе). Если ваш фильтр хорош и работает с несколькими экземплярами самого себя, тогда все будет в порядке.

в редактировании графика попробуйте сами. дважды вставьте исходный фильтр и визуализируйте вывод аудио из первого, а вывод видео из второго. если это сработает, то должна работать указанная выше команда ffmpeg.

Обновить

Поскольку ваш «7160 HD Capture» не указан в списке «Audio Capture Sources», ffmpeg не увидит его. ffmpeg написан таким образом, что он будет читать видео только с первого вывода видео источника захвата видео, а звук - с первого вывода аудио источника захвата звука.

Итак, ваши варианты здесь

  1. изменить способ подключения ffmpeg устройств dshow, изменив его исходный код
  2. создайте фильтр приемника dshow, в который вы отправляете аудио и видео с устройства 7160 HD Capture, а затем создайте фильтр источника, который может действовать как источник звука и видео для ffmpeg. для этого потребуется процесс или поток, проталкивающий данные в приемник и способ сделать их доступными для источника.

к сожалению, у меня нет исходного кода, которым можно поделиться, только основная идея. оба решения будут на C ++. способ directshow, вероятно, больше работы, способ ffmpeg, вероятно, проще, если вы знаете и понимаете исходный код ffmpeg :-)

person Juan Ayala    schedule 01.10.2013
comment
Спасибо! Я обновил имя и команды. Честно говоря, я не очень понимаю, что вы говорите. Благодаря вам я нашел инструмент GraphEdit. Это очень полезно! - person Max; 02.10.2013
comment
Да, в основном устройство захвата HD 7160 видно DirectShow в разделе «Источники захвата видео» и НЕ указано в разделе «Источники захвата звука». Это означает, что ffmpeg также не увидит аудиоустройство, даже если у этого видеоустройства есть аудиоконтакт. ffmpeg написан с учетом очень специфического сценария, то есть он будет получать видео из источника видеозахвата и аудио из источника аудиозахвата. - person Juan Ayala; 02.10.2013

Используйте последний драйвер из таймлика.

ffmpeg.exe -f dshow -s 1920x1080 -i "video=Timeleak HD Capture (YPbPr):audio=Timeleak HD Capture (YPbPr)" -f mpegts udp://127.0.0.1:1234

Откройте udp: // @ 1234 в VLC.

Звук у меня работает с hd72a через HDMI, и я без проблем транслирую по HTTP.

person user4617302    schedule 28.02.2015

Вы можете мультиплексировать 2 вывода захвата в DirectShow и отправить мультиплексированный поток в ffmpeg.exe с помощью этого приемника фильтр.

person Gianc.M    schedule 05.03.2015