오디오 및 비디오 입력에 대한 기본 지식

오디오 및 비디오 입력에 대한 기본 지식

여기에 이미지 설명 삽입

비디오 캡슐화 형식(MP4/MKV…) 대 비디오 인코딩 형식(H.264/FLAC/AAC…)

  동영상이란 무엇인가요? 사실 그것은 작은 시간 간격으로 연속적으로 표시되는 그림일 뿐입니다. 사람들은 그림 속 인물들이 움직이고 있다고 느끼며, 이것이 바로 영화다. 즉, 영화의 본질은 N장 이상의 사진을 모은 것이다. 그렇다면 각 그림과 프레임 사이의 관계는 무엇일까요?

  사실 영화의 모든 사진을 그대로 저장하면 공간이 많이 남습니다. 그러나 각각의 그림을 특정 알고리즘을 통해 프레임으로 인코딩한 다음 프레임을 스트림으로 연결한 다음 다른 스트림을 특정 컨테이너에 넣으면 이것이 일반적으로 볼 수 있는 동영상 파일입니다.

  MP4 및 MKV는 다운로드하는 가장 일반적인 비디오 파일 유형입니다. 이러한 파일은 실제로 패키지와 유사하며 그 접미사는 패키지의 패키징 방법입니다. 이 패키지에는 비디오(이미지만), 오디오(사운드만), 자막 등이 포함되어 있습니다. 플레이어가 재생되면 먼저 패키지(기술 용어는 demux라고 함)를 풀고 비디오, 오디오 등을 꺼낸 다음 디코딩하여 재생합니다.

  패키지일 뿐이므로 이 접미사는 안에 무엇이 있는지, 얼마나 많은지 보장할 수 없음을 의미합니다. 라고 부르는 패키지의 각 항목에는 轨道(track)일반적으로 다음이 포함됩니다.

  • 비디오(비디오): 일반적으로 있어야 하지만 mka 형식의 외부 오디오 트랙과 같은 예외가 있습니다. 실제로는 비디오가 없는 mkv입니다. 비디오에 대해 이야기할 때 소리는 포함하지 않는다는 점에 유의하십시오.
  • 오디오(오디오): 일반적으로 있어야 하지만 경우에 따라 음소거되어 있으므로 가져오지 않아도 됩니다.
  • 챕터(Chapter): 원본 Blu-ray 디스크와 함께 제공되는 분할 정보입니다. 파일을 가져오면 플레이어에서 챕터와 함께 효과를 볼 수 있습니다: potplayer 화면을 마우스 오른쪽 버튼으로 클릭, option-play-진행률 표시줄에 북마크/챕터 표시 표시, mpc-hc 화면을 마우스 오른쪽 버튼으로 클릭, option-adjustment-in progress 막대에 챕터 마커가 표시됩니다.
  • 자막(Subtitles) : 파일에 자막이 딸려오는 경우가 있는데 자막은 영상에 직접 통합된 하드자막이 아니라서 포장용기에 함께 포장되어 있습니다.

  하나씩 나열되지 않은 다른 첨부 파일 등이 있을 수 있습니다. 각 유형에 반드시 하나의 트랙만 있는 것은 아닙니다. 예를 들어 여러 오디오 트랙이 있는 MKV가 자주 보입니다.

  각 트랙에는 고유한 형식이 있습니다. 예를 들어 흔히 말하는 영상은 H.264, 음성은 AAC인데 각 트랙의 포맷입니다.

  일반적인 비디오 형식에는 H.264(8비트/10비트로 세분할 수 있음), H.265(현재 8비트/10비트로 나눌 수도 있음), RealVideo(초기 rm/rmvb에서 일반적임), VC-1(Microsoft 주도, 공통 wmv에서). 기본적으로 H.264=AVC=AVC1, H.265=HEVC입니다.

  일반적인 오디오 형식에는 손실이 없는 FLAC/ALAC/TruseHD/DTS-HD MA와 손실이 있는 AAC/MP3/AC3/DTS(코어)가 있습니다.

여기에 이미지 설명 삽입

  

