VideoWriter
비디오 파일을 쓰기 위한 객체 만들기
설명
VideoWriter
객체를 사용하여 배열 또는 MATLAB® 동영상으로부터 비디오 파일을 만듭니다. 이 객체에는 비디오에 대한 정보와 출력 비디오를 제어하는 속성에 대한 정보가 포함됩니다. VideoWriter
함수를 사용하여 VideoWriter
객체를 만들고, 속성을 지정한 다음, 객체 함수를 사용하여 비디오를 쓸 수 있습니다.
생성
설명
입력 인수
filename
— 파일 이름
문자형 벡터 | string형 스칼라
파일 이름으로, 문자형 벡터 또는 string형 스칼라로 지정됩니다. VideoWriter
는 파일을 만듭니다.
VideoWriter
에서 지원되는 파일 확장자는 다음과 같습니다.
| AVI 파일 |
| Motion JPEG 2000 파일 |
| MPEG-4 파일(Windows® 7 이상 또는 macOS 10.7 이상의 시스템) |
유효한 파일 확장자를 지정하지 않으면 VideoWriter
가 profile
인수 값에 따라 확장자 .avi
, .mj2
, .mp4
중 하나를 추가합니다. profile
에 값을 지정하지 않으면 VideoWriter
는 확장자가 .avi
인 Motion JPEG 압축 AVI 파일을 만듭니다.
예: 'myFile.avi'
예: '../dir/videos/myFile.mj2'
profile
— 파일 형식
'Motion JPEG AVI'
(디폴트 값) | 'Archival'
| 'Motion JPEG 2000'
| ...
파일 형식으로, 다음 중 하나로 지정됩니다.
profile 의 값 | 설명 |
---|---|
| 무손실 압축을 사용한 Motion JPEG 2000 파일 |
| Motion JPEG 인코딩을 사용한 AVI 파일 |
| Motion JPEG 2000 파일 |
| H.264 인코딩을 사용한 MPEG-4 파일(Windows 7 이상 또는 macOS 10.7 이상의 시스템) |
|
|
| 인덱싱된 비디오를 포함한 무압축 AVI 파일 |
| 회색조 비디오를 포함한 무압축 AVI 파일 |
profile
은 VideoCompressionMethod
같은 비디오 속성에 디폴트 값을 설정합니다.
속성
VideoWriter
객체에는 출력 비디오를 제어하는 속성이 포함됩니다. 미리 정의된 프로파일과 함께 VideoWriter
함수를 사용하여, 특정 형식(예: 'Uncompressed AVI'
또는 'MPEG-4'
)에 맞춤화된 속성이 포함된 VideoWriter
객체를 만들 수 있습니다. 예를 들어, Motion JPEG AVI
프로파일로 VideoWriter
객체를 만들고, Quality
속성에 값을 할당할 수 있습니다.
v = VideoWriter('newfile.avi','Motion JPEG AVI'); v.Quality = 95;
VideoWriter
객체에서 open
함수를 호출한 이후에는 속성의 값을 변경할 수 없습니다. 따라서, 쓰려는 비디오 파일을 열기 전에 속성값을 수정하십시오.
ColorChannels
— 색 채널 개수
양의 정수
읽기 전용 속성입니다.
각 출력 비디오 프레임의 색 채널 개수로, 양의 정수로 지정됩니다.
압축되지 않은 AVI, Motion JPEG AVI, MPEG-4 파일은 색 채널 개수가 3개입니다.
인덱스 AVI 파일과 회색조 AVI 파일은 색 채널 개수가 1개입니다.
Motion JPEG 2000 파일의 채널 개수는
writeVideo
함수의 입력 데이터에 따라 달라집니다. 단색 데이터는 1개이고, 색 데이터는 3개입니다.
데이터형: double
Colormap
— 비디오 파일의 색 정보
P
×3 숫자형 행렬
비디오 파일의 색 정보로, 3개의 열과 최대 256개의 행으로 구성된 숫자형 행렬로 지정됩니다. 행렬의 각 행은 RGB 3색을 사용하여 하나의 색을 정의합니다. RGB 3색은 요소를 3개 가진 행 벡터로, 각 요소는 색을 구성하는 빨간색, 녹색, 파란색의 농도를 지정합니다. 농도의 범위는 [0,1]
이어야 합니다.
open
을 호출하기 전에 또는 첫 번째 프레임을 작성할 때 동영상 프레임 구조체의 colormap
필드를 사용하여 컬러맵을 명시적으로 설정할 수 있습니다.
Colormap
속성은 인덱스 AVI 파일을 쓰는 데 사용되는 객체에만 적용됩니다.
예: colormap(summer(256))
데이터형: double
| uint8
CompressionRatio
— 목표 압축률
10
(디폴트 값) | 1보다 큰 정수
목표 압축률로, 1보다 큰 정수로 지정됩니다. 압축률은 입력 이미지의 바이트 수와 압축된 이미지의 바이트 수의 비입니다. 비디오 데이터는 지정된 목표까지 최대한 많이 압축됩니다.
CompressionRatio
는 Motion JPEG 2000 파일을 쓰는 데 사용되는 객체에만 사용할 수 있습니다. open
을 호출한 후에는 CompressionRatio
값을 변경할 수 없습니다. 이전에 LosslessCompression
을 true
로 설정한 경우에는 CompressionRatio
설정 시 오류가 발생합니다.
예: 5
데이터형: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
Duration
— 출력 파일의 지속 시간
스칼라 값
읽기 전용 속성입니다.
출력 파일의 지속 시간(단위: 초)으로, 스칼라 값으로 지정됩니다.
데이터형: double
FileFormat
— 쓰기 작업에 사용되는 파일 형식
'avi'
| 'mp4'
| 'mj2'
읽기 전용 속성입니다.
쓰기 작업에 사용되는 파일 형식으로, 'avi'
, 'mp4'
또는 'mj2'
로 지정됩니다.
Filename
— 파일의 이름
문자형 벡터 | string형 스칼라
읽기 전용 속성입니다.
파일의 이름으로, 문자형 벡터 또는 string형 스칼라로 지정됩니다.
FrameCount
— 프레임 수
정수
읽기 전용 속성입니다.
비디오 파일에 쓴 프레임 수로, 정수로 지정됩니다.
데이터형: double
FrameRate
— 비디오 재생 속도
30
(디폴트 값) | 양수
비디오 재생 속도(단위: 초당 프레임 수)로, 양수로 지정됩니다.
open
을 호출한 후에는 FrameRate
값을 변경할 수 없습니다.
예: 10
데이터형: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
Height
— 각 비디오 프레임의 높이
스칼라
읽기 전용 속성입니다.
각 비디오 프레임의 높이(단위: 픽셀)로, 스칼라로 지정됩니다. writeVideo
메서드는 첫 번째 프레임의 차원을 기준으로 Height
와 Width
에 대한 값을 설정합니다.
MPEG-4 파일은 2로 나누어지는 프레임 차원이 필요합니다. MPEG-4 파일의 입력 프레임 높이가 짝수가 아닌 경우 VideoWriter
는 아래쪽에서 프레임을 검은색 픽셀 행으로 채웁니다. Windows 시스템에서 MPEG-4 파일을 사용할 경우, 허용되는 값은 Windows 버전에 따라 달라집니다.
데이터형: double
LosslessCompression
— 무손실 압축
true
또는 1
| false
또는 0
무손실 압축으로, 숫자형 또는 논리값 1
(true
) 또는 0
(false
)으로 지정됩니다. LosslessCompression
속성은 Motion JPEG 2000 파일을 쓰는 데 사용되는 객체에만 사용할 수 있습니다.
LosslessCompression
이 true
이면 다음과 같습니다.
writeVideo
함수는 비압축 데이터가 입력 데이터와 동일해지도록 데이터를 씁니다.VideoWriter
는CompressionRatio
에 지정된 값을 무시합니다.
open
을 호출한 후에는 LosslessCompression
값을 변경할 수 없습니다.
기본적으로 LosslessCompression
은 'Motion JPEG 2000'
프로파일에 대해 false
이고 'Archival'
프로파일에 대해 true
입니다.
MJ2BitDepth
— Motion JPEG 2000 파일의 비트 심도
[1,16]
범위의 정수
Motion JPEG 2000 파일의 비트 심도로, [1,16]
범위의 정수로 지정됩니다. 비트 심도는 입력 이미지 데이터의 최하위 비트들의 수입니다.
MJ2BitDepth
는 Motion JPEG 2000 파일을 쓰는 데 사용되는 객체에만 사용할 수 있습니다. open
메서드를 호출하기 전에 값을 지정하지 않은 경우 VideoWriter
는 입력 데이터형을 기준으로 비트 심도를 설정합니다. 예를 들어, writeVideo
에 대한 입력 데이터가 uint8
값이나 int8
값으로 구성된 배열인 경우, MJ2BitDepth
는 8
입니다.
예: 8
데이터형: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
Path
— 비디오 파일의 전체 경로
문자형 벡터 | string형 스칼라
읽기 전용 속성입니다.
비디오 파일의 전체 경로로, 문자형 벡터 또는 string형 스칼라로 지정됩니다.
Quality
— 비디오 품질
75
(디폴트 값) | [0,100]
범위의 정수
비디오 품질로, [0,100]
범위의 정수로 지정됩니다. 품질 숫자가 높을수록 비디오 품질이 높고 파일 크기가 큽니다. 품질 숫자가 낮을수록 비디오 품질이 낮고 파일 크기가 작습니다.
Quality
는 MPEG-4
또는 Motion JPEG AVI
프로파일과 연결된 객체에만 사용할 수 있습니다. open
을 호출한 후에는 Quality
값을 변경할 수 없습니다.
예: 50
데이터형: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
VideoBitsPerPixel
— 픽셀당 비트 수
숫자형 스칼라
읽기 전용 속성입니다.
각 출력 비디오 프레임의 픽셀당 비트 수로, 숫자형 스칼라로 지정됩니다.
트루컬러 비디오가 포함된 AVI 파일, Motion JPEG AVI, MPEG-4 파일은 픽셀당 24비트를 가집니다(3개의 각 색 대역당 8비트).
인덱스 AVI 파일과 회색조 AVI 파일은 픽셀당 8비트를 가집니다.
Motion JPEG 2000 파일의 경우, 픽셀당 비트 수는 MJ2BitDepth
의 값과 이미지 데이터의 대역 수에 따라 달라집니다. 예를 들어, writeVideo
에 대한 입력 데이터가 uint16
값이나 int16
값으로 구성된 3차원 배열인 경우 MJ2BitDepth
는 16
이고, VideoBitsPerPixel
은 48
입니다(비트 심도의 3배).
데이터형: double
VideoCompressionMethod
— 비디오 압축 유형
'None'
| 'H.264'
| 'Motion JPEG'
| 'Motion JPEG 2000'
읽기 전용 속성입니다.
비디오 압축 유형으로, 'None'
, 'H.264'
, 'Motion JPEG'
또는 'Motion JPEG 2000'
으로 지정됩니다.
VideoFormat
— MATLAB의 비디오 형식 표현
문자형 벡터 | string형 스칼라
읽기 전용 속성입니다.
MATLAB의 비디오 형식 표현으로, 문자형 벡터 또는 string형 스칼라로 지정됩니다.
Motion JPEG 2000 파일 형식이 아닌 경우, VideoWriter
는 VideoFormat
을 다음 표에 있는 값 중 하나로 설정합니다.
비디오 형식 |
|
---|---|
압축되지 않은 AVI, Motion JPEG AVI 또는 MPEG-4 파일 | 'RGB24' |
인덱싱된 비디오를 포함한 AVI 파일 | 'Indexed' |
회색조 비디오를 포함한 AVI 파일 | 'Grayscale' |
Motion JPEG 2000 파일의 경우, VideoWriter
는 MJ2BitDepth
의 값과 writeVideo
메서드에 대한 입력 이미지 데이터의 형식을 기준으로 VideoFormat
을 설정합니다. 예를 들어, MJ2BitDepth
속성을 지정하지 않을 경우 VideoWriter
는 형식을 아래에 표시된 것과 같이 설정합니다.
이미지 데이터의 형식 |
|
---|---|
단일 대역 uint8 | 'Mono8' |
단일 대역 int8 | 'Mono8 Signed' |
단일 대역 uint16 | 'Mono16' |
단일 대역 int16 | 'Mono16 Signed' |
3중 대역 uint8 | 'RGB24' |
3중 대역 int8 | 'RGB24 Signed' |
3중 대역 uint16 | 'RGB48' |
3중 대역 int16 | 'RGB48 Signed' |
Width
— 각 비디오 프레임의 너비
숫자형 스칼라
읽기 전용 속성입니다.
각 비디오 프레임의 너비(단위: 픽셀)로, 숫자형 스칼라로 지정됩니다. writeVideo
함수는 첫 번째 프레임의 차원을 기준으로 Height
와 Width
에 대한 값을 설정합니다.
MPEG-4 파일은 2로 나누어지는 프레임 차원이 필요합니다. MPEG-4 파일의 입력 프레임 너비가 짝수가 아닌 경우 VideoWriter
는 오른쪽을 따라 프레임을 검은색 픽셀 열로 채웁니다. Windows 시스템에서 MPEG-4 파일을 사용할 경우, 허용되는 값은 Windows 버전에 따라 달라집니다.
데이터형: double
객체 함수
open | 비디오 데이터를 쓰기 위한 파일 열기 |
close | 비디오 데이터 쓰기 후 파일 닫기 |
writeVideo | 비디오 데이터를 파일에 쓰기 |
VideoWriter.getProfiles | Profiles and file formats that VideoWriter supports |
예제
VideoWriter
객체를 만들고 비디오 쓰기
난수 데이터로 구성된 배열을 만들고, 출력 파일에 대한 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)
무압축 AVI에 프로파일 지정하고 비디오 쓰기
지정된 프로파일을 사용하여 비디오 객체를 만들고, 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)
애니메이션에서 AVI 파일 만들기
좌표축과 Figure 속성을 설정하여 비디오에 대한 프레임을 생성합니다.
Z = peaks; surf(Z); axis tight manual
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
VideoWriter
객체를 닫습니다.
close(v)
확장 기능
스레드 기반 환경
MATLAB®의 backgroundPool
을 사용해 백그라운드에서 코드를 실행하거나 Parallel Computing Toolbox™의 ThreadPool
을 사용해 코드 실행 속도를 높일 수 있습니다.
이 함수는 스레드 기반 환경을 완전히 지원합니다. 자세한 내용은 스레드 기반 환경에서 MATLAB 함수 실행하기 항목을 참조하십시오.
버전 내역
R2010b에 개발됨R2021b: 스레드 기반 환경 지원
MATLAB backgroundPool
을 사용하여 백그라운드에서 VideoWriter
를 실행할 수 있습니다.
R2021b: JPEG 2000 이미지의 픽셀 차이
R2021b와 이전 버전의 MATLAB의 JPEG 2000 이미지 간에 픽셀 값 차이가 있을 수 있습니다.
참고 항목
MATLAB 명령
다음 MATLAB 명령에 해당하는 링크를 클릭했습니다.
명령을 실행하려면 MATLAB 명령 창에 입력하십시오. 웹 브라우저는 MATLAB 명령을 지원하지 않습니다.
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)