동일한 해상도와 프레임 속도에서 비트 전송률은 어떻게 다릅니 까?


15

비디오 품질에 대한 독서 나는 그것이 해상도, 초당 프레임 및 비트 전송률에 따라 비디오의 크기를 결정한다는 것을 알았습니다.

내 질문은 비트 전송률이 어떻게 계산되고 어떻게 달라질 수 있는지입니다.

비디오의 해상도가 360x240이라고 가정 해 봅시다. 프레임 당 86400 픽셀이 필요합니다. 프레임 속도는 30Hz입니다. 따라서 비디오는 초당 86400 × 30 = 2592000 픽셀이 필요합니다.

1 픽셀이 3 바이트 (24 비트)의 데이터라고 가정 해 봅시다 : 우리는 비디오 당 초당 2592000 × 24 비트 (62208000 비트)를 가지고 있습니다.

그러나 어떻게 다를 수 있고 어떻게 품질을 차별화합니까?


비디오가 일련의 비트 맵 이미지 인 경우 png / jpg 이미지 파일에 대한 수학이 이미 꺼져 있습니다.
Daniel Beck

기존의 두 가지 답변은 비디오 압축에 대한 두드러진 속성을 강조하지 않습니다. 대부분의 비디오 코덱은 손실 압축을 사용합니다. 즉, 일부 비디오 정보는 원시 비디오가 압축 및 인코딩 될 때 폐기된다. 폐기 및 손실 된 이미지 정보 / 세부의 양 또는 정도는 품질 계수에 의해 결정된다 . 오디오 압축의 경우 손실 및 무손실 압축 기술이 있습니다.
톱밥

@ 톱밥 : 그들은하지 않습니다? 나는 세 번째 문단이 상당히 명확하다고 생각했다. 어쨌든 너무 많은 정보를 제공하는 것은 때때로 그렇게 좋지 않습니다. 나는 원한다면, asker가 더 많은 것을 배울 수 있도록 충분히주는 것을 믿는다. 그렇지 않으면, 나는 이렇게 많은 다른 방법이 왜 귀하의 게시물 등, 등, 누군가가 다른 통해 하나의 압축기를 선택하는 이유 강조하지 않거나 말할 수있다
마티 프라이드

@sawdust 맞습니다. JPEG 부분에 약간 묻혀있었습니다. 좀 더 자세한 내용을 추가했습니다.
slhck

답변:


21

계산 한 내용은 압축되지 않은 원본 비디오의 비트 전송률입니다. 일반적으로 연구 또는 기타 특수 응용 프로그램을 제외하고는 이러한 기능을 찾을 수 없습니다. 방송사도 압축 된 비디오를 사용하지만 일반적인 YouTube 비디오보다 비트 전송률이 훨씬 높습니다.

따라서 비디오 품질은 비디오 압축 방식과 관련이 있습니다. 압축할수록 프레임 당 더 적은 비트가 필요합니다. 또한 압축할수록 품질이 떨어집니다. 이제 일부 비디오는 다른 비디오보다 압축하기가 훨씬 쉽습니다. 본질적으로 해상도와 프레임 속도가 동일하더라도 비트 전송률이 낮은 이유입니다.

이것이 왜 그런지 이해하려면 비디오 압축에 사용되는 두 가지 기본 원칙을 알고 있어야합니다. 이를 "공간"및 "시간 중복"이라고합니다.

공간 중복

공간 중복성은 자연적인 내용을 보여주는 이미지에 존재합니다. 이것이 JPEG 가 잘 작동 하는 이유 입니다. 픽셀 블록을 함께 코딩 할 수 있기 때문에 이미지 데이터를 압축합니다. 예를 들어 8 × 8 픽셀입니다. 이것을 "매크로 블록"이라고합니다.

최신 비디오 코덱도 동일한 기능을 수행합니다. 기본적으로 프레임 단위로 프레임을 압축하기 위해 JPEG와 유사한 알고리즘을 사용합니다. 따라서 픽셀을 더 큰 그룹으로 "요약"하기 때문에 더 이상 픽셀 당 비트를 저장하지 않고 매크로 블록 당 비트를 저장합니다. 이들을 요약하면 알고리즘은 육안으로 볼 수없는 정보도 버립니다. 여기서 대부분의 비트 전송률을 줄일 수 있습니다. 데이터 를 양자화 하여 작동 합니다. 이것은 우리가 볼 수없는 것보다 더인지적이고 "버려지는"주파수를 유지합니다. 양자화 계수는 대부분의 코덱에서 "QP"로 표시되며 품질의 주요 제어 노브입니다.

