Skip to content

7. DeckLink 이용하기

Kim Syehoon edited this page Mar 20, 2024 · 8 revisions

DeckLink

DeckLink는 Blackmagic Deseign 사에서 개발한 SDI I/O카드군입니다. 이 카드들을 적절히 이용하면 SDI신호를 입력받거나 출력할 수 있습니다.
DeckLink 카드들은 DeckLink Mini Monitor, DeckLink Mini Recorder, DeckLink SDI 4K, DeckLink 8K Pro, DeckLink Duo 2 등 다양하게 있으며, 각 카드별로 입/출력 기능이 다릅니다.

DeckLink 입력받기

DeckLink 입력을 받는 방법은 크게 2가지가 있습니다.

DirectShow를 통한 입력

DirectShow는 Windows에서 다양한 미디어 파일이나 스트림을 다룰 수 있도록 한 멀티미디어 프레임워크입니다. DeckLink 카드도 DirectShow를 지원하므로, 이를 이용해서 어렵지 않게 SDI 입력을 받아들일 수 있습니다.
가령 SDI 입력을 받아서 mpeg2video ts 파일로 저장하는 명령어는 다음과 같습니다.

ffmpeg -f dshow -i video="Decklink Video Capture":audio="Decklink Audio Capture" -f mpegts -c:v mpeg2video output.ts

decklink 포맷을 통한 입력

한편 DeckLink 지원을 활성화하여 빌드한 ffmpeg은 decklink 포맷을 이용해서도 DeckLink 카드를 다룰 수 있습니다. 마찬가지로 SDI 입력을 받아보겠습니다.

ffmpeg -f decklink -i "DeckLink 8K Pro (1)" -f mpegts -c:v mpeg2video output.ts

DirectShow의 경우와 비교해보면 비디오와 오디오를 별도로 지정하냐 아니냐 정도의 차이만 있는 것 같습니다. 사실 DirectShow는 Windows가 관리해주기 때문에 더 안정적이지만, 그만큼 세세한 옵션을 지정할 수 없다는 단점이 있습니다. 그러나 여기서는 자세히 다루지 않겠습니다.

DeckLink 출력하기

반대로, DeckLink를 이용해서 SDI 출력을 내보내려면 아래와 같이 하면 됩니다.

ffmpeg -i input.mxf -pix_fmt uyvy422 -r 29.97 -s 1920x1080 -vf tinterlace=4 -f decklink "DeckLink 8K Pro (1)"

DeckLink가 지원하는 픽셀 포맷과 우리가 흔히 이용하는 인터레이스드/1920x1080/29.97 Hz에 맞는 비디오를 출력하기 위해 위와 같이 입력합니다.

장치 이름 알아내기

그런데, 위에서 설명하지 않은 것이 있습니다. 바로 어떤 장치를 이용할 것인지 지정하는 방법입니다. 내가 사용할 수 있는 장치들을 보여주기 위해서 FFmpeg은 -list_devices라는 옵션을 제공합니다. 사용방법은 다음과 같습니다.
가령 DirectShow 장치들을 보고 싶다면

ffmpeg -f dshow -list_devices 1 -i dummy

를 실행합니다. dummy는 실제 입력이 아닌, 말 그대로 더미 입력입니다. 이 결과는 제 컴퓨터에서는