비디오의 기본 매개변수: 해상도, 프레임, 프레임 속도 및 비트 전송률

  비디오는 연속적인 이미지로 구성됩니다. 각 이미지를帧(frame). 이미지는 像素(pixel).이미지의 픽셀 수라고 하는 이미지의 픽셀 수分辨率. 예를 들어, 1920×1080 이미지는 가로 세로 1920×1080 픽셀로 구성되어 있다는 뜻입니다. 비디오의 해상도는 이미지의 각 프레임의 해상도입니다.

  영상은 1초에 몇 개의 이미지로 구성되어 있는지를 비디오라고 합니다.帧率(frame-rate,fps). 일반적인 프레임 속도는 24000/1001=23.976, 30000/1001=29.970, 60000/1001=59.940, 25.000, 50.000 등입니다. 이 숫자는 1초 동안 깜박이는 이미지의 수입니다. 예를 들어 23.976은 1001초에 24000개의 이미지가 있음을 의미합니다. 비디오의 프레임 속도는 일정(cfr, Const Frame-Rate) 또는 가변(vfr, Variable Frame-Rate)일 수 있습니다.

  码率의 정의는 비디오 파일 크기를 시간으로 나눈 값입니다., 단위는 일반적으로 Kbps(Kbit/s) 또는 Mbps(Mbit/s)입니다. 1B(바이트) = 8b(비트)입니다. 24분짜리 900MB 동영상:

体积:900MB = 900MByte = 7200Mbit
时间:24min = 1440s
码率:7200/1440  = 5000 Kbps = 5Mbps

  비디오 파일의 시간이 기본적으로 동일할 때(예를 들어 현재 에피소드가 약 24분인 경우) 비트 전송률과 볼륨은 기본적으로 동일하며 비디오의 크기를 설명하는 데 사용되는 매개 변수입니다. 길이와 해상도가 같은 파일이라도 크기는 다르지만 실제로는 코드율이 다릅니다.

  비트 전송률은 단위 시간당 비디오를 녹화하는 데 사용되는 총 데이터 양으로도 해석할 수 있습니다 . 비트 전송률이 높은 비디오는 비디오를 녹화하는 데 더 많은 데이터가 사용됨을 의미하며 잠재적인 해석은 비디오가 더 나은 품질을 가질 수 있다는 것입니다. 이는 잠재적인 가능성일 뿐이며, 나중에 높은 비트 전송률이 반드시 높은 이미지 품질과 같지 않은 이유를 분석할 것입니다.

  

  

부호율 제어 CQP/CRF/ABR/CBR/VBV

  초당 비디오를 재생하는 데 필요한 데이터의 양은 비트 전송률 (즉, 흔히 비트 전송률이라고 함)입니다.

비트 전송률 = 너비 * 높이 * 색상 심도 * 초당 프레임 수

예를 들어 초당 30프레임, 픽셀당 24비트, 해상도 480x240의 동영상은 초당 82,944,000비트 또는   압축을 수행하지 않은 경우 82.944Mbps(30x480x240x24)가 필요합니다.

  

Ⅰ. CQP(상수 QP)

가장 간단한 부호율 제어 방식인 고정 QP ,이미지의 각 프레임은 특정 QP에 따라 인코딩됩니다., 프레임당 인코딩된 데이터의 양을 알 수 없으며 속도 우선 모델도 품질 우선 모델도 아니지만 구현하기에 가장 간단한 모델입니다.

적용 가능한 시나리오: 이 방법은 인코딩된 콘텐츠의 복잡성을 고려하지 않고 동일한 압축 비율로 각 프레임을 처리하기 때문에 일반적으로 권장되지 않습니다. 출력 비디오 품질비트 전송률은 고정되지 않습니다 . 개인적으로 움직임이 거의 없는 정적 장면과 같이 아주 단순한 장면만 사용할 수 있다고 생각하는데, 복잡한 장면을 만났을 때 비트율 변동이 매우 큽니다. 또는 알고리즘 연구나 검증에 사용할 수 있습니다.

특징:

  • 순간 비트 전송률은 장면의 복잡성에 따라 변동합니다.

  • 인코딩 속도가 빠르고 제어가 가장 간단하며 각 프레임의 QP 값이 동일합니다.

  • CQP 모드는 x264 및 x265에서 지원되지만 libvpx에서는 지원되지 않습니다.

  • H.264의 QP 범위는 [0, 51]입니다. QP 값이 클수록 양자화 단계 크기가 커지고 인코딩된 비디오의 품질이 낮아집니다. QP는 무손실 인코딩의 경우 0입니다.

Ⅱ. CRF(정수율 계수)

