2013-10-01 6 views
1

이는 FFmpeg의 DirectShow 옵션을 모두 핀을 사로 잡을 것입니다 무엇는 FFmpeg 명령 는 FFmpeg DirectShow를 캡처 2 핀 여기

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" 

입니까?

업데이트

내 장치의 이름은 명령에 따라

out.mp4 -i 비디오 = "7160 HD 캡처"dshow -f 7160 HD Capture 는 FFmpeg가 잘 작동입니다 : -

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 

나는 오디오 핀 다른 카드에 다른 이름을 가지고 있음을 알. 내가 명시 적으로 이름을 붙여야 할지도 모르겠다.

나는 오디오 캡처 장치 그러나 비디오 캡처가없는 2

GraphEdit

업데이트는 확실히 오디오가 있습니다.

나는 기본 오디오 장치

+0

이것은 크로스바 장치입니다 (복수 입력?) – rogerdpack

+0

HDMI 캡처 카드입니다. Timeleak HD72A 또는 HD75A. 나는 그것을 휴대 전화에서 화면 비디오를 녹화하는 데 사용. – Max

답변

2

FFmpeg dshow에서 OK 지원이 최근에 추가되었으며 ffmpeg -f dshow -i video="AJA Capture Source":audio="AJA Capture Source"을 지정할 수 있습니다. 그것은 작동합니다.

필요한 경우 사용할 핀을 선택하기위한 새로운 매개 변수가 있습니다. https://www.ffmpeg.org/ffmpeg-devices.html#dshow

누군가/아무에게도 효과가 없다면 [email protected]을 알리거나 여기에 의견을 남겨주세요.

0

필터의 동일한 인스턴스에서 모두 핀 매핑됩니다 어떤 명령이 없습니다에 그 오디오 핀을 재생할 수입니다. 예를 들어,이 명령을 :

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

그래픽, 그것은 (내가 당신 때문에 만들어 이름을 beign하는 것은 귀하의 질문에 제공하지 않았 음)은 "src_filter_name"의 두 인스턴스를 생성합니다 말하기. 필터가 좋고 자체 인스턴스가 여러 개있는 경우에는 괜찮습니다.

그래프 편집에서 직접 시도해보십시오. 소스 필터를 2 번 드롭 해, 오디오 핀을 최초로부터 렌더링 해, 비디오 핀을 2 번째로부터 렌더링한다. 그게 작동하면 위의 ffmpeg 명령이 작동합니다.

당신의 "7160 HD 캡처"가 "오디오 캡처 소스"아래에 나열되지 않기 때문에

업데이트,는 FFmpeg는 표시되지 않습니다. ffmpeg는 비디오 캡처 소스의 첫 번째 비디오 핀에서 비디오를 읽고 오디오 캡처 소스의 첫 번째 오디오 핀에서 오디오 만 읽는 방식으로 작성됩니다.

그래서 옵션은 여기에 방법는 FFmpeg 와이어 최대의 소스 코드를 수정하여 dshow 장치는

  1. 변화입니다
  2. 는 7160 HD 캡처 장치에서 오디오 및 비디오 전송하는에 dshow 싱크 필터를 만들 , ffmpeg에 대한 오디오 및 비디오 소스로 작동 할 수있는 소스 필터를 만듭니다. 이를 위해서는 프로세스 나 스레드가 데이터를 싱크에 넣고 소스를 사용할 수있게하는 방법이 필요합니다.

불행히도 공유 할 소스 코드가 없습니다. 기본 아이디어 만 있습니다. 두 솔루션 모두 C++에 속할 것입니다. DirectShow 방식은 아마도 더 많은 작업 일 것입니다. ffmpeg 소스 코드를 알고 이해한다면 ffmpeg 방식이 더 쉽습니다 :-)

+0

감사합니다! 나는 이름과 명령으로 갱신했다. 솔직히 나는 당신이하는 말을 많이 이해하지 못한다. 당신 덕분에 GraphEdit 도구를 발견했습니다. 그것은 매우 도움이된다! – Max

+1

그래, 기본적으로 "7160 HD Capture"장치는 "Video Capture Sources"아래 DirectShow에서 볼 수 있으며 "Audio Capture Sources"에는 나열되어 있지 않습니다. 이것은 ffmpeg가 비디오 장치에 오디오 핀이 있어도 오디오 장치를 보지 못함을 의미합니다. ffmpeg는 매우 특정한 시나리오를 염두에두고 작성되었습니다. 즉, "비디오 캡처 소스"에서 비디오를 가져오고 "오디오 캡처 소스"에서 오디오를 가져옵니다. –

0

timeleak의 마지막 드라이버를 사용하십시오.

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 

VLC에서 udp : // @ 1234를 엽니 다.

오디오는 HDMI를 통해 hd72a로 동작하며 문제없이 HTTP로 스트림됩니다.

1
ffmpeg.exe -f dshow -s 1920x1080 -i "video=Timeleak HD Capture (YPbPr):audio=Timeleak HD Capture (YPbPr)" -c:v libx264 -preset ultrafast -c:a ac3 -f mpegts udp://127.0.0.1:1234 
0

당신은 DirectShow의 2 캡처 핀 다중화이 sink filter와 ffmpeg.exe 할 수있는 다중 스트림을 보낼 수 있습니다.