[dshow @ 0000018a6b2c88c0] "NDI Webcam Video 1" (video)
[dshow @ 0000018a6b2c88c0]   Alternative name "@device_pnp_\\?\root#media#0001#{65e8773d-8f56-11d0-a3b9-00a0c9223196}\vidsource0"
[dshow @ 0000018a6b2c88c0] "NDI Webcam Video 2" (video)
[dshow @ 0000018a6b2c88c0]   Alternative name "@device_pnp_\\?\root#media#0001#{65e8773d-8f56-11d0-a3b9-00a0c9223196}\vidsource1"
[dshow @ 0000018a6b2c88c0] "NDI Webcam Video 3" (video)
[dshow @ 0000018a6b2c88c0]   Alternative name "@device_pnp_\\?\root#media#0001#{65e8773d-8f56-11d0-a3b9-00a0c9223196}\vidsource2"
[dshow @ 0000018a6b2c88c0] "NDI Webcam Video 4" (video)
[dshow @ 0000018a6b2c88c0]   Alternative name "@device_pnp_\\?\root#media#0001#{65e8773d-8f56-11d0-a3b9-00a0c9223196}\vidsource3"
[dshow @ 0000018a6b2c88c0] "Blackmagic WDM Capture (2)" (audio, video)
[dshow @ 0000018a6b2c88c0]   Alternative name "@device_pnp_\\?\decklink#avstream#6&b3020de&0&0#{65e8773d-8f56-11d0-a3b9-00a0c9223196}\decklinkcapture2"
[dshow @ 0000018a6b2c88c0] "Blackmagic WDM Capture (3)" (audio, video)
[dshow @ 0000018a6b2c88c0]   Alternative name "@device_pnp_\\?\decklink#avstream#6&2f9a5601&0&0#{65e8773d-8f56-11d0-a3b9-00a0c9223196}\decklinkcapture3"
[dshow @ 0000018a6b2c88c0] "Blackmagic WDM Capture (4)" (audio, video)
[dshow @ 0000018a6b2c88c0]   Alternative name "@device_pnp_\\?\decklink#avstream#6&7350a2e&0&0#{65e8773d-8f56-11d0-a3b9-00a0c9223196}\decklinkcapture4"
[dshow @ 0000018a6b2c88c0] "Logitech BRIO" (video)
[dshow @ 0000018a6b2c88c0]   Alternative name "@device_pnp_\\?\usb#vid_046d&pid_085e&mi_00#7&14a69112&0&0000#{65e8773d-8f56-11d0-a3b9-00a0c9223196}\global"
[dshow @ 0000018a6b2c88c0] "Blackmagic WDM Capture" (audio, video)
[dshow @ 0000018a6b2c88c0]   Alternative name "@device_pnp_\\?\decklink#avstream#6&1e659f12&0&0#{65e8773d-8f56-11d0-a3b9-00a0c9223196}\decklinkcapture1"
[dshow @ 0000018a6b2c88c0] "Decklink Video Capture (3)" (none)
[dshow @ 0000018a6b2c88c0]   Alternative name "@device_sw_{860BB310-5D01-11D0-BD3B-00A0C911CE86}\{20722FC4-9EBC-47B9-80B4-6A2ED4D27ECF}"
[dshow @ 0000018a6b2c88c0] "Decklink Video Capture" (video)
[dshow @ 0000018a6b2c88c0]   Alternative name "@device_sw_{860BB310-5D01-11D0-BD3B-00A0C911CE86}\{44A8B5C7-13B6-4211-BD40-35B629D9E6DF}"
[dshow @ 0000018a6b2c88c0] "OBS Virtual Camera" (none)
[dshow @ 0000018a6b2c88c0]   Alternative name "@device_sw_{860BB310-5D01-11D0-BD3B-00A0C911CE86}\{A3FCE0F5-3493-419F-958A-ABA1250EC20B}"
[dshow @ 0000018a6b2c88c0] "Decklink Video Capture (4)" (none)
[dshow @ 0000018a6b2c88c0]   Alternative name "@device_sw_{860BB310-5D01-11D0-BD3B-00A0C911CE86}\{B3980D18-10D4-4045-9AF7-91EF330AEBF2}"
[dshow @ 0000018a6b2c88c0] "Decklink Video Capture (2)" (none)
[dshow @ 0000018a6b2c88c0]   Alternative name "@device_sw_{860BB310-5D01-11D0-BD3B-00A0C911CE86}\{CE3FF814-04C1-4827-9F18-426203E9B1B3}"
[dshow @ 0000018a6b2c88c0] "Microphone(Logitech BRIO)" (audio)
[dshow @ 0000018a6b2c88c0]   Alternative name "@device_cm_{33D9A762-90C8-11D0-BD43-00A0C911CE86}\wave_{C3E77D8F-DE02-4C52-9C28-ACFF91527F96}"
[dshow @ 0000018a6b2c88c0] "Decklink Audio Capture (2)" (audio)
[dshow @ 0000018a6b2c88c0]   Alternative name "@device_sw_{33D9A762-90C8-11D0-BD43-00A0C911CE86}\{1BCC3EF4-724F-4A45-B61D-8D4BBF32C5BF}"
[dshow @ 0000018a6b2c88c0] "Decklink Audio Capture (4)" (audio)
[dshow @ 0000018a6b2c88c0]   Alternative name "@device_sw_{33D9A762-90C8-11D0-BD43-00A0C911CE86}\{1EF51542-B849-4337-B7AE-C980C13F86BF}"
[dshow @ 0000018a6b2c88c0] "Decklink Audio Capture" (audio)
[dshow @ 0000018a6b2c88c0]   Alternative name "@device_sw_{33D9A762-90C8-11D0-BD43-00A0C911CE86}\{AAA22F7E-5AA0-49D9-8C8D-B52B1AA92EB7}"
[dshow @ 0000018a6b2c88c0] "Decklink Audio Capture (3)" (audio)
[dshow @ 0000018a6b2c88c0]   Alternative name "@device_sw_{33D9A762-90C8-11D0-BD43-00A0C911CE86}\{BC90EE8C-F8DC-4776-8DCF-24929C13F9D2}"
[dshow @ 0000018a6b2c88c0] "라인 입력(Blackmagic DeckLink 8K Pro (4) Audio)" (audio)
[dshow @ 0000018a6b2c88c0]   Alternative name "@device_cm_{33D9A762-90C8-11D0-BD43-00A0C911CE86}\wave_{01F77CB5-C886-4BAB-A9FD-03DBB5D2D69D}"
[dshow @ 0000018a6b2c88c0] "Webcam 2(NDI Webcam Audio)" (audio)
[dshow @ 0000018a6b2c88c0]   Alternative name "@device_cm_{33D9A762-90C8-11D0-BD43-00A0C911CE86}\wave_{58C8F8E1-228D-49FF-B4BF-E15C09311D67}"
[dshow @ 0000018a6b2c88c0] "마이크(Scarlett Solo USB)" (audio)
[dshow @ 0000018a6b2c88c0]   Alternative name "@device_cm_{33D9A762-90C8-11D0-BD43-00A0C911CE86}\wave_{77342A0A-C0C8-4EFC-8649-73B3217A8CB6}"
[dshow @ 0000018a6b2c88c0] "Webcam 3(NDI Webcam Audio)" (audio)
[dshow @ 0000018a6b2c88c0]   Alternative name "@device_cm_{33D9A762-90C8-11D0-BD43-00A0C911CE86}\wave_{8495A615-F943-4182-8D64-48FA9DCB1E87}"
[dshow @ 0000018a6b2c88c0] "라인 입력(Blackmagic DeckLink 8K Pro (3) Audio)" (audio)
[dshow @ 0000018a6b2c88c0]   Alternative name "@device_cm_{33D9A762-90C8-11D0-BD43-00A0C911CE86}\wave_{9C3B6B82-CD04-4F9A-85BF-747D42A035D5}"
[dshow @ 0000018a6b2c88c0] "라인 입력(Blackmagic DeckLink 8K Pro (1) Audio)" (audio)
[dshow @ 0000018a6b2c88c0]   Alternative name "@device_cm_{33D9A762-90C8-11D0-BD43-00A0C911CE86}\wave_{A8C475D8-254B-463B-93F3-77B6AAFE812C}"
[dshow @ 0000018a6b2c88c0] "Webcam 4(NDI Webcam Audio)" (audio)
[dshow @ 0000018a6b2c88c0]   Alternative name "@device_cm_{33D9A762-90C8-11D0-BD43-00A0C911CE86}\wave_{C8D245D6-856F-4E83-B5AF-800A6F5B26D8}"
[dshow @ 0000018a6b2c88c0] "라인 입력(Blackmagic DeckLink 8K Pro (2) Audio)" (audio)
[dshow @ 0000018a6b2c88c0]   Alternative name "@device_cm_{33D9A762-90C8-11D0-BD43-00A0C911CE86}\wave_{CA55CAFE-EB7A-43F3-82E4-A318277AF809}"
[dshow @ 0000018a6b2c88c0] "Webcam 1(NDI Webcam Audio)" (audio)
[dshow @ 0000018a6b2c88c0]   Alternative name "@device_cm_{33D9A762-90C8-11D0-BD43-00A0C911CE86}\wave_{F6A3123D-B29F-4438-BAB6-54265FBAA86C}"

긴 목록이 나왔습니다. 많은 장치들이 설치되어 있기 때문입니다. 이 중에서 저는 SDI 입력이 Decklink Video Capture 및 Decklink Audio Capture에 가해지고 있음은 미리 알고 있었습니다.

DeckLink 장치들을 보려면 어떻게 해야할까요? dshowdecklink로 바꾸면 됩니다.

출력 장치들을 보려면 다음과 같이 하면 됩니다.

ffmpeg -sinks

이러면 DeckLink를 포함한 설치되어 있는 출력 장치들을 모두 보여줍니다.
이를 응용해서 ffmpeg -sources를 실행하면 마찬가지로 설치되어 있는 모든 입력 장치들을 보여줍니다.