일정한 품질 요소 .특정 "시각적 품질"을 출력으로 지정. 비싸지만 육안으로 보기 어려운 프레임(고속 모션 또는 풍부한 질감)의 비트 전송률을 줄이고 정적 프레임의 비트 전송률을 높임으로써 이를 수행합니다.

기능: 프레임 간 QP 변경, 프레임 내 매크로 블록의 QP 변경, 출력 비트 전송률을 알 수 없으며 각 프레임 출력의 시각적 품질은 기본적으로 일정합니다.이 방법은 고정 품질 모드 + 제한 비트 전송률 피크 방법과 동일합니다. 값.

적용 가능한 시나리오: 비디오 품질에 대한 특정 요구 사항이 있는 경우에 적합합니다.CRF 값은 비디오 품질 기대에 대한 고정 출력 값으로 간단히 이해할 수 있습니다.안정적인 비디오 품질이 있기를 바랍니다.주관적인 비디오 품질은 이 모드를 선택할 수 있습니다. 영상 품질 우선 모델입니다. 비디오 품질은 단순히 비디오의 선명도, 픽셀의 섬세함 및 비디오의 유창함으로 이해할 수 있습니다.

특징:

  • 일정한 QP와 유사하지만 주관적으로 인식되는 일정한 품질을 추구하는 순간 비트 전송률도 장면의 복잡성에 따라 변동하며 QP 값은 비디오 프레임 또는 내부 매크로 블록 간에 다릅니다.

  • 움직임이 빠르거나 디테일이 풍부한 장면의 경우 양자화 왜곡이 적절하게 증가하고(인간의 눈은 민감하지 않기 때문에) 정적인 영역이나 평탄한 영역의 경우 양자화 왜곡이 감소합니다.

  • CRF는 x264 및 x265의 기본 속도 제어 방법이며 libvpx에도 사용할 수 있습니다.

  • CRF 값이 클수록 동영상 압축률은 높아지지만 동영상 화질은 떨어집니다 각 코덱의 CRF 값 범위는 일반적으로 [0-51]이지만 일반적인 기본값은 x264의 경우 23, x265 라이브러리의 경우 28입니다. ;

  • 어떤 CRF를 사용해야 할지 잘 모르겠다면 기본값으로 시작하고 출력에 대한 주관적인 인상에 따라 변경하십시오. 품질이 충분하지 않으면 CRF를 낮춥니다. 파일 크기가 너무 크면 더 높은 CRF를 선택하십시오. ±6을 변경하면 비트레이트 크기의 약 절반/2배가 변경되고 ±1은 비트레이트가 약 10% 변경됩니다.

  

Ⅲ. CBR:(고정 비트 전송률)

일정한 비트 전송률 ,비트레이트는 기본적으로 일정한 시간 범위 내에서 일정하게 유지됩니다., 속도 우선 모델에 속합니다.

적용 가능한 시나리오: 이 방법은 일반적으로 권장되지 않습니다.출력 비트 전송률은 항상 안정적인 값이지만 품질이 불안정하고 네트워크 대역폭을 최대한 활용할 수 없습니다.이 모델은 비디오 콘텐츠의 복잡성을 고려하지 않기 때문입니다. 비디오 프레임의 내용은 균일하게 처리됩니다. 그러나 일부 인코딩 소프트웨어는 고정 품질 또는 고정 비트 전송률만 지원하며 경우에 따라 사용해야 합니다. 사용 시에는 허용 대역폭 범위 내에서 대역폭을 최대한 크게 설정하여 복잡한 움직임의 장면에서 영상의 화질이 매우 낮아지는 것을 방지하고, 설정이 부적절할 경우 흐릿하게 나타나 움직임이 있는 장면에서 바로 보이지 않게 됩니다.

특징:

  • 비트 전송률은 안정적이지만 품질이 불안정하고 유효 대역폭 사용률이 높지 않습니다. 특히 값이 부당하게 설정되면 복잡한 모션 장면에서 그림이 매우 흐려져 시청 경험에 큰 영향을 미칩니다.

  • 그러나 출력 비디오 비트 전송률은 기본적으로 안정적이므로 비디오 볼륨을 계산하는 데 편리합니다.

  

Ⅳ. VBR:(가변 비트 전송률)

