Main Content

VideoWriter

비디오 파일을 쓰기 위한 객체 만들기

설명

VideoWriter 객체를 사용하여 배열 또는 MATLAB® 동영상으로부터 비디오 파일을 만듭니다. 이 객체에는 비디오에 대한 정보와 출력 비디오를 제어하는 속성에 대한 정보가 포함됩니다. VideoWriter 함수를 사용하여 VideoWriter 객체를 만들고, 속성을 지정한 다음, 객체 함수를 사용하여 비디오를 쓸 수 있습니다.

생성

설명

예제

v = VideoWriter(filename)은 Motion JPEG 압축을 사용한 AVI 파일에 비디오 데이터를 쓰는 VideoWriter 객체를 만듭니다.

예제

v = VideoWriter(filename,profile)은 특정 파일 형식(예: 'MPEG-4' 또는 'Uncompressed AVI')에 맞춰진 속성 모음을 추가로 적용합니다.

입력 인수

모두 확장

파일 이름으로, 문자형 벡터 또는 string형 스칼라로 지정됩니다. VideoWriter는 파일을 만듭니다.

VideoWriter에서 지원되는 파일 확장자는 다음과 같습니다.

.avi

AVI 파일

.mj2

Motion JPEG 2000 파일

.mp4 또는 .m4v

MPEG-4 파일(Windows® 7 이상 또는 macOS 10.7 이상의 시스템)

유효한 파일 확장자를 지정하지 않으면 VideoWriterprofile 인수 값에 따라 확장자 .avi, .mj2, .mp4 중 하나를 추가합니다. profile에 값을 지정하지 않으면 VideoWriter는 확장자가 .avi인 Motion JPEG 압축 AVI 파일을 만듭니다.

예: 'myFile.avi'

예: '../dir/videos/myFile.mj2'

파일 형식으로, 다음 중 하나로 지정됩니다.

profile의 값설명

'Archival'

무손실 압축을 사용한 Motion JPEG 2000 파일

'Motion JPEG AVI'

Motion JPEG 인코딩을 사용한 AVI 파일

'Motion JPEG 2000'

Motion JPEG 2000 파일

'MPEG-4'

H.264 인코딩을 사용한 MPEG-4 파일(Windows 7 이상 또는 macOS 10.7 이상의 시스템)

'Uncompressed AVI'

RGB24 비디오를 포함한 무압축 AVI 파일

'Indexed AVI'

인덱싱된 비디오를 포함한 무압축 AVI 파일

'Grayscale AVI'

회색조 비디오를 포함한 무압축 AVI 파일

profileVideoCompressionMethod 같은 비디오 속성에 디폴트 값을 설정합니다.

속성

모두 확장

VideoWriter 객체에는 출력 비디오를 제어하는 속성이 포함됩니다. 미리 정의된 프로파일과 함께 VideoWriter 함수를 사용하여, 특정 형식(예: 'Uncompressed AVI' 또는 'MPEG-4')에 맞춤화된 속성이 포함된 VideoWriter 객체를 만들 수 있습니다. 예를 들어, Motion JPEG AVI 프로파일로 VideoWriter 객체를 만들고, Quality 속성에 값을 할당할 수 있습니다.

v = VideoWriter('newfile.avi','Motion JPEG AVI');
v.Quality = 95;

VideoWriter 객체에서 open 함수를 호출한 이후에는 속성의 값을 변경할 수 없습니다. 따라서, 쓰려는 비디오 파일을 열기 전에 속성값을 수정하십시오.

읽기 전용 속성입니다.

각 출력 비디오 프레임의 색 채널 개수로, 양의 정수로 지정됩니다.

  • 압축되지 않은 AVI, Motion JPEG AVI, MPEG-4 파일은 색 채널 개수가 3개입니다.

  • 인덱스 AVI 파일과 회색조 AVI 파일은 색 채널 개수가 1개입니다.

  • Motion JPEG 2000 파일의 채널 개수는 writeVideo 함수의 입력 데이터에 따라 달라집니다. 단색 데이터는 1개이고, 색 데이터는 3개입니다.

데이터형: double

비디오 파일의 색 정보로, 3개의 열과 최대 256개의 행으로 구성된 숫자형 행렬로 지정됩니다. 행렬의 각 행은 RGB 3색을 사용하여 하나의 색을 정의합니다. RGB 3색은 요소를 3개 가진 행 벡터로, 각 요소는 색을 구성하는 빨간색, 녹색, 파란색의 농도를 지정합니다. 농도의 범위는 [0,1]이어야 합니다.

open을 호출하기 전에 또는 첫 번째 프레임을 작성할 때 동영상 프레임 구조체의 colormap 필드를 사용하여 컬러맵을 명시적으로 설정할 수 있습니다.

Colormap 속성은 인덱스 AVI 파일을 쓰는 데 사용되는 객체에만 적용됩니다.

예: colormap(summer(256))

데이터형: double | uint8

