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

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

비디오 품질에 대해 읽어보니 해상도, 초당 프레임 수, 비디오 크기를 결정하는 비트 전송률에 따라 달라지는 것으로 나타났습니다.

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

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

따라서 1픽셀이 3바이트(24비트)의 데이터라고 가정해 보겠습니다. 초당 2592000 × 24비트(62208000비트)의 비디오가 있는데, 이는 62208kBits입니다(올바르지 않은 것 같습니다. 계산에 문제가 있을 수 있습니다).

하지만 어떻게 다를 수 있으며 품질에 어떤 차이가 있을까요?

답변1

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

따라서 비디오 품질은 비디오 압축 방법과 많은 관련이 있습니다. 더 많이 압축할수록 프레임당 소요되는 비트 수가 줄어듭니다. 또한 압축을 많이 할수록 품질은 나빠집니다. 이제 일부 비디오는 다른 비디오보다 압축하기가 훨씬 쉽습니다. 본질적으로 이것이 동일한 해상도와 프레임 속도를 가지고 있어도 비트 전송률이 낮은 이유입니다.

그 이유를 이해하려면 비디오 압축이 사용하는 두 가지 주요 원칙을 알아야 합니다. 이를 "공간적 중복성" 및 "시간적 중복성"이라고 합니다.

공간적 중복성

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

최신 비디오 코덱도 동일한 작업을 수행합니다. 기본적으로 프레임을 블록 단위로 압축하기 위해 JPEG와 유사한 알고리즘을 사용합니다. 따라서 더 이상 픽셀당 비트를 저장하지 않고 매크로블록당 비트를 저장합니다. 왜냐하면 픽셀을 더 큰 그룹으로 "요약"하기 때문입니다. 이를 요약함으로써 알고리즘은 사람의 눈에 보이지 않는 정보도 삭제합니다. 여기서 대부분의 비트 전송률을 줄일 수 있습니다. 그것은 작동합니다양자화자료. 이렇게 하면 더 인지하기 쉬운 주파수는 유지되고 우리가 볼 수 없는 주파수는 "버릴" 것입니다. 대부분의 코덱에서 양자화 요소는 "QP"로 표시되며 품질을 결정하는 주요 컨트롤 노브입니다.

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

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

임시 중복

이는 다른 프레임 다음에 오는 프레임이 아마도 이전 프레임과 매우 유사하기 때문에 발생합니다. 대부분 약간만 변경되므로 완전히 인코딩하는 것은 의미가 없습니다. 비디오 인코더가 하는 일은 단지차이점매크로블록에 대해 할 수 있는 것과 마찬가지로 두 개의 후속 프레임 사이에.

Wikipedia의 기사에서 예를 들어모션 보상, 이것이 원래 프레임이라고 가정해 보겠습니다.

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

이제 인코더는실제픽셀별 값이 아니라 차이점입니다. 이것이 각 프레임에 사용되는 비트가 매번 동일하지 않은 이유입니다. 이러한 "차이" 프레임은 완전히 인코딩된 프레임에 따라 달라지며, 이것이 최신 코덱에 대해 최소한 두 가지 유형의 프레임이 있는 이유입니다.

  • I-프레임(일명 키프레임) — 완전히 인코딩된 것입니다.
  • P 프레임— 이것들은 단지 차이를 저장하는 것들입니다

비디오에 I-프레임을 삽입해야 하는 경우가 있습니다. 실제 비트 전송률은 사용된 I-프레임 수에 따라 달라집니다. 더욱이 두 개의 후속 프레임 사이에 모션 차이가 많을수록 인코더가 저장해야 하는 양이 늘어납니다. "아무것도" 움직이지 않는 비디오는 스포츠 비디오보다 인코딩하기가 더 쉽고 프레임당 비트도 더 적게 사용합니다.

답변2

나는 당신의 계산이 실제로 정확하다고 생각합니다. 그러나 여기에는 조금 더 많은 것이 있습니다. 압축은 여기서 누락된 링크입니다.

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

따라서 문제는 얼마나 많은 압축을 허용할 수 있는지입니다. 일반적으로 무손실이 아니므로 정보가 손실되지만 눈에 띄지 않는 덜 중요한 데이터를 잃을 만큼 지능적으로 만들려고 노력합니다. 일반적으로 움직임이 많아지기 전까지는 상당히 쉬우나 그 이후에는 더욱 복잡해집니다.

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

관련 정보