가변 비트레이트 ,동적 비트 전송률, 인코더가 이미지 콘텐츠의 복잡도(실제로는 프레임 간 변동량)에 따라 출력 비트 전송률을 동적으로 조정함을 나타냅니다. 이미지가 복잡하면 비트 전송률이 높아지고 이미지가 단순하면 비트 전송률이 높아집니다. , 비트 전송률이 낮습니다. 출력 비트 전송률은 일정 범위 내에서 변동하며, 작은 흔들림의 경우 차단 효과가 향상되지만 장기간의 격렬한 흔들림에는 여전히 무력합니다. 이 인코딩 방식은 로컬 저장 및 로컬 인코딩에 적합하며, 상대적으로 높은 비디오 및 오디오 품질이 필요하지만 대역폭을 신경 쓰지 않는 장면에서 사용할 수 있는 인코딩 방식입니다.

품질 우선 모드와 2PASS 보조 인코딩 모드의 두 가지 제어 모드가 있습니다.

품질 우선 모드:

출력되는 동영상 파일의 크기와 관계없이 동영상 콘텐츠의 복잡도에 따라 비트레이트를 완전하게 할당하여 동영상 재생 품질을 최상으로 유지합니다.

보조 인코딩 방법 2PASS:

첫 번째 인코딩은 비디오 콘텐츠의 단순한 부분과 복잡한 부분을 모두 감지하면서 단순한 부분과 복잡한 부분의 비율을 결정합니다.

인코딩의 두 번째 패스는 비디오의 평균 비트 전송률을 변경하지 않고 유지하여 복잡한 장소에 더 많은 비트를 할당하고 단순한 장소에 더 적은 비트를 할당합니다. 이런 종류의 인코딩은 좋지만 속도가 따라가지 못합니다.

적용 가능한 시나리오: VBR은 대역폭 및 인코딩 속도에 대한 제한이 많지 않지만 품질에 대한 요구 사항이 높은 시나리오에 적합합니다. 특히 복잡한 스포츠 장면에서 비교적 고화질을 유지할 수 있고 출력 품질이 비교적 안정적이어서 지연에 민감하지 않은 주문형, 녹음 또는 저장 시스템에 적합합니다.

특징:

  • 코드 속도는 불안정하고 품질은 기본적으로 안정적이며 매우 높습니다.

  • 인코딩 속도는 일반적으로 느리고 주문형 다운로드 및 저장 시스템을 먼저 사용할 수 있으며 대기 시간이 짧은 생방송 시스템에는 적합하지 않습니다.

  • 이 모델은 출력 비디오 대역폭을 전혀 고려하지 않으며 품질을 위해 필요한 만큼의 비트 전송률을 차지하고 인코딩 속도를 고려하지 않습니다.

ABR:(평균 비트 전송률)

일정한 평균 대상 비트 전송률 ,간단한 장면은 낮은 비트를 할당하고 복잡한 장면은 충분한 비트를 할당합니다., VBR과 유사한 다양한 시나리오에서 제한된 수의 비트를 합리적으로 할당할 수 있습니다. 동시에 일정 시간 동안 평균 비트 전송률이 설정된 목표 비트 전송률에 가까워 출력 파일의 크기를 제어할 수 있으며 이는 CBR과 유사합니다. 대부분의 사람들이 선택하는 CBR과 VBR의 절충안이라고 볼 수 있습니다. 특히 화질과 비디오 대역폭이 모두 필요한 경우 이 모드를 먼저 선택하면 되는데 일반적으로 속도는 VBR보다 2~3배 정도 빠르지만 같은 용량의 비디오 파일의 화질은 CBR보다 훨씬 좋다.

적용 가능한 시나리오: ABR은 한 번만 인코딩되므로 속도가 빠르고 비디오 품질과 대역폭을 모두 고려하기 때문에 라이브 방송 및 저지연 시스템에서 주로 사용됩니다. 트랜스코딩 속도에 대한 요구 사항. 스테이션 B의 대부분의 비디오는 이 모드를 선택합니다.

특징:

  • 전체 비디오 품질은 비디오 비트 전송률과 속도를 동시에 고려하여 제어할 수 있으며 타협 솔루션이며 실제로 더 많이 사용됩니다.

  • 사용 프로세스는 일반적으로 호출자가 최소 코드 속도, 최대 코드 속도 및 평균 코드 속도를 설정하도록 요구하며 이러한 값은 가능한 한 합리적으로 설정되어야 합니다.

