Oasis의 녹화 API는 두가지 방식을 지원합니다.
자동으로 생성된 파일 경로를 콜백 함수의 인수로 전달됩니다.
통합 녹화의 경우 자동 생성 파일 경로 형식은 아래와 같이 패러미터 키 값과 날짜와 시간 조합으로 이루어져있습니다.
영상 채널별 개별 녹화의 경우 아래와 같습니다.
<N>은 1, 2, 3 등 채널 번호입니다.
이 함수의 매개변수로 전달된 녹화 파일 경로를 응용 프로그램에서 변경할 수 있습니다.
이벤트와 모션 녹화는 녹화 파일 경로를 직접 API 인수로 전달합니다.
각 녹화 파일 경로는 절대 경로입니다.
녹화 파일이 위치하는 폴더는 녹화 객체 생성시 전달한 패러미터의 값을 사용하는 것을 권장하며 다른 폴더 지정도 가능합니다.
통합 녹화 방식과 개별 녹화 방식은 아래와 같이 각 녹화 객체 생성시 매개변수로 key-value map을 전달합니다.
file-prefix
oasis-
파일명 생성시 쓰이는 접두어입니다. 빈 문자열일 경우, 자동생성 파일이름에 prefix가 적용되지 않습니다. MediaObserver::queryNewFilePath에서 덮어쓸 수 있습니다.
file-extension
avi
파일 확장자입니다. avi, mp4 중 하나를 입력합니다.
file-duration-secs
60
녹화할 총 시간입니다. 초단위입니다. 녹화 총 시간이 경과되거나 파일 크기 제한에 이르면 새로운 파일로 녹화를 시작합니다. 새파일명은 MediaObserver::queryNewFilePath에서 확인 후 덮어쓸 수 있습니다.
normal-folder-path
/mnt/extsd/NORMAL
일반 녹화 파일의 절대 경로를 자동으로 생성하기 위한 녹화 폴더 경로입니다. Oasis 파일시스템(OFFS) 포맷 시 설정한 일반 녹화 폴더를 기입합니다. 만일 OFFS가 마운팅된 위치가 아닌 다른 파일시스템의 폴더를 기입하면, 기본 파일크기는 16MB로 제한되지만, oasis::fs::offsConfigLocalFormatInfo 호출로 기본 파일 크기를 변경할 수 있습니다.
event-folder-path
/mnt/extsd/EVENT
미디어 데이터 캐쉬 저장용 이벤트 녹화 폴더 경로입니다. Oasis 파일시스템(OFFS) 포맷 시 설정한 이벤트 녹화 폴더를 기입합니다. 읽고 쓰기가 가능한 다른 파일시스템이 마운팅된 위치의 폴더를 지정하여도 무방합니다. enable-persistent-cache 키 값이 "1"인 경우에만 적용됩니다. 실제 이벤트 녹화는 startEventRecording 등 이벤트 녹화 API에서 경로를 지정합니다.
motion-folder-path
/mnt/extsd/MOTION
미디어 데이터 캐쉬 저장용 모션 녹화 폴더 경로입니다. Oasis 파일시스템(OFFS) 포맷 시 설정한 모션 녹화 폴더를 기입합니다. 읽고 쓰기가 가능한 다른 파일시스템이 마운팅된 위치의 폴더를 지정하여도 무방합니다. enable-persistent-cache 키 값이 "1"인 경우에만 적용됩니다. 실제 모션 녹화는 startMotionRecording 등 모션 녹화 API에서 경로를 지정합니다.
event-pre-recording-seconds
10
이벤트 발생 전 녹화 시간을 지정합니다. 초단위입니다. 최소 0초, 최대 60초입니다. 메모리 캐쉬 크기와 디스크 쓰기, 비트레이드 등을 고려하여 결정합니다.
event-post-recording-seconds
10
이벤트 발생 후 녹화 시간을 지정합니다. 초단위입니다. 최소 0초, 최대 60초입니다.
motion-pre-recording-seconds
10
모션 발생 전 녹화 시간을 지정합니다. 초단위입니다. 최소 0초, 최대 60초입니다.
motion-post-recording-seconds
10
모션 발생 후 녹화 시간을 지정합니다. 초단위입니다. 최소 0초, 최대 60초입니다.
disable-event-recording
0
이벤트 녹화를 하지 않습니다.
disable-offs-recording
0
녹화 데이터를 파일 시스템에 쓰지 않습니다.
max-files
5
최대 녹화 파일 개수입니다. "0"이면 녹화 파일 개수 제한없이 녹화합니다. 녹화 폴더 용량이 다 차면 가장 오래된 파일을 삭제하고 녹화를 재시작합니다.
delete-oldest-file-on-max-files
1
"1" 값이면 최대 녹화 파일 개수가 되면 가장 오래된 녹화 파일을 삭제하고, 새파일명으로 녹화를 재시작합니다. "0" 값이면 최대 녹화 파일 개수가 되면 녹화를 중지합니다. max-files가 1 이상인 경우 유효합니다.
recording-size-limit-threshold-seconds
2
녹화 파일의 허용 크기를 체크할 때 여유 크기를 지정합니다. 초단위 입니다. 이 값 만큼 녹화 가능하면 녹화 용량이 다 찼다고 판단하여 녹화를 새파일명으로 재시작합니다.
report-media-info-ex
0
"1"이면 MediaObserver::onInfoEx를 호출합니다. "0" 이면, MediaObserver::onInfo를 호출합니다.
avi-strd-size-max
1920
AVI 녹화시 메타데이터 헤더 최대 크기입니다. 바이트 단위입니다.
mp4-udta-size-max
1920
MP4 녹화시 메타데이터 헤더 최대 크기입니다. 바이트 단위입니다.
enable-persistent-cache
0
이벤트 녹화의 경우, event-folder-path 키 값의 폴더 경로, 또는 모션 녹화의 경우, motion-folder-path 키 값의 폴더 경로를 임시 미디어 데이터 캐쉬로 사용할지를 지정합니다. 디스크 수명이 짧아질 수 있습니다. Oasis 초기화시 지정된 media-cache-size 키 값으로 미디어 데이터를 메모리에 임시 저장하기 어려운 제약이 있는 시스템의 경우에 유용합니다. "1" 인 경우, 이벤트 녹화와 모션 녹화 파일이 위치할 폴더는 event-folder-path나 motion-folder-path와 동일해야 합니다. 폴더 위치가 다를 경우, 이벤트나 모션 발생 전 데이터는 저장되지 않습니다.
recording-file-header-write-interval-secs
1
녹화 파일 컨테이너 헤더의 갱신 주기를 지정합니다. "0"이면 마지막에 헤더를 저장합니다.
enable-sound
1
"1" 값이면 소리도 영상과 함께 녹화합니다.
snd-path
○
오디오 장치 경로입니다. 소리 녹화를 할 경우 필수로 지정합니다.
snd-input-channels
1
오디오 채널 수 입니다.
snd-input-sample-size
16
오디오 샘플 크기입니다. 비트수 단위입니다.
snd-input-sampling-duration-msec
40
오디오 샘플 버퍼 크기입니다. 밀리초단위입니다.
snd-input-sampling-rate
8000
오디오 샘플링 레이트 입니다.
aencoder-type
raw
오디오 인코더 타입입니다. raw, aac, mp3 중 하나를 지정합니다. raw는 PCM 데이터를 인코딩하지 않고 저장합니다.
aencoder-bitrate
○
오디오 인코더 비트레이트입니다.
osd-font-size
21
글꼴 크기입니다. 포인트 단위입니다. "0" 값이면 OSD를 적용하지 않습니다.
osd-font-face
Serif
OSD 텍스트 폰트 패밀리 이름입니다
osd-font-path
OSD 텍스트 폰트 파일 경로입니다. 지정하지 않으면 초기화 시 지정한 디폴트 폰트 파일을 사용합니다.
osd-text-color
255,255,255
OSD 텍스트 색상입니다. 색상 양식은 "r,g,b" 이거나 "rrggbb" 또는 "aarrggbb" 16진수 값입니다. 예를 들어 흰색이면 "255,255,255" 또는 "ffffff" 와 같습니다.
osd-use-text-color
1
"1" 값이면 OSD 텍스트 색상을 사용합니다. "0" 값이면 글자가 표시되지 않습니다.
osd-use-bg-color
0
"1" 값이면 OSD 텍스트 배경색을 사용합니다.
osd-bg-color
0,0,0
OSD 텍스트 배경색입니다.
osd-use-outline-color
0
"1" 값이면 글자 테두리 색상을 사용합니다.
osd-outline-color
255,255,255
글자 테두리 색상입니다.
osd-horz-align
center
OSD 텍스트 가로 정렬을 지정합니다. left, center, right 중 하나를 지정합니다.
osd-vert-align
bottom
OSD 텍스트 세로 정렬을 지정합니다. top, center, bottom 중 하나를 지정합니다.
channel-count
○
영상 채널 개수입니다. "0"이면 오디오 채널만 녹화됩니다.
각 영상 트랙(채널)별 할당하는 key-value map은 아래와 같습니다. key 이름 앞에 channel<N>- 이 붙습니다. <N>은 1부터 시작하여 1씩 증가합니다.
channel<N>-camera-id
configCameras에서 지정한 카메라 장치 ID 입니다.
channel<N>-ise-id
ISD 장치 ID 입니다. AllWinner 칩셋인 경우 적용됩니다.
channel<N>-resolution
720p
영상 인코딩 해상도 입니다. 2160p, 1440p, 1080p, 720p, 480p, 360p 중 한 값을 지정합니다.
channel<N>-out-width
1280
인코딩 영상의 너비입니다. 최소 너비는 256입니다. out-height와 함께 지정되어야 합니다.
channel<N>-out-height
720
인코딩 영상의 너비입니다. 최소 높이는 128입니다. out-width와 함께 지정되어야 합니다.
channel<N>-bitrate
3145728
인코딩 영상 비트레이트입니다.
channel<N>-fps
30
영상 입력 FPS입니다.
channel<N>-file-framerate
녹화 파일 재생시 frame rate입니다.
channel<N>-vencoder-type
인코딩 타입니다. h264, h265 중 한 값을 지정합니다.
channel<N>-venc-framerate
30
인코딩 frame rate입니다.
channel<N>-venc-keyframe-interval
30
인코딩 시 키 프레임 간격입니다.
channel<N>-media-wait-timeout-secs
0
영상 입력 최대 대기 시간입니다. 영상 입력 없이 시간 경과하면 설정에 따라 kRecordingErrorMediaDataTimeout 이벤트를 발생시킵니다. "0" 값이면 이벤트를 발생시키지 않습니다.
channel<N>-media-wait-timeout-notify-oneshot
1
"1" 값이면, 영상 데이터 시간 초과 오류 이벤트를 한번만 발생시킵니다. "0"이면 매번 발생시킵니다.
각 영상 채널 별로 OSD를 설정할 수 있습니다.
영상 인코딩 포맷이 H264일 경우, 아래 key-value map이 적용됩니다.
channel<N>-h264-profile
high
프로파일 입니다. baseline, main, high 중 한 값을 지정합니다.
channel<N>-h264-level
level51
레벨입니다. level1, level11, level12, level13, level2, level21, level22, level3, level31, level32, level4, level41, level42, level5, level51, level52 중 한 값을 지정합니다.
channel<N>-h264-min-qp
1
최소 QP(양자화 파라미터) 값입니다. 낮은 값일 수록 고화질 영상을 갖습니다. 0~51 범위 값입니다.
channel<N>-h264-max-qp
51
최대 QP(양자화 파라미터) 값입니다.
channel<N>-h264-enable-fixqp
0
고정 QP 값을 적용할지 여부를 지정합니다. 칩셋에 따라 지원됩니다. "1"이면 고정 QP 값이 적용됩니다.
channel<N>-h264-fix-iqp
30
고정 키프레임 QP 입니다. 0~51 값을 갖습니다.
channel<N>-h264-fix-pqp
30
고정 P 프레임 QP 입니다. 0~51 값을 갖습니다.
영상 인코딩 포맷이 H265일 경우, 아래 key-value map이 적용됩니다.
channel<N>-h265-profile
main
프로파일입니다. main, main10, still 중 한 값을 지정합니다.
channel<N>-h265-level
level51
레벨입니다. level1, level2, level21, level3, level31, level41, level5, level51, level52, level6, level61, level62 중 한 값을 지정합니다.
channel<N>-h265-rc-mode
vbr
비트레이트 제어 모드입니다. 칩셋에 따라 지원됩니다. vbr, cbr, abr, fixqp 중 한 값을 지정합니다.
channel<N>-h265-min-qp
1
최소 QP(양자화 파라미터) 값입니다. 낮은 값일 수록 고화질 영상을 갖습니다. 0~51 범위 값입니다. cbr, vbr, abr에 적용됩니다.
channel<N>-h265-max-qp
51
최대 QP(양자화 파라미터) 값입니다. cbr, vbr, abr에 적용됩니다.
channel<N>-h265-max-bitrate
1000000
최대 비트레이트입니다. vbr, abr에 적용됩니다.
channel<N>-h265-min-iqp
30
최소 키 프레임 QP값입니다. abr에 적용됩니다.
channel<N>-h265-max-iqp
51
최대 키 프레임 QP값입니다. abr에 적용됩니다.
channel<N>-h265-quality
7
품질 값입니다. 1~31 범위에 있습니다. 높을 수록 고품질입니다. vbr, abr에 적용됩니다.
channel<N>-h265-ratio-change-op
7
Ratio Change Op 값입니다 50~100 범위에 있습니다.. vbr, abr에 적용됩니다.
channel<N>-h265-fix-iqp
30
고정 I 프레임 QP 값입니다. fixqp 모드에 적용됩니다.
channel<N>-h265-fix-pqp
30
고정 P 프레임 QP 값입니다. fixqp 모드에 적용됩니다.
channel<N>-h265-gop-mode
normal
GOP(Group of Pictures) 모드를 지정합니다. 칩셋에 따라 지원됩니다. dual, smart, normal 값 중 하나입니다.
channel<N>-h265-gop-smart-virtual-interval
30
smart 모드 시 적용된 키 프레임 간격입니다.
channel<N>-h265-fast-encoding
0
빠른 인코딩을 활성화 합니다. 칩셋에 따라 지원됩니다. "1"이면 활성화됩니다.
channel<N>-h265-enable-pframe-intra
P 프레임 내에서 Intra 코딩을 허용할 지 여부를 지정합니다. "1"이면 활성화됩니다. 칩셋에 따라 지원됩니다.
아래는 대쉬캠에 적용 가능한 시나리오입니다.