이제 동일한 이미지로 이전에 인코딩 된 매크로 블록에서 매크로 블록을 예측할 수도 있습니다 . 이를 인트라 예측 이라고 합니다. 예를 들어, 회색 벽의 일부는 이미 프레임의 왼쪽 상단에 인코딩되어 있으므로 동일한 매크로에서 해당 매크로 블록을 다시 사용할 수 있습니다 (예 : 옆에있는 매크로 블록). 이전과의 차이점을 저장하고 데이터를 저장합니다. 이런 식으로, 우리는 서로 매우 유사한 두 개의 매크로 블록을 인코딩 할 필요가 없습니다.

동일한 이미지 크기에서 비트 전송률이 변경되는 이유는 무엇입니까? 글쎄, 일부 이미지는 다른 이미지보다 인코딩하기가 더 쉽습니다. 공간 활동이 높을수록 실제로 인코딩해야하는 시간이 더 많아집니다. 부드러운 질감은 세부적인 질감보다 적은 비트를 차지합니다. 인트라 예측도 마찬가지입니다. 회색 벽의 프레임을 사용하면 하나의 매크로 블록을 사용하여 다른 모든 블록을 예측할 수 있지만 흐르는 물의 프레임은 제대로 작동하지 않을 수 있습니다.

시간 중복

다른 프레임 다음에 오는 프레임은 이전 프레임과 매우 유사하기 때문에 존재합니다. 대부분의 경우 약간만 변경되므로 완전히 인코딩하는 것은 의미가 없습니다. 비디오 인코더의 기능은 매크로 블록에서와 마찬가지로 두 개의 후속 프레임 간의 차이 를 인코딩하는 것입니다.

움직임 보상 에 관한 Wikipedia의 기사에서 예를 들어 , 이것이 원래 프레임이라고 가정 해 봅시다.

다음 프레임과의 차이점은 다음과 같습니다.

이제 인코더 는 픽셀 별 값이 아니라 실제 차이 만 저장 합니다. 이것이 각 프레임에 사용 된 비트가 매번 동일하지 않은 이유입니다. 이러한 "차이"프레임은 완전히 인코딩 된 프레임에 의존하기 때문에 최신 코덱에는 두 가지 유형의 프레임이 있습니다.

비디오에 I- 프레임을 삽입해야하는 경우가 있습니다. 실제 비트 전송률은 사용 된 I- 프레임 수에 따라 다릅니다. 또한, 두 개의 후속 프레임 사이에 움직임의 차이가 클수록 인코더가 더 많이 저장해야합니다. "아무것도"움직이는 비디오는 스포츠 비디오보다 인코딩하기 쉽고 프레임 당 더 적은 비트를 사용합니다.


+1-이것이 제가 의미 한 바이지만 압축 알고리즘은 약간 남았습니다. :)
Marty Fried

+1 이것이 필요한 전부입니다. 특히 움직임 보상. 감사합니다
Vincent Mathew

6

나는 당신의 수학이 실제로는 정확하다고 생각하지만 조금 더 있습니다. 압축은 여기서 누락 된 링크입니다.

압축되지 않은 비트 전송률을 계산하고 압축이 존재하는 이유를 생각해 냈습니다. 압축되지 않은 비디오에서는 비트 전송률이 엄청나게 커집니다. 따라서 소스에서 비디오를 압축하고 수신기에서 압축을 풀면 비트 전송률을 관리 할 수있게됩니다. 하드웨어 나 소프트웨어 일 수있는 충분히 빠른 압축 풀기가 필요합니다.

따라서 문제는 압축이 허용되는 양이됩니다. 일반적으로 손실이없는 것은 아니므로 정보를 잃어 버리지 만 눈에 띄지 않는 덜 중요한 데이터를 잃을 정도로 지능적으로 만들려고합니다. 움직임이 많을 때까지 일반적으로 매우 쉽습니다. 그러면 더 복잡해집니다.

편집 : 추가하는 것을 잊었지만 압축 방법을 구현하는 부분은 코덱입니다. 귀하의 게시물에서이 태그를 태그로 사용한 것으로 나타났습니다.


3
또한 비디오 압축은 일반적으로 픽셀 기반이 아니라 매크로 블록 이라고하는 픽셀 블록에서 작동합니다 .
slhck
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.