요약하다:

  여러 부호율 제어 방식이 위에서 소개되었는데, 이는 서로 다른 인코더에서 서로 다른 이름과 제목을 가지며 세부 사항이 다를 수 있습니다. 그러나 기본적으로 QP의 크기에 영향을 미치고 양자화 프로세스의 입도에 추가로 영향을 미침으로써 달성됩니다. 사용할 때 특정 인코더 구현을 추가로 참조해야 합니다.

  일반적으로 ABR이 선호되며 속도, 비트 전송률 및 품질 측면에서 만족스러운 균형을 이룰 수 있습니다. 다른 VBR, CBR, CRF는 각각의 시나리오가 있으며, 사용시 조건부로 사용해야 합니다.

  

  

프로그레시브 스캔 기술

  초기에 엔지니어들은 비디오를 변환하는 기술을 고안했습니다.감각 프레임 속도 2배 증가추가 대역폭을 소비 하지 않고 . 이 기술은 인터레이스 로 알려져 있으며 일반적으로 한 시점에 프레임을 전송합니다. 한 프레임은 화면의 절반을 채우고 다음 지점의 프레임은 화면의 나머지 절반을 채웁니다.

  오늘날의 화면 렌더링은 대부분 프로그레시브 스캔 기술을 사용합니다 . 각 프레임의 모든 선이 순차적으로 그려지는 동영상을 표시, 저장 및 전송하는 방식입니다.

여기에 이미지 설명 삽입

  

  

색심도(8비트, 10비트)

  色深(bit-depth), 우리가 일반적으로 말하는 8비트 및 10비트는 다음을 나타냅니다.채널당 정확도(단순히 색상의 밝기가 다르다고 이해될 수 있습니다.) 8비트는 각 채널을 8비트 정수로 표현하고 (0~255), 10비트는 (0~1023)10비트 정수로 표시하며, 16비트는 (0~65535). 위의 설명은 정확하지 않습니다. 동영상을 인코딩할 때 0~255모든 범위를 사용해야 하는 것은 아니지만 예약할 수 있으며 예를 들어 16~235. 이에 대해서는 자세히 설명하지 않겠습니다.

  디스플레이는 8비트이므로 0에서 255까지 각 RGB 채널의 모든 강도를 표시할 수 있습니다. 단, 영상의 색심도는 YUV의 색심도이므로 재생 시 YUV를 RGB로 계산을 통해 변환해야 합니다. 따라서 10비트의 높은 정밀도는 간접적이며 최종 색상을 더 섬세하게 만들기 위해 계산 과정에서 정밀도를 높입니다.

디스플레이의 한 픽셀은 세 가지 색상의 빛입니다.

如何理解8bit显示器,播放10bit是有必要的呢:
一个圆的半径是12.33m, 求它的面积,保留两位小数。
半径的精度给定两位小数,结果也要求两位小数,那么圆周率精度需要给多高呢?也只要两位小数么?
取pi=3.14, 面积算出来是477.37平方米
取pi=3.1416,面积算出来是477.61平方米
取pi精度足够高,面积算出来是477.61平方米。所以取pi=3.1416是足够的,但是3.14就不够了。

  즉, 최종 출력의 정밀도 요구 사항이 낮더라도 계산 및 계산 프로세스에 관련된 숫자가 낮은 정밀도를 유지할 수 있음을 의미하지는 않습니다. 최종 출력이 8비트 RGB라는 전제하에 10비트 YUV가 여전히 8비트 YUV보다 정확도 이점이 있는 이유가 여기에 있습니다. 실제로 8비트 YUV 변환 후 커버리지 정확도는 8비트 RGB의 약 26%이고 10비트 변환 후 정확도는 약 97%를 커버할 수 있습니다. 8비트 디스플레이가 섬세함의 97%를 재생하기를 원하십니까? 10비트를 보세요.

  8비트 정밀도는 주로 밝기가 낮은 영역에서 불충분하고 컬러 밴드를 형성하기 쉽습니다.

  

  

이미지 표현 방법: RGB 모델 vs YUV 모델