목표 압축률로, 1보다 큰 정수로 지정됩니다. 압축률은 입력 이미지의 바이트 수와 압축된 이미지의 바이트 수의 비입니다. 비디오 데이터는 지정된 목표까지 최대한 많이 압축됩니다.

CompressionRatio는 Motion JPEG 2000 파일을 쓰는 데 사용되는 객체에만 사용할 수 있습니다. open을 호출한 후에는 CompressionRatio 값을 변경할 수 없습니다. 이전에 LosslessCompressiontrue로 설정한 경우에는 CompressionRatio 설정 시 오류가 발생합니다.

예: 5

데이터형: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

읽기 전용 속성입니다.

출력 파일의 지속 시간(단위: 초)으로, 스칼라 값으로 지정됩니다.

데이터형: double

읽기 전용 속성입니다.

쓰기 작업에 사용되는 파일 형식으로, 'avi', 'mp4' 또는 'mj2'로 지정됩니다.

읽기 전용 속성입니다.

파일의 이름으로, 문자형 벡터 또는 string형 스칼라로 지정됩니다.

읽기 전용 속성입니다.

비디오 파일에 쓴 프레임 수로, 정수로 지정됩니다.

데이터형: double

비디오 재생 속도(단위: 초당 프레임 수)로, 양수로 지정됩니다.

open을 호출한 후에는 FrameRate 값을 변경할 수 없습니다.

예: 10

데이터형: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

읽기 전용 속성입니다.

각 비디오 프레임의 높이(단위: 픽셀)로, 스칼라로 지정됩니다. writeVideo 메서드는 첫 번째 프레임의 차원을 기준으로 HeightWidth에 대한 값을 설정합니다.

MPEG-4 파일은 2로 나누어지는 프레임 차원이 필요합니다. MPEG-4 파일의 입력 프레임 높이가 짝수가 아닌 경우 VideoWriter는 아래쪽에서 프레임을 검은색 픽셀 행으로 채웁니다. Windows 시스템에서 MPEG-4 파일을 사용할 경우, 허용되는 값은 Windows 버전에 따라 달라집니다.

데이터형: double

무손실 압축으로, 숫자형 또는 논리값 1(true) 또는 0(false)으로 지정됩니다. LosslessCompression 속성은 Motion JPEG 2000 파일을 쓰는 데 사용되는 객체에만 사용할 수 있습니다.

LosslessCompressiontrue이면 다음과 같습니다.

  • writeVideo 함수는 비압축 데이터가 입력 데이터와 동일해지도록 데이터를 씁니다.

  • VideoWriterCompressionRatio에 지정된 값을 무시합니다.

open을 호출한 후에는 LosslessCompression 값을 변경할 수 없습니다.

기본적으로 LosslessCompression'Motion JPEG 2000' 프로파일에 대해 false이고 'Archival' 프로파일에 대해 true입니다.

Motion JPEG 2000 파일의 비트 심도로, [1,16] 범위의 정수로 지정됩니다. 비트 심도는 입력 이미지 데이터의 최하위 비트들의 수입니다.

MJ2BitDepth는 Motion JPEG 2000 파일을 쓰는 데 사용되는 객체에만 사용할 수 있습니다. open 메서드를 호출하기 전에 값을 지정하지 않은 경우 VideoWriter는 입력 데이터형을 기준으로 비트 심도를 설정합니다. 예를 들어, writeVideo에 대한 입력 데이터가 uint8 값이나 int8 값으로 구성된 배열인 경우, MJ2BitDepth8입니다.

예: 8

데이터형: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

읽기 전용 속성입니다.

비디오 파일의 전체 경로로, 문자형 벡터 또는 string형 스칼라로 지정됩니다.

비디오 품질로, [0,100] 범위의 정수로 지정됩니다. 품질 숫자가 높을수록 비디오 품질이 높고 파일 크기가 큽니다. 품질 숫자가 낮을수록 비디오 품질이 낮고 파일 크기가 작습니다.

QualityMPEG-4 또는 Motion JPEG AVI 프로파일과 연결된 객체에만 사용할 수 있습니다. open을 호출한 후에는 Quality 값을 변경할 수 없습니다.

예: 50

데이터형: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

읽기 전용 속성입니다.

각 출력 비디오 프레임의 픽셀당 비트 수로, 숫자형 스칼라로 지정됩니다.

트루컬러 비디오가 포함된 AVI 파일, Motion JPEG AVI, MPEG-4 파일은 픽셀당 24비트를 가집니다(3개의 각 색 대역당 8비트).

인덱스 AVI 파일과 회색조 AVI 파일은 픽셀당 8비트를 가집니다.

Motion JPEG 2000 파일의 경우, 픽셀당 비트 수는 MJ2BitDepth의 값과 이미지 데이터의 대역 수에 따라 달라집니다. 예를 들어, writeVideo에 대한 입력 데이터가 uint16 값이나 int16 값으로 구성된 3차원 배열인 경우 MJ2BitDepth16이고, VideoBitsPerPixel48입니다(비트 심도의 3배).