RGB

  빛의 삼원색은 빨강(Red), 초록(Green), 파랑(Blue)입니다. 최신 디스플레이 기술은 강도가 다른 세 가지 기본 색상을 결합하여 가시 광선의 모든 색상을 구현합니다. 이미지 저장에서 각 픽셀의 Red, Green, Blue 강도를 기록하여 이미지를 기록하는 방식을 이라고 합니다 RGB模型 (RGB Model). 일반적인 이미지 형식 중 PNG와 BMP는 RGB 모델을 기반으로 합니다.

  각 색상(평면)의 강도가 8비트(값 범위는 0~255)를 차지하면 색상 깊이는 24(8*3)비트, 즉 3Byte입니다. 우리는 또한 2 24 2^{24}를 사용할 수 있다고 추론할 수 있습니다.224 가지 색상.

YUV

  RGB 모델 외에도 YUV模型Luma-Chroma 모델이라고도 하는 널리 사용되는 모델이 있습니다. RGB의 3개 채널을 수학적 변환을 통해 밝기를 나타내는 채널(Y, Luma라고도 함)과 채도를 나타내는 2개 채널(UV, Chroma가 됨)로 변환합니다.

  YUV 모델에는 다양한 구현이 있습니다. 좀 더 유용한 것을 드리자면 YCbCr模型RGB를 휘도(Y), 청색 채도(Cb) 및 적색 채도(Cr)로 변환합니다.

전환 과정

1.RGB —— > YUV
  RGB 신호를 YUV 신호로 변환할 때 일반적으로 먼저 YUV444 형식으로 변환(크로마 신호 샘플링 형식 참조)한 다음 UV 신호의 해상도를 필요한 형식으로 줄입니다.

2.YUV —— > RGB
  YUV에서 RGB로 변환할 때 먼저 축소된 UV 신호의 해상도를 Y 신호와 동일한 해상도로 증가시킨 다음 RGB 신호로 변환해야 합니다. 비디오를 재생하거나 이미지를 표시할 때 YUV 신호를 RGB 신호로 변환해야 합니다. 이 단계를 렌더링(Rendering)이라고 합니다.

환산식

다음은 RGB와 YUV 간의 변환 공식입니다.
여기에 이미지 설명 삽입

일반적으로 이 단계는 행렬 형식으로 작성된 행렬을 인코딩하여 실현할 수 있습니다.

여기에 이미지 설명 삽입

위 그림의 두 행렬은 인코딩 행렬입니다.

YUV의 장점

  이미지 및 비디오 처리 및 저장에서 YUV 형식은 일반적으로 다음과 같은 이유로 더 많이 사용됩니다.

  1. 밝기에 대한 인간의 눈의 감도는 채도보다 훨씬 높기 때문에 인간의 눈에 보이는 효과적인 정보는 주로 밝기에서 나옵니다. YUV 모델은 대부분의 유효 정보를 Y 채널에 할당할 수 있으며 UV 채널은 기록된 정보보다 훨씬 적은 정보를 가지고 있습니다. RGB 모델의 보다 균일한 분포와 비교할 때 YUV 모델은 대부분의 유효 정보를 Y 채널에 집중시켜 중복 정보의 양을 줄일 뿐만 아니라 압축을 용이하게 합니다.
  2. 흑백 디스플레이 장치(흑백 TV)와의 하위 호환성은 유지됩니다.
  3. 이미지 편집에서는 YUV 모델에서 밝기와 채도를 조정하는 것이 더 편리합니다.

  거의 모든 비디오 형식과 널리 사용되는 JPEG 이미지 형식은 YCbCr 모델을 기반으로 합니다. 게임을 할 때 플레이어는 YCbCr 정보를 계산을 통해 RGB로 변환해야 하는데, 이 단계를 이라고 합니다 渲染(Rendering).

YUV가 장점이 더 많은데 왜 RGB를 유지할까요?

인간이 발명한 모든 색상 입력 및 출력 장치는 기본적으로 RGB 데이터만 지원하기 때문입니다. 장치에서 YUV 입출력을 허용하더라도 내부 데이터 변환을 통해 간접적으로 지원됩니다.

  

  

중복 제거 - 1

  비디오를 압축하지 않으면 작동하지 않는다는 것을 깨달았습니다. 720p 및 30fps의 1시간 분량 비디오 에는 278GB가 필요 합니다 . DEFLATE(PKZIP, Gzip 및 PNG에서 사용)와 같은 무손실 데이터 압축 알고리즘을 사용하는 것만으로는 비디오에 필요한 대역폭을 충분히 줄일 수 없으며 비디오를 압축하는 다른 방법을 찾아야 합니다.

제품을 사용하여 이 숫자 1280 x 720 x 24 x 30 x 3600(너비, 높이, 픽셀당 비트 수, fps 및 초)을 얻습니다.

  이를 위해 우리는 시각의 속성을 이용할 수 있습니다 . 우리는 색상보다 밝기에 훨씬 더 민감합니다. 시간의 반복 : 동영상에는 작은 변화만 있는 많은 이미지가 포함되어 있습니다. 이미지 내 반복 : 각 프레임에는 동일하거나 유사한 색상의 많은 영역이 포함되어 있습니다.

  

크로마 서브 샘플링 _

  YUV 모델의 적용에서 Y와 UV의 중요도는 동일하지 않습니다. 이미지 및 비디오의 실제 저장 및 전송에서 Y는 일반적으로 전체 해상도로 기록되고 UV는 절반 또는 1/4 해상도로 기록됩니다. 라는 뜻입니다 色度子采样(Chroma Sub-Sampling). 크로마 서브샘플링은 전송 대역폭을 효과적으로 줄이고 UV 평면의 압축률을 높일 수 있습니다.그러나 UV 평면의 유효 정보가 손실되는 것은 불가피합니다.

  우리의 일반적인 비디오, 가장 일반적인 것은 420 샘플입니다. YUV 형식을 사용하면 종종 색상 서브샘플링인 yuv420으로 작성됩니다.

여기에 이미지 설명 삽입

  이제 yuv444, yuv422, yuv420 yuv 및 기타 픽셀 형식의 본질은 각 그래픽 픽셀이 휘도 값을 포함하지만 일부 그래픽 픽셀은 색차 값을 공유한다는 것입니다.이 비례 관계는 4 x 2 직사각형 참조 블록을 통해 이루어집니다 . 결정하는. 이렇게 하면 yuv440 및 yuv420과 같은 형식을 쉽게 이해할 수 있습니다.

예 YCbCr 4:2:0 병합
이것은 YCbCr 4:2:0을 사용하여 병합된 이미지 조각입니다. 여기서는 픽셀당 12비트만 사용합니다.

계산됨, Y: 8비트, Cb: 2비트, Cr: 2비트

이미지 픽셀은 1/4 UV 쌍만 차지하므로 YUV는 각각 8비트를 차지하므로 총 8+2+2 = 12비트

  

중복 제거 - 2

  앞서 우리는 720p 및 30fps 해상도의 1시간 길이 비디오 파일을 저장하려면 278GB가 필요하다고 계산했습니다. 사용 YCbCr 4:2:0하면 잘라낼 수 一半的大小(139GB)있지만 여전히 이상적이지는 않습니다. 너비, 높이, 색상 깊이 및 fps를 곱하여 이 값을 얻습니다. 이전에는 24비트가 필요했지만 지금은 12비트만 필요합니다.

  

비디오 코딩의 I 프레임, P 프레임, B 프레임

영상 전송(저장) 원리

  비디오는 인간의 눈의 지속성의 원리를 사용하여 일련의 그림을 재생하여 인간의 눈이 움직임을 느끼게 합니다. 단순히 비디오 이미지를 전송하면 비디오 볼륨이 매우 커서 기존 네트워크 및 스토리지로는 수용할 수 없습니다. 비디오의 전송 및 저장을 용이하게 하기 위해 사람들은 비디오에 반복되는 정보가 많다는 것을 알게 됩니다. 반복되는 정보를 송신측에서 제거하고 수신측에서 복원하면 비디오 데이터의 파일 크기가 크게 증가합니다. 줄어들어서 있다.H.264 비디오 압축 표준

  비디오의 원본 이미지 데이터는 H.264 인코딩 형식을 사용하여 압축되고 오디오 샘플 데이터는 AAC 인코딩 형식을 사용하여 압축됩니다. 비디오 콘텐츠를 인코딩하고 압축한 후에는 실제로 저장 및 전송에 유리합니다. 그러나 재생을 시청하려면 해당 디코딩 프로세스도 필요합니다. 따라서 인코딩과 디코딩 사이에는 인코더와 디코더가 모두 이해할 수 있는 규칙에 동의하는 것이 분명히 필요합니다. 비디오 이미지 인코딩 및 디코딩에 관한 한 규칙은 간단합니다.

   인코더는 여러 개의 이미지를 인코딩하여 GOP(Group of Pictures) 세그먼트를 생성하고, 디코더는 GOP 세그먼트를 읽어 디코딩하여 픽처를 읽은 다음 렌더링하여 표시합니다. GOP(Group of Pictures)는 하나의 I 프레임과 여러 개의 B/P 프레임으로 구성된 연속적인 픽처 그룹으로 비디오 이미지 인코더 및 디코더 액세스의 기본 단위이며 해당 시퀀스는 비디오가 끝날 때까지 반복됩니다. I 프레임은 인트라 코딩된 프레임(키 프레임이라고도 함)이고, P 프레임은 순방향 예측 프레임(순방향 참조 프레임)이며, B 프레임은 양방향 보간 프레임(양방향 참조 프레임)입니다. 간단히 말해서 I 프레임은 완전한 사진인 반면 P 및 B 프레임은 I 프레임과 관련된 변화를 기록합니다. P 및 B 프레임은 I 프레임 없이는 디코딩할 수 없습니다.

  H.264 압축 표준에서는 I 프레임, P 프레임, B 프레임을 사용하여 전송되는 비디오 이미지를 표현한다.