데이터형: double

읽기 전용 속성입니다.

비디오 압축 유형으로, 'None', 'H.264', 'Motion JPEG' 또는 'Motion JPEG 2000'으로 지정됩니다.

읽기 전용 속성입니다.

MATLAB의 비디오 형식 표현으로, 문자형 벡터 또는 string형 스칼라로 지정됩니다.

Motion JPEG 2000 파일 형식이 아닌 경우, VideoWriterVideoFormat을 다음 표에 있는 값 중 하나로 설정합니다.

비디오 형식

VideoFormat의 값

압축되지 않은 AVI, Motion JPEG AVI 또는 MPEG-4 파일

'RGB24'

인덱싱된 비디오를 포함한 AVI 파일

'Indexed'

회색조 비디오를 포함한 AVI 파일

'Grayscale'

Motion JPEG 2000 파일의 경우, VideoWriterMJ2BitDepth의 값과 writeVideo 메서드에 대한 입력 이미지 데이터의 형식을 기준으로 VideoFormat을 설정합니다. 예를 들어, MJ2BitDepth 속성을 지정하지 않을 경우 VideoWriter는 형식을 아래에 표시된 것과 같이 설정합니다.

이미지 데이터의 형식

VideoFormat의 값

단일 대역 uint8'Mono8'
단일 대역 int8'Mono8 Signed'
단일 대역 uint16'Mono16'
단일 대역 int16'Mono16 Signed'
3중 대역 uint8'RGB24'
3중 대역 int8'RGB24 Signed'
3중 대역 uint16'RGB48'
3중 대역 int16'RGB48 Signed'

읽기 전용 속성입니다.

각 비디오 프레임의 너비(단위: 픽셀)로, 숫자형 스칼라로 지정됩니다. writeVideo 함수는 첫 번째 프레임의 차원을 기준으로 HeightWidth에 대한 값을 설정합니다.

MPEG-4 파일은 2로 나누어지는 프레임 차원이 필요합니다. MPEG-4 파일의 입력 프레임 너비가 짝수가 아닌 경우 VideoWriter는 오른쪽을 따라 프레임을 검은색 픽셀 열로 채웁니다. Windows 시스템에서 MPEG-4 파일을 사용할 경우, 허용되는 값은 Windows 버전에 따라 달라집니다.

데이터형: double

객체 함수

open비디오 데이터를 쓰기 위한 파일 열기
close비디오 데이터 쓰기 후 파일 닫기
writeVideo비디오 데이터를 파일에 쓰기
VideoWriter.getProfilesProfiles and file formats that VideoWriter supports

예제

모두 축소

난수 데이터로 구성된 배열을 만들고, 출력 파일에 대한 VideoWriter 객체를 만든 다음, 배열을 비디오에 쓰는 작업을 수행하여 비디오를 파일에 씁니다.

300×300 데이터 행렬을 만듭니다.

A = rand(300);

Motion JPEG AVI 파일 newfile.avi를 쓸 수 있도록 VideoWriter 객체를 만들고, 쓰려는 객체를 엽니다.

v = VideoWriter("newfile.avi");
open(v)

데이터 행렬 A를 비디오 파일에 씁니다.

writeVideo(v,A)

VideoWriter 객체를 닫습니다.

close(v)

지정된 프로파일을 사용하여 비디오 객체를 만들고, RGB 이미지가 포함된 배열을 만든 다음, 이 배열을 비디오 파일에 씁니다.

RGB24 비디오에 사용될 새 무압축 AVI 파일에 대해 VideoWriter 객체를 만듭니다.

v = VideoWriter("newfile.avi","Uncompressed AVI");

쓰려는 파일을 엽니다.

open(v)

견본 스틸 이미지 peppers.png의 데이터가 포함된 배열을 만듭니다. A의 이미지를 비디오 파일에 씁니다.

A = imread("peppers.png");
writeVideo(v,A)

VideoWriter 객체를 닫습니다.

close(v)

좌표축과 Figure 속성을 설정하여 비디오에 대한 프레임을 생성합니다.

Z = peaks;
surf(Z);
axis tight manual

Figure contains an axes object. The axes object contains an object of type surface.

set(gca,"NextPlot","replacechildren")

출력 비디오 파일에 대한 VideoWriter 객체를 만들고, 쓰려는 객체를 엽니다.

v = VideoWriter("peaks.avi");
open(v)

일련의 프레임을 생성하고, Figure에서 각 프레임을 가져온 다음, 각 프레임을 파일에 씁니다.

for k = 1:20
   surf(sin(2*pi*k/20)*Z,Z)
   frame = getframe(gcf);
   writeVideo(v,frame)
end

Figure contains an axes object. The axes object contains an object of type surface.

VideoWriter 객체를 닫습니다.

close(v)

확장 기능

버전 내역

R2010b에 개발됨

모두 확장

참고 항목

|