여기에 이미지 설명 삽입

1, I 돛

  인트라 프레임 코딩 프레임이라고도 하는 I 프레임은 모든 정보가 포함된 독립 프레임으로, 다른 이미지를 참조하지 않고 독립적으로 디코딩할 수 있으며 간단히 정지 화면으로 이해할 수 있습니다. 비디오 시퀀스의 첫 번째 프레임은 키 프레임이기 때문에 항상 I-프레임입니다.

2. P 프레임

  P 프레임은 인터 프레임 예측 코딩 프레임이라고도 하며 코딩을 위해 이전 I 프레임을 참조해야 합니다. 현재 프레임과 이전 프레임의 차이를 나타냅니다(이전 프레임은 I 프레임 또는 P 프레임일 수 있음). 디코딩할 때 이 프레임에서 정의된 차이를 이전에 캐시된 픽처와 중첩하여 최종 픽처를 생성해야 합니다. I 프레임과 비교할 때 P 프레임은 일반적으로 더 적은 데이터 비트를 차지하지만 P 프레임은 이전 P 및 I 참조 프레임에 대한 복잡한 종속성으로 인해 전송 오류에 매우 민감하다는 단점이 있습니다.

여기에 이미지 설명 삽입

3. B 프레임

  B 프레임은 양방향 예측 코딩 프레임이라고도 합니다. 즉, B 프레임은 현재 프레임과 이전 및 후속 프레임 간의 차이를 기록합니다. 즉, B 프레임을 복호화하기 위해서는 이전에 캐싱된 픽처뿐만 아니라 복호화된 픽처도 얻어야 하며, 현재 프레임 데이터에 앞뒤 픽처를 중첩하여 최종 픽처를 얻을 수 있다. B 프레임의 압축률은 높지만 높은 디코딩 성능이 요구됩니다.

여기에 이미지 설명 삽입

요약하다:

  I 프레임은 이 프레임만 고려하면 되고, P 프레임은 이전 프레임과의 차이를 기록하고, B 프레임은 이전 프레임과 다음 프레임의 차이를 기록하므로 더 많은 공간을 절약할 수 있고, 비디오 파일은 작지만 상대적으로 디코딩과 관련하여 더 번거로운 일입니다. 디코딩할 때 이전에 캐시된 사진을 사용해야 할 뿐만 아니라 다음 I 또는 P 사진을 알아야 하기 때문에 B 프레임 디코딩을 지원하지 않는 플레이어의 경우 막히기 쉽습니다.

여기에 이미지 설명 삽입

  비디오 감시 시스템에서 미리 보는 비디오 이미지는 실시간이며 이미지의 부드러움에 대한 요구 사항이 높습니다. 비디오 전송에 I 프레임과 P 프레임을 사용하면 네트워크의 적응성을 향상시킬 수 있고 디코딩 비용을 줄일 수 있으므로 현재 비디오 디코딩은 I 프레임과 P 프레임만 전송에 사용합니다. Hikvision 카메라 인코딩, I 프레임 간격은 49 P 프레임을 포함하여 50입니다.

추천

출처blog.csdn.net/qq_40342400/article/details/129621369