KR102411644B1 - 안전 및 크로스 디바이스에 일관된 비디오 압축 - Google Patents

안전 및 크로스 디바이스에 일관된 비디오 압축 Download PDF

Info

Publication number
KR102411644B1
KR102411644B1 KR1020207025487A KR20207025487A KR102411644B1 KR 102411644 B1 KR102411644 B1 KR 102411644B1 KR 1020207025487 A KR1020207025487 A KR 1020207025487A KR 20207025487 A KR20207025487 A KR 20207025487A KR 102411644 B1 KR102411644 B1 KR 102411644B1
Authority
KR
South Korea
Prior art keywords
video
bit rate
output
actual
width
Prior art date
Application number
KR1020207025487A
Other languages
English (en)
Other versions
KR20200116499A (ko
Inventor
다니엘 팡
크지슈토프 쿠레브스키
Original Assignee
구글 엘엘씨
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 구글 엘엘씨 filed Critical 구글 엘엘씨
Publication of KR20200116499A publication Critical patent/KR20200116499A/ko
Application granted granted Critical
Publication of KR102411644B1 publication Critical patent/KR102411644B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/146Data rate or code amount at the encoder output
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/115Selection of the code volume for a coding unit prior to coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/146Data rate or code amount at the encoder output
    • H04N19/15Data rate or code amount at the encoder output by monitoring actual compressed data size at the memory before deciding storage at the transmission buffer
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/164Feedback from the receiver or from the transmission channel
    • H04N19/166Feedback from the receiver or from the transmission channel concerning the amount of transmission errors, e.g. bit error rate [BER]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/172Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a picture, frame or field
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/184Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being bits, e.g. of the compressed video stream

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)

Abstract

방법은 상이한 디바이스에서 일관된 압축 비디오를 생성한다. 방법은 출력 비트 레이트를 식별하는 단계를 포함한다. 방법은 입력 비디오의 파라미터들을 파싱하는 단계를 더 포함한다. 방법은 입력 비디오의 파라미터들에 기초하여 고정 지속 기간을 갖는 블랭크 비디오를 생성하는 단계를 더 포함한다. 방법은 디코더에 대한 입력으로 블랭크 비디오를 제공하는 것에 기초하여 대표 비디오를 생성하는 단계를 더 포함한다. 방법은 대표 비디오 및 출력 비트 레이트에 기초하여 요청 비트 레이트를 결정하는 단계를 더 포함한다. 방법은 실제 비디오를 생성하기 위해 요청 비트 레이트를 사용하여 입력 비디오를 압축하는 단계를 더 포함한다.

Description

안전 및 크로스 디바이스에 일관된 비디오 압축
본 출원은 2018년 11월 26일에 안전 및 크로스 디바이스에 일관된 비디오 압축이라는 제목으로 출원된 미국 특허 출원 번호 62/771,552에 대한 우선권을 주장하며, 그 내용은 전체가 본 명세서에 참조로 포함된다.
본 명세서는 상이한 디바이스 플랫폼에 걸쳐 일관된 압축 비디오를 생성하는 비디오 애플리케이션에 관한 것이다.
전 세계 사람들은 매일 수백만 개의 비디오를 캡처한다. n분의 1초마다 비디오를 인코딩하면 비디오 파일이 커진다. 예를 들어, 초당 16메가 비트(Mbits)로 인코딩된 1분 비디오는 120MB이다. 비디오는 종종 대규모 파일을 저장하거나 전송하는 것이 비현실적이거나 비용이 많이 드는 시장 또는 조건에서 캡처된다. 예를 들어, 이는 디바이스들이 2G 셀룰러 연결을 사용하거나 디바이스 저장 공간이 매우 제한적인 곳이다. 이 문제에 대한 가능한 해결책은 더 작은 압축된 출력 비트 레이트에 대한 비디오 압축이다.
그런데, 소프트웨어 디코더 및 인코더가 사용될 때 디바이스 비디오 압축은 느리거나 오류를 포함하거나 일관되지 않은 비트 레이트를 가질 수 있기 때문에 비디오 압축은 문제가 있다. 오류는 예를 들어 비디오 내의 녹색 라인일 수 있다. 비트 레이트는 동일한 입력에 대해 다른 비트 레이트를 생성하는 다른 회사에서 제조한 디바이스의 경우 다를 수 있다. 가변성 외에도, 비디오의 크기가 품질과 상관되기 때문에 더 작은 크기의 압축 비디오를 생성하는 것은 불리하다.
본 명세서에 제공된 배경 설명은 일반적으로 본 발명 내용의 맥락을 제시하기 위한 것이다. 현재 명명된 발명자의 동작들은 이 배경 섹션에 설명된 범위 및 출원 당시에 종래 기술로 인정되지 않을 수 있는 설명의 측면에 대해, 본 발명의 선행 기술로서 명시적 또는 묵시적으로 인정되지 않는다.
방법은 상이한 디바이스에서 일관된 압축 비디오를 생성한다. 방법은 출력 비트 레이트를 식별하는 단계를 포함한다. 방법은 입력 비디오의 파라미터들을 파싱하는 단계를 더 포함한다. 방법은 입력 비디오의 파라미터들에 기초하여 고정 지속 기간을 갖는 블랭크 비디오를 생성하는 단계를 더 포함한다. 방법은 디코더에 대한 입력으로 블랭크 비디오를 제공하는 것에 기초하여 대표 비디오를 생성하는 단계를 더 포함한다. 방법은 대표 비디오 및 출력 비트 레이트에 기초하여 요청 비트 레이트를 결정하는 단계를 더 포함한다. 방법은 실제 비디오를 생성하기 위해 요청 비트 레이트를 사용하여 입력 비디오를 압축하는 단계를 더 포함한다.
일부 실시예에서, 대표 비디오를 생성하는 단계는 대표 비디오의 상부에 기하학적 텍스처를 생성하는 단계를 포함하고, 요청 비트 레이트를 결정하는 단계는 대표 비디오의 대표 비트 레이트를 출력 비트 레이트와 비교하는 단계를 포함하고, 그리고 입력 비디오를 압축하는 단계는 실제 폭, 실제 높이 및 실제 비트 레이트를 갖는 실제 비디오를 생성한다. 일부 실시예에서, 출력 비트 레이트를 식별하는 단계는 출력 폭 및 출력 높이를 식별하는 단계를 더 포함한다, 상기 동작들은 (a) 실제 폭 및 실제 높이가 출력 폭 및 출력 높이의 임계 폭 값 및 임계 높이 값 내에 있는지; 그리고 (b) 실제 비디오의 프레임 수가 입력 비디오의 프레임 수와 동일한지를 확인함으로써 실제 비디오를 검증하는 단계를 더 포함할 수 있다. 상기 동작들은 실제 비디오의 실제 비트 레이트가 출력 비트 레이트의 임계 비트 레이트 값 이내인지 확인함으로써 함으로써 실제 비디오를 검증하는 단계; 실제 비트 레이트가 임계 비트 레이트 값 내에 있지 않다는 결정에 응답하여, 파라미터를 수정하고 수정된 파라미터에 기초하여 입력 비디오를 출력 폭 및 출력 높이로 압축하도록 요청하는 단계를 더 포함할 수 있다. 일부 실시예에서, 출력 비트 레이트를 식별하는 단계는 출력 폭 및 출력 높이를 식별하는 단계를 더 포함하고, 입력 비디오는 출력 폭 및 출력 높이를 사용하여 추가로 압축된다. 일부 실시예에서, 출력 비트 레이트, 출력 폭 및 출력 높이는 사용자에 의해 지정되거나 디폴트이다. 일부 실시예에서, 입력 비디오를 압축하는 단계는 하나 이상의 오디오 스트림을 실제 비디오에 추가하는 단계를 포함하고, 상기 방법은 실제 비디오가 하나 이상의 오디오 스트림을 포함하는지 확인하기 위해 입력 비디오를 실제 비디오와 비교함으로써 실제 비디오를 검증하는 단계와, 실제 비디오가 하나 이상의 오디오 스트림을 포함하지 못한다는 것에 응답하여 실제 비디오가 실패한 것으로 결정하는 단계를 더 포함한다. 동작들은 출력 폭에 출력 높이를 곱한 값이 공통 해상도와 동일한지 확인함으로써 실제 비디오를 검증하는 단계와, 출력 폭에 출력 높이를 곱한 값이 공통 해상도와 동일하지 않다는 것에 응답하여, 더 높은 비트 레이트를 사용하여 입력 비디오를 압축하는 단계를 더 포함한다. 동작들은 압축될 입력 비디오가 실제 비디오를 포함하는 입력 비디오로부터의 병합 메타 데이터를 포함하도록 요청하는 단계를 더 포함할 수 있다. 동작들은 채널(c)를 포함하는 크기(x,y)의 주어진 두 이미지(S 및 T)에 의해 입력 비디오 이미지 프레임과 실제 비디오 이미지 프레임을 비교하여 실제 비디오 검증하는 단계를 더 포함한다. 여기서, 각 채널 값은 0.0과 1.0사이의 부동 소수점 숫자로 표시되고, 임계값 1 또는 0 이상인 경우 차이(x, y)는 모든 채널의 합(S(x, y, 채널)-T(x, y, 채널))2과 동일하고, 임계값 1이상이면 필터링된 차이(filtered_ference(x, y) = 차이(x, y)이고 그렇지 않으면 0, 열(x) = filter_difference(x, y)의 모든 y 값에 대한 합/이미지 높이이고, 행(y) = filter_difference(x)의 모든 x 값에 대한 합/ 이미지 폭이며, 오류 = 위에서 계산된 모든 열(x) 및 행(y)의 최대값이다.
일부 실시예에서, 하나 이상의 컴퓨터에 의해 실행될 때 하나 이상의 컴퓨터로 하여금 동작들을 수행함으로써 상이한 디바이스에 걸쳐 일관된 압축 비디오를 생성하게 하는 명령들이 저장된 비-일시적 컴퓨터 판독 가능 매체로서, 상기 동작들은 출력 비트 레이트를 식별하는 단계; 입력 비디오의 파라미터들을 파싱하는 단계와; 입력 비디오의 파라미터들에 기초하여 고정 지속 기간을 갖는 블랭크 비디오를 생성하는 단계와; 디코더에 대한 입력으로서 블랭크 비디오를 제공하는 것에 기초하여 대표 비디오를 생성하는 단계와; 대표 비디오 및 출력 비트 레이트에 기초하여 요청 비트 레이트를 결정하는 단계와; 그리고 실제 비디오를 생성하기 위해 요청 비트 레이트를 사용하여 입력 비디오를 압축하는 단계를 포함한다.
일부 실시예에서, 대표 비디오를 생성하는 단계는 대표 비디오의 상부에 기하학적 텍스처를 생성하는 단계를 포함하고, 요청 비트 레이트를 결정하는 단계는 대표 비디오의 대표 비트 레이트를 출력 비트 레이트와 비교하는 단계를 포함하고, 그리고 입력 비디오를 압축하는 단계는 실제 폭, 실제 높이 및 실제 비트 레이트를 갖는 실제 비디오를 생성한다. 일부 실시예에서, 출력 비트 레이트를 식별하는 단계는 출력 폭 및 출력 높이를 식별하는 단계를 더 포함한다. 동작들은 (a) 실제 폭 및 실제 높이가 출력 폭 및 출력 높이의 임계 폭 값 및 임계 높이 값 내에 있는지, 그리고 (b) 실제 비디오의 프레임 수가 입력 비디오의 프레임 수와 동일한지를 확인함으로써 실제 비디오를 검증하는 단계를 더 포함한다. 동작들은 실제 비디오의 실제 비트 레이트가 출력 비트 레이트의 임계 비트 레이트 값 이내인지 확인함으로써 실제 비디오를 검증하는 단계와, 그리고 실제 비트 레이트가 임계 비트 레이트 값 내에 있지 않다는 결정에 응답하여, 파라미터를 수정하고 수정된 파라미터에 기초하여 입력 비디오를 출력 폭 및 출력 높이로 압축하도록 요청하는 단계를 더 포한다. 일부 실시예에서, 출력 비트 레이트를 식별하는 단계는 출력 폭 및 출력 높이를 식별하는 단계를 더 포함하고, 입력 비디오는 출력 폭와 출력 높이를 사용하여 추가로 압축된다.
일부 실시예에서, 시스템은 상이한 디바이스에 걸쳐 일관된 압축 비디오를 생성하고, 시스템은 하나 이상의 프로세서 및 하나 이상의 프로세서에 의해 실행될 때 하나 이상의 프로세서로 하여금 동작들을 수행하게 하는 명령들을 저장하는 메모리를 포함하고, 상기 동작들은 출력 비트 레이트를 식별하는 단계와; 입력 비디오의 파라미터들을 파싱하는 단계와; 입력 비디오의 파라미터들에 기초하여 고정 지속 기간을 갖는 블랭크 비디오를 생성하는 단계와; 디코더에 대한 입력으로서 블랭크 비디오를 제공하는 것에 기초하여 대표 비디오를 생성하는 단계와; 대표 비디오 및 출력 비트 레이트에 기초하여 요청 비트 레이트를 결정하는 단계와; 그리고 실제 비디오를 생성하기 위해 요청 비트 레이트를 사용하여 입력 비디오를 압축하는 단계를 포함한다.
일부 실시예에서, 대표 비디오를 생성하는 단계는 대표 비디오의 상부에 기하학적 텍스처를 생성하는 단계를 포함하고, 요청 비트 레이트를 결정하는 단계는 대표 비디오의 대표 비트 레이트를 출력 비트 레이트와 비교하는 단계를 포함하고, 그리고 입력 비디오를 압축하는 단계는 실제 폭, 실제 높이 및 실제 비트 레이트를 갖는 실제 비디오를 생성한다. 일부 실시예에서, 출력 비트 레이트를 식별하는 단계는 출력 폭 및 출력 높이를 식별하는 단계를 더 포함한다. 동작들은 (a) 실제 폭 및 실제 높이가 출력 폭 및 출력 높이의 임계 폭 값 및 임계 높이 값 내에 있는지, 그리고 (b) 실제 비디오의 프레임 수가 입력 비디오의 프레임 수와 동일한지를 확인함으로써 실제 비디오를 검증하는 단계를 더 포함한다. 동작들은 실제 비디오의 실제 비트 레이트가 출력 비트 레이트의 임계 비트 레이트 값 이내인지 확인함으로써 실제 비디오를 검증하는 단계와; 그리고 실제 비트 레이트가 임계 비트 레이트 값 내에 있지 않다는 결정에 응답하여, 파라미터를 수정하고 수정된 파라미터에 기초하여 입력 비디오를 출력 폭 및 출력 높이로 압축하도록 요청하는 단계를 더 포함한다. 일부 실시예에서, 출력 비트 레이트를 식별하는 단계는 출력 폭 및 출력 높이를 식별하는 단계를 더 포함하고, 입력 비디오는 출력 폭 및 출력 높이를 사용하여 추가로 압축된다.
이하에 설명되는 다양한 실시예는 비디오를 수신하는 디바이스와 무관하게 유사한 해상도 및 유사한 비트 레이트를 갖는 압축 비디오를 생성하는 방법을 유리하게 설명한다.
본 발명 내용은 유사한 요소를 지칭하기 위해 유사한 참조 번호가 사용되는 첨부 도면의 도면에서 제한이 아닌 예로서 예시된다.
도 1은 일부 실시예에 따른 압축 비디오를 생성하는 예시적인 시스템의 블록도를 도시한다.
도 2는 일부 실시예에 따른 압축 비디오를 생성하는 예시적인 디바이스의 블록도를 도시한다.
도 3은 일부 실시예에 따른 압축 비디오를 생성하기 위한 다른 예시적인 방법의 흐름도를 도시한다.
도 4는 일부 실시예에 따른 압축 비디오를 생성하기 위한 다른 예시적인 방법의 흐름도를 도시한다.
비디오(영상) 애플리케이션은 실제 비디오를 생성하기 위해 입력 비디오를 압축하기 위한 요청을 수신할 수 있다. 요청에는 실제 비디오의 실제 비트 레이트를 얻는데 사용되는 요청 비트 레이트가 포함된다. 요청 비트 레이트는 실제 비디오의 실제 비트 레이트와 다를 수 있지만 실제 비디오가 실제 비트 레이트를 가지게 되므로 인코더에 제공된다. 아래 설명된 프로세스의 결과로, 비디오 애플리케이션은 비디오를 수신하는 디바이스와 독립적으로 유사한 해상도 및 유사한 비트 레이트를 갖는 압축(된) 비디오를 생성한다.
일부 실시예에서, 비디오 애플리케이션은 입력 비디오의 파라미터들, 입력 폭, 입력 높이 및 입력 포맷을 포함하는 파라미터들을 파싱(분석)한다. 비디오 애플리케이션은 입력 비디오의 파라미터들에 기초하여 고정 지속 기간으로 블랭크 비디오를 생성한다. 비디오 애플리케이션은 디코더에 대한 입력으로 블랭크 비디오를 제공하는 것에 기초하여 대표 비디오를 생성한다. 비디오 애플리케이션은 지정된 출력 폭과 출력 높이로 입력 비디오를 압축한다.
예시적인 시스템
도 1은 압축 비디오를 생성하는 예시적인 시스템(100)의 블록도를 도시한다. 도시된 시스템(100)은 비디오 서버(101), 사용자 디바이스(115a), 사용자 디바이스(115n), 제2 서버(120) 및 네트워크(105)를 포함한다. 사용자(125a)는 사용자 디바이스(115a)와 연관될 수 있고, 사용자(125n)는 사용자 디바이스(115n)와 연관될 수 있다. 일부 실시예에서, 시스템(100)은 도 1에 도시되지 않은 다른 서버 또는 디바이스를 포함할 수 있다. 도 1 및 나머지 도면에서, 참조 번호 뒤의 문자, 예를 들어 "103a"는 특정 참조 번호를 갖는 요소에 대한 참조를 나타낸다. 뒤에 문자가 없는 텍스트의 참조 번호(예를 들어, "103")는 해당 참조 번호를 포함하는 요소의 실시예에 대한 일반적인 참조를 나타낸다. 도 1에는 하나의 비디오 서버(101), 하나의 사용자 디바이스(115a), 하나의 사용자 디바이스(115n), 하나의 제2 서버(120) 및 하나의 네트워크(105)가 도시되어 있지만, 당업자는 도 1이 하나 이상의 비디오 서버(101), 하나 이상의 사용자 디바이스(115a), 하나 이상의 사용자 디바이스(115n), 하나 이상의 제2 서버(120) 및 하나 이상의 네트워크(105)를 포함할 수 있음을 인식할 것이다.
비디오 서버(101)는 프로세서, 메모리 및 네트워크 통신 기능을 포함할 수 있다. 일부 실시예에서, 비디오 서버(101)는 하드웨어 서버이다. 비디오 서버(101)는 신호 라인(102)을 통해 네트워크(105)에 통신적으로 연결된다. 신호 라인(102)은 이더넷, 동축 케이블, 광섬유 케이블 등과 같은 유선 연결이거나 Wi-Fi®, Bluetooth® 또는 기타 무선 기술과 같은 무선 연결일 수 있다. 일부 실시예에서, 비디오 서버(101)는 네트워크(105)를 통해 사용자 디바이스(115a), 사용자 디바이스(115n) 및 제2 서버(120) 중 하나 이상과 데이터를 송수신한다. 비디오 서버(101)는 비디오 애플리케이션(103a)과 데이터베이스(199)를 포함할 수 있다.
비디오 애플리케이션(103a)은 압축 비디오를 사용자 디바이스(115a, 115n)에 제공하도록 동작할 수 있는 코드 및 루틴일 수 있다. 일부 실시예에서, 비디오 애플리케이션(103a)은 예를 들어 비디오 서버(101)의 데이터베이스(199)로부터 또는 제2 서버(120)로부터 입력 비디오를 수신한다. 비디오 애플리케이션(103a)은 입력 비디오를 교정하고, 입력 비디오를 압축 비디오로 압축하고, 해당 압축 비디오가 예상 속성을 갖는지 확인할 수 있다. 예를 들어, 비디오 애플리케이션(103a)은 압축 비디오가 디폴트값으로 제공되거나 사용자에 의해 제공된 해상도 및 비트 레이트에 부합하는 비트 레이트 및 해상도를 가지고 있음을 확인할 수 있다. 입력 비디오를 압축하는 것은 입력 비디오로부터 메타 데이터를 복사하여 압축 비디오에 추가하는 것을 포함할 수 있다.
일부 실시예에서, 비디오 애플리케이션(103a)은 FPGA(field-programmable gate array) 또는 ASIC(application-specific integrated circuit)을 포함하는 하드웨어를 사용하여 구현될 수 있다. 일부 실시예에서, 비디오 애플리케이션(103a)은 하드웨어와 소프트웨어의 조합을 사용하여 구현될 수 있다.
데이터베이스(199)는 입력 영상, 블랭크 영상, 대표 영상, 실제 영상을 저장할 수 있다. 데이터베이스(199)는 또한 사용자(125a, 125n), 사용자(125a) 및/또는 사용자(125n)에 대한 사용자 선호도 등과 관련된 소셜 네트워크 데이터를 저장할 수 있다.
사용자 디바이스(115a)는 메모리 및 하드웨어 프로세서를 포함하는 컴퓨팅 디바이스일 수 있다. 예를 들어, 사용자 디바이스(115a)는 데스크탑 컴퓨터, 모바일 디바이스, 태블릿 컴퓨터, 모바일 전화, 웨어러블 디바이스, 헤드 마운트 디스플레이, 모바일 이메일 디바이스, 휴대용 게임 플레이어, 휴대용 음악 플레이어, 리더 디바이스 또는 네트워크(105)에 액세스할 수 있는 다른 전자 디바이스를 포함할 수 있다.
도시된 구현에서, 사용자 디바이스(115a)는 신호 라인(108)을 통해 네트워크(105)에 연결되고 사용자 디바이스(115n)는 신호 라인(110)을 통해 네트워크(105)에 연결된다. 신호 라인(108 및 110)은 이더넷, 동축 케이블, 광섬유 케이블 등과 같은 유선 연결이거나 Wi-Fi®, Bluetooth® 또는 기타 무선 기술과 같은 무선 연결일 수 있다. 사용자 디바이스(115a)는 사용자(125a)에 의해 액세스되고 사용자 디바이스(115n)는 사용자(125n)에 의해 액세스된다.
일부 실시예에서, 사용자 디바이스(115a)는 사용자(125a)가 착용한 웨어러블 디바이스에 포함된다. 예를 들어, 사용자 디바이스(115a)는 클립(예를 들어, 손목 밴드)의 일부, 보석의 일부 또는 안경의 일부로서 포함된다. 다른 예에서, 사용자 디바이스(115a)는 스마트 워치일 수 있다. 사용자(125a)는 사용자(125a)가 착용 한 디바이스의 디스플레이에서 비디오 애플리케이션(103)과 관련된 데이터를 볼 수 있다. 예를 들어, 비디오 애플리케이션(103a)은 스마트 워치 또는 스마트 손목 밴드의 디스플레이에 실제 비디오를 디스플레이할 수 있다.
일부 실시예에서, 비디오 애플리케이션(103b)은 사용자 디바이스(115a)에 저장될 수 있다. 비디오 애플리케이션(103b)은 비디오 서버(101)로부터 실제 비디오를 수신하고 사용자 디바이스(115a)의 디스플레이에 실제 비디오를 디스플레이하도록 동작할 수 있다.
사용자 디바이스(115n)는 메모리 및 하드웨어 프로세서를 포함하는 컴퓨팅 디바이스일 수 있다. 예를 들어, 사용자 디바이스(115n)는 데스크탑 컴퓨터, 모바일 디바이스, 태블릿 컴퓨터, 모바일 전화, 웨어러블 디바이스, 헤드 마운트 디스플레이, 모바일 이메일 디바이스, 휴대용 게임 플레이어, 휴대용 음악 플레이어, 리더 디바이스 또는 네트워크(105)에 액세스할 수 있는 다른 전자 디바이스를 포함할 수 있다.
일부 실시예에서, 사용자 디바이스(115n)는 비디오 애플리케이션(103c)을 포함한다. 비디오 애플리케이션(103c)은 실제 비디오를 수신하고 사용자 디바이스(115n)의 디스플레이에 실제 비디오를 디스플레이하도록 동작할 수 있다. 사용자 디바이스(115n)상에 디스플레이되는 실제 비디오는 사용자 디바이스(115a)에 표시되는 실제 영상과 동일한 해상도 및 크기를 가질 수 있다.
제2 서버(120)는 프로세서, 메모리 및 네트워크 통신 기능을 포함할 수 있다. 제2 서버(120)는 신호 라인(109)을 통해 네트워크(105)에 액세스할 수 있다. 제2 서버(120)는 비디오 서버(101), 사용자 디바이스(115a) 및/또는 사용자 디바이스(115n)에 서비스를 제공할 수 있다. 예를 들어, 제2 서버(120)는 입력 비디오를 생성하여 압축을 위해 비디오 서버(101)로 제공할 수 있다.
도시된 구현에서, 시스템(100)의 엔티티들은 네트워크(105)를 통해 통신적으로 결합된다. 네트워크(105)는 종래 유형의, 유선 또는 무선일 수 있고, 별 구성, 토큰링 구성 또는 다른 구성을 포함하는 수 많은 다른 구성을 가질 수 있다. 또한, 네트워크(105)는 근거리 통신망(LAN), 광역 통신망(WAN)(예를 들어, 인터넷), 및/또는 다수의 디바이스가 통신할 수 있는 다른 상호 연결된 데이터 경로를 포함할 수 있다. 일부 실시예에서, 네트워크(105)는 피어-투-피어 네트워크일 수 있다. 네트워크(105)는 또한 다양한 다른 통신 프로토콜로 데이터를 전송하기 위해 통신 네트워크의 일부에 연결되거나 그 일부를 포함할 수 있다. 일부 실시예에서, 네트워크(105)는 Bluetooth® 통신 네트워크, WiFi®, IEEE 902.11에 의해 규정된 무선 근거리 통신망(WAN) 컴퓨터 통신, 또는 단문 서비스(SMS), 멀티미디어 메시징 서비스(MMS), 하이퍼텍스트 전송 프로토콜(HTTP), 다이렉트 데이터 연결, 이메일 등을 통하는 것을 포함하여 데이터를 송수신하기 위한 셀룰러 통신 네트워크를 포함한다. 도 1은 사용자 디바이스(115)와 비디오 서버(101)에 연결된 하나의 네트워크(105)를 도시하지만, 실제로는 하나 이상의 네트워크(105)가 이들 엔티티에 연결될 수 있다.
예시적인 디바이스
도 2는 일부 실시예에 따라 압축 비디오를 생성하는 예시적인 비디오 서버(101)의 블록도를 도시한다. 도 2는 비디오 서버(101)인 것으로 도시되었지만, 일부 또는 모든 기능은 전체 또는 부분적으로 사용자 디바이스(115a, 115n)에 의해 수행될 수 있다. 비디오 서버(101)는 프로세서(235), 메모리(237), 통신 유닛(239) 및 데이터베이스(199)를 포함할 수 있다. 비디오 서버(101) 또는 사용자 디바이스(115)에 의해 단계들이 모두 수행되는지 여부에 따라 추가 구성 요소가 존재하거나 이전 구성 요소들 중 일부가 생략될 수 있다.
비디오 서버(101)는 비디오 애플리케이션(103a)을 메모리(237)에 저장할 수 있다. 비디오 서버(101)가 웨어러블 디바이스인 실시예에서, 비디오 서버(101)는 데이터베이스(199)를 포함하지 않을 수 있다. 일부 실시예에서, 비디오 서버(101)는 배터리 등과 같이 여기에 나열되지 않은 다른 구성 요소를 포함할 수 있다. 비디오 서버(101)의 구성 요소들은 버스(220)에 의해 통신 가능하게 결합될 수 있다.
프로세서(235)는 연산을 수행하고 디스플레이 디바이스에 명령을 제공하기 위한 산술 논리 유닛, 마이크로 프로세서, 범용 컨트롤러, 또는 일부 다른 프로세서 어레이를 포함한다. 프로세서(235)는 데이터를 처리하고 복합 명령 세트 컴퓨터(CISC) 아키텍처, 축소 명령 세트 컴퓨터(RISC) 아키텍처, 또는 명령 세트 조합을 구현하는 아키텍처를 포함하는 다양한 컴퓨팅 아키텍처를 포함할 수 있다. 도 2는 단일 프로세서(235)를 포함하지만, 다중 프로세서(235)가 포함될 수 있다. 다른 프로세서, 운영 체제, 센서, 디스플레이 및 물리적 구성은 사용자 디바이스(115a)의 일부일 수 있다. 프로세서(235)는 신호 라인(222)을 통해 다른 구성 요소와 통신하기 위해 버스(220)에 결합된다.
메모리(237)는 프로세서(235) 및/또는 데이터에 의해 실행될 수 있는 명령들을 저장한다. 명령들은 본 명세서에 설명된 기술을 수행하기 위한 코드를 포함할 수 있다. 메모리(237)는 동적 랜덤 액세스 메모리(DRAM) 디바이스, 정적 RAM, 또는 일부 다른 메모리 디바이스일 수 있다. 일부 실시예에서, 메모리(237)는 또한 정적 랜덤 액세스 메모리(SRAM) 디바이스 또는 플래시 메모리와 같은 비휘발성 메모리, 또는 하드 디스크 드라이브, 컴팩트 디스크 판독 전용 메모리(CD ROM) 디바이스, DVD ROM 디바이스, DVD RAM 디바이스, DVD RW 디바이스, 플래시 메모리 디바이스 또는 보다 영구적으로 정보를 저장하기 위한 일부 다른 대용량 저장 디바이스를 포함한다. 메모리(237)는 비디오 애플리케이션(103)을 실행하도록 동작할 수 있는 코드 및 루틴을 포함하며, 이는 아래에서 더 상세히 설명된다. 메모리(237)는 신호 라인(224)을 통해 다른 구성 요소와 통신하기 위해 버스(220)에 결합된다.
통신 유닛(239)은 비디오 애플리케이션(103)이 저장될 수 있는 위치에 따라 사용자 디바이스(115a) 및 비디오 서버(101) 중 적어도 하나와 데이터를 송수신한다. 일부 실시예에서, 통신 유닛(239)은 네트워크(105) 또는 다른 통신 채널에 대한 직접적인 물리적 연결을 위한 포트를 포함한다. 예를 들어, 통신 유닛(239)은 비디오 애플리케이션이 저장될 수 있는 위치에 따라 사용자 디바이스(115a) 또는 비디오 서버(101)와의 유선 통신을 위한 범용 직렬 버스(USB), 보안 디지털(SD), 카테고리 5 케이블(CAT-5) 또는 유사 포트를 포함한다. 일부 실시예에서, 통신 유닛(239)은 IEEE 802.11, IEEE 802.16, Bluetooth® 또는 다른 적절한 무선 통신 방법을 포함하는 하나 이상의 무선 통신 방법을 사용하여 사용자 디바이스(115a), 비디오 서버(101) 또는 다른 통신 채널과 데이터를 교환하기 위한 무선 송수신기를 포함한다. 통신 유닛(239)은 신호 라인(226)을 통해 다른 구성 요소와 통신하기 위해 버스(220)에 결합된다.
일부 구현예에서, 통신 유닛(239)은 SMS(Short Messaging Service), MMS (Multimedia Messaging Service), HTTP(Hypertext Transfer Protocol), 다이렉트 데이터 연결, 전자 메일 또는 다른 적절한 유형의 전자 통신을 통하는 것을 포함하는 셀룰러 통신 네트워크를 통해 데이터를 송수신하기 위한 셀룰러 통신 송수신기를 포함한다. 일부 실시예에서, 통신 유닛(239)은 유선 포트 및 무선 송수신기를 포함한다. 통신 유닛(239)은 또한 사용자 데이터그램 프로토콜(UDP), TCP/IP, HTTP, HTTP 보안(HTTPS), 단순 메일 전송 프로토콜(SMTP), SPDY, 빠른 UDP 인터넷 연결(QUIC) 등을 포함하지만 이에 제한되지 않는 표준 네트워크 프로토콜을 사용하여 파일 및/또는 미디어 객체의 배포를 위해 네트워크(105)에 대한 다른 통상적인 연결을 제공한다.
데이터베이스(199)는 도 1을 참조하여 위에서 설명된 기능을 제공하는 데이터를 저장하는 비-일시적 컴퓨터 판독 가능 저장 매체일 수 있다. 데이터베이스(199)는 DRAM 디바이스, SRAM 디바이스, 플래시 메모리 또는 일부 다른 메모리 디바이스일 수 있다. 일부 실시예에서, 데이터베이스(199)는 또한 하드 디스크 드라이브, CD ROM 디바이스, DVD ROM 디바이스, DVD RAM 디바이스, DVD RW 디바이스, 플래시 메모리, 영구적으로 정보를 저장하기 위한 일부 다른 대용량 저장 디바이스를 포함하는 비휘발성 메모리 또는 유사 영구 저장 디바이스 및 매체를 포함한다. 데이터베이스(199)는 신호 라인(236)을 통해 다른 구성 요소와 통신하기 위해 버스(220)에 연결된다.
비디오 애플리케이션(103a)은 인코더(202)와 디코더(204)를 포함할 수 있다.
인코더(202)는 압축을 통해 비디오를 인코딩하기 위한 코드 및 루틴을 포함할 수 있다. 일부 실시예에서, 인코더(202)는 비디오를 인코딩하기 위해 프로세서(235)에 의해 실행 가능한 명령 세트를 포함한다. 일부 실시예에서, 인코더는 비디오 서버(101)의 메모리(237)에 저장되고 프로세서(235)에 의해 액세스 및 실행 가능하다.
일부 실시예에서, 인코더(202)는 입력 비디오를 교정하고, 입력 비디오를 압축 비디오로 압축하고, 입력 비디오로부터의 메타 데이터를 압축 비디오에 추가하고, 압축 비디오가 적절한 속성을 갖는지 검증한다.
인코더(202)는 해상도 W(I)×H(I) 및 비트 레이트 B(I)의 입력 비디오 V(I)를 수신할 수 있다. 목표는 입력 비디오 V(I)를 압축하여 해상도 W(O)×H(O)와 출력 비트 레이트 B(O)에 기초하여 실제 비디오를 생성하는 것이다. 일부 실시예에서, 해상도 W(O)×H(O)는 파일 크기가 감소된 출력 비디오 V(O)를 갖는 목표에 기초하여 사용자 또는 디폴트 해상도에 의해 지정된다. 입력 영상에 비해 실제 영상의 파일 크기를 줄이기 위해, W(O)×H(O)는 W(I)×H(I)보다 작아야 하고 및/또는 B(O)는 B(I)보다 작아야 한다.
인코더(202)는 다음과 같은 문제를 해결함으로써 교정을 수행한다. 입력 비디오의 압축은 인코더(202)에게 비디오 압축을 수행하고 출력 비트 레이트 B(O)를 생성하도록 요청하는 것을 필요로 한다. 그러나, 인코더(202)는 출력 비트 레이트 B(O)와 실질적으로 상이할 수 있는 비트 레이트 B(X)를 생성한다. 결과적으로 인코더는 출력 비트 레이트 B(O)에 최대한 근접한 비트 레이트를 달성하기 위해 어떤 요청 비트 레이트 B(Y)를 요청해야 하는지 결정하기 위해 교정을 수행한다.
그 결과, 인코더(202)는 입력 비디오 V(I)의 파라미터들을 파싱한다. 요청 비트 레이트 B(Y)는 입력 폭 W(I), 입력 높이 H(I), 입력 포멧, 및 입력 비디오 V(I)의 입력 프레임 레이트 F(I)에 기초하여 크게 변경되므로, 이들 파라미터는 교정에 유용한다.
인코더(202)는 W(I), H(I), 프레임 레이트 F(I), 및 입력 비디오의 포맷을 사용하여 고정 지속 기간 D(B)를 갖는 대표적인 블랭크 비디오 V(B)를 생성한다. 고정 지속 기간 D(B)는 이 단계가 빠르게 수행될 수 있도록 선택되지만 너무 짧지는 않다. 예를 들어, 고정 지속 기간 D(B)는 2-12 초 사이일 수 있다. 인코더는 잘못된 보정으로 이어지는 짧은 비디오를 최적화하는 경향이 있다. 대신, 인코더(202)는 블랭크 비디오가 매우 빠르고 작은 파일 크기로 생성될 수 있기 때문에 F(I)×D(B) 블랙 프레임을 렌더링함으로써 블랭크 비디오를 생성한다.
인코더(202)는 디코더(204)에 대한 입력으로 블랭크 비디오 V(B)를 사용하여 대표 비디오 V(P)를 생성한다. 디코더와 인코더는 대표 비디오를 생성하는데 유효한 입력 비디오가 필요하도록 종종 쌍을 이룬다. OpenGL과 같은 그래픽 프레임 워크는 V(P)의 상부에 기하학적 텍스처를 생성하는데 사용된다. 텍스처는 실제 비디오의 컨텐츠를 모방하여 프레임별로 컬러를 변경한다. 생성 후 대표 비디오 V(P)의 비트 레이트는 요청 비트 레이트 B(Y)를 결정하기 위해 출력 비트 레이트 B(O)와 비교될 수 있다.
인코더(202)는 입력 비디오 V(I)가 요청 비트 레이트 B(Y)로 W(O)×H(O)로 압축되도록 요청하고, 이는 해상도 폭 W(A)×높이 H(A) 및 실제 비트 레이트 B(A)로 실제 비디오 V(A)를 얻기 위해 이전 단계에서 결정되었다. 인코더(202)는 또한이 단계에서 오디오 스트림을 복사할 수 있다.
인코더(202)는 입력 비디오 I(V)와 실제 비디오 V(A)를 비교함으로써 검증을 수행한다. 일부 실시예에서, 인코더(202)는 실제 폭 및 실제 높이가 출력 폭 및 출력 높이의 임계 폭 값 및 임계 높이 값 내에 있는지 여부를 결정한다. 만약 실제 폭 및 실제 높이가 임계 폭 값 내에 있지 않으면, 인코더(202)는 압축 프로세스가 실패한 것으로 결정할 수 있다. 일부 실시예에서, 인코더(202)는 실제 비디오의 프레임 수가 입력 비디오의 프레임 수와 동일한지 여부를 결정한다. 만약 실제 비디오의 프레임 수가 입력 디비오의 프레임 수와 같지 않은 경우, 인코더(202)는 압축 프로세스가 실패한 것으로 결정할 수 있다.
일부 실시예에서, 인코더(202)는 실제 비디오의 실제 비트 레이트가 출력 비트 레이트의 임계 비트 레이트 값 내에 있음을 확인함으로써 실제 비디오를 검증한다. 만약 실제 비트 레이트가 임계 비트 레이트 값 내에 있지 않으면, 인코더(202)는 파라미터들을 수정하고, 수정된 파라미터들 기초하여 입력 비디오가 출력 폭 및 출력 높이로 압축되도록 요청할 수 있다. 예를 들어, 인코더(202)는 대표 비디오에 대해 더 긴 고정 지속 기간을 사용할 수 있다.
인코더(202)가 하나 이상의 오디오 스트림을 실제 비디오에 추가하거나 추가하려고 시도한 경우, 인코더(202)는 입력 비디오를 실제 비디오와 비교하여 실제 비디오가 하나 이상의 오디오 스트림을 포함하는지 확인할 수 있다. 만약 실제 비디오가 하나 이상의 오디오 스트림을 포함하지 않으면, 인코더(202)는 실제 비디오가 프로세스의 시작시에 지정된 해상도 및 비트 레이트를 갖지 못했다고 결정할 수 있다. 예를 들어 해상도 및 비트 레이트는 디폴트값이거나 사용자에 의해 지정될 수 있다.
일부 실시예에서, 인코더(202)는 입력 비디오를 실제 비디오와 비교하여 출력 폭에 출력 높이를 곱합 값이 공통 해상도와 동일한지 확인할 수 있다. 인코더(202)는 모든 프레임 또는 프레임의 서브 세트에 대해 이 비교를 수행할 수 있다. 만약 출력 폭에 출력 높이를 곱합 값이 공통 해상도와 동일하지 않으면, 인코더(202)는 더 높은 비트 레이트를 사용하여 입력 비디오를 압축할 수 있다. 인코더(202)는 새로운 실제 영상을 생성하고 새로운 실제 영상이 검증 단계를 만족하는지 확인할 수 있다.
많은 인코더는 비디오가 둘 이상의 상이한 유형의 프레임, 즉 키 프레임 및 델타 프레임으로 구성되는 방식으로 비디오 포맷을 인코딩한다. 키 프레임은 프레임내의 이미지의 완전한 표현(full representation)이며 이전 프레임에 의존하지 않다. 반대로 델타 프레임은 현재 프레임과 이전 프레임 간의 차이를 인코딩한다.
인코더가 프레임의 서브 세트만을 비교하는 상황에서, 인코더(202)는 시간을 절약하기 위해 특정 프레임의 렌더링을 스킵한다. 그러나, 입력 비디오와 실제 비디오의 키 프레임은 서로 다른 위치에 있을 수 있다. 그 결과, 일부 실시예에서, 인코더(202)는 비교될 각 프레임에 대해, 입력 비디오와 실제 비디오 모두에서 가장 가까운 키 프레임을 결정하고, 비교를 위해 필요한 프레임에 도달하기 전에 디코더(204)가 프레임 및 그 이후의 모든 델타 프레임을 디코딩하는 것을 보장한다.
인코더(202)는 상이한 기술을 사용하여 프레임 내의 실제 이미지를 비교할 수 있다. 비교와 관련된 일반적인 오류가 있고, 특히 하나는 비디오의 왼쪽 에지와 같은 비디오의 라인이 변색된 것이므로 인코더(202)는 다음의 비교를 수행할 수 있다.
채널(c)을 포함하는 크기(x, y)의 두 이미지(S 및 T)가 주어지면, 여기서 각 채널 값은 0.0과 1.0 사이의 부동 소수점 수로 표현되고, 인코더(202)는 다음을 계산한다.
각 채널 값은 0.0과 1.0사이의 부동 소수점 숫자로 표시되고, 차이(x, y)는 모든 채널의 합(S(x, y, 채널)-T(x, y, 채널))2과 동일하고, 임계값 1 또는 0이상이면 필터링된 차이(filtered_ference(x, y) = 차이(x, y)이고, 그렇지 않으면 열(x) = 필터링된 차이(x, y)/이미지 높이의 모든 y값에 대한 합이고, 행(y) = 필터링된 차이(x, y)/이미지 폭(y)의 모든 x값에 대한 합이고, 그리고 오류 = 위에서 계산된 모든 열(x) 및 행(y)의 최대값이다
오류를 임계 값과 비교하여 이미지들이 충분히 유사한지 판단한다.
인코더(202)는 메타 데이터 복사를 수행할 수 있다. 입력 비디오가 압축되면 생성 시간과 같은 일부 추가(extra) 메타 데이터가 손실될 수 있다. 인코더(202)는 입력 비디오로부터 모든 필수 메타 데이터로 그것을 병합함으로써 실제 비디오를 정정할 수 있다. 예를 들어 생성 시간에 대해, 입력 파일이 MP4 파일인 경우, 실제 비디오를 생성하기 위해 입력 비디오에서 MVHD, TKHD 및 MDHD 아톰의 생성 시간을 복사하는 것으로 구성될 수 있다.
디코더(204)는 비디오를 디코딩하기 위한 코드 및 루틴을 포함할 수 있다. 일부 실시예에서, 디코더(204)는 비디오를 디코딩하기 위해 프로세서(235)에 의해 실행 가능한 명령 세트를 포함한다. 일부 실시예에서, 디코더는 비디오 서버(101)의 메모리(237)에 저장되고 프로세서(235)에 의해 액세스 및 실행 가능하다.
일부 실시예에서, 디코더(204)는 인코더(202)로부터 블랭크 비디오 V(B)를 수신하고, 블랭크 비디오를 디코딩하고, 디코딩된 블랭크 비디오와 연관된 파라미터들을 인코더에 제공한다.
예시적인 방법
도 3은 일부 실시예에 따라 압축 비디오를 생성하는 예시적인 방법(300)의 흐름도를 도시한다. 방법(300)은 비디오 서버(101)에 저장된 비디오 애플리케이션(103a)과 도 1의 사용자 디바이스(115a)에 저장된 비디오 애플리케이션(103b)의 임의의 조합에 의해 수행된다.
단계(302)에서, 입력 비디오가 교정된다. 예를 들어, 인코더(202)는 출력 비트 레이트(B)에 가능한 한 가까운 비트 레이트를 달성하도록 실제 비디오를 생성하기 위해 입력 비디오를 압축하라는 요청과 함께 어떤 요청 비트 레이트 B(Y)가 인코더(202)에 제공되어야 하는지 결정하기 위한 교정을 수행한다.
단계(304)에서, 입력 비디오는 출력 폭 및 출력 높이를 사용하여 실제 비디오로 압축된다. 일부 실시예에서, 입력 비디오가 실제 비디오로 압축되도록 요청하는 것은 실제 폭, 실제 높이 및 실제 비트 레이트를 갖는 실제 비디오를 생성한다. 교정 프로세스가 잘 작동했다면 실제 비디오는 입력 비디오와 유사한 해상도(예를 들어, 실제 폭 및 실제 높이)를 가져야 한다.
단계(306)에서, 실제 비디오가 사전 결정된 기준을 만족하는 속성을 갖는지 검증된다. 예를 들어, 검증은 실제 폭와 실제 높이가 출력 폭과 출력 높이의 임계 폭 값과 임계 높이 값 내에 있는지 확인하는 것을 포함한다. 만약 실제 폭와 실제 높이가 임계 폭 값과 임계 높이 값 내에 있지 않으면, 압축은 실패한 것으로 결정된다.
도 4는 일부 실시예에 따라 압축 비디오를 생성하기 위한 다른 예시적인 방법(400)의 흐름도를 도시한다. 방법(400)은 비디오 서버(101)에 저장된 비디오 애플리케이션(103a)과 도 1의 사용자 디바이스(115a)에 저장된 비디오 애플리케이션(103b)의 임의의 조합에 의해 수행된다.
단계(402)에서, 출력 비트 레이트가 식별된다. 출력 비트 레이트는 사용자 또는 디폴트값에 의해 지정될 수 있다. 출력 폭과 출력 높이도 식별될 수 있다. 단계(404)에서, 입력 비디오의 파라미터들이 파싱된다. 파라미터들은 입력 폭, 입력 높이 및 입력 포멧을 포함할 수 있다. 단계(406)에서, 입력 비디오의 파라미터들에 기초하여 고정된 지속 기간을 갖는 블랭크 비디오가 생성된다. 단계(408)에서, 디코더(204)에 대한 입력으로서 블랭크 비디오를 제공하는 것에 기초하여 대표 비디오가 생성된다. 단계(410)에서, 요청 비트 레이트는 대표 비디오 및 출력 비트 레이트에 기초하여 결정된다. 예를 들어, 요청 비트 레이트는 대표 비디오의 대표 비트 레이트와 출력 비트 레이트를 비교함으로써 결정될 수 있다. 단계(412)에서, 입력 비디오는 실제 비디오를 생성하기 위해 요청 비트 레이트를 사용하여 압축된다. 일부 실시예에서, 입력 비디오는 출력 폭 및 출력 높이를 사용하여 추가로 압축될 수 있다.
위의 설명에서, 설명의 목적으로, 명세서의 완전한 이해를 제공하기 위해 다수의 특정 세부 사항이 제시된다. 그러나, 본 발명이 이러한 특정 세부 사항없이 실시될 수 있다는 것은 당업자에게 명백할 것이다. 일부 경우에는 설명이 모호해지는 것을 방지하기 위해 구조와 디바이스가 블록 다이어그램 형식으로 표시된다. 예를 들어, 실시예는 주로 사용자 인터페이스 및 특정 하드웨어를 참조하여 위에서 설명될 수 있다. 그러나, 실시예는 데이터 및 명령을 수신할 수 있는 임의의 유형의 컴퓨팅 디바이스 및 서비스를 제공하는 임의의 주변 디바이스에 적용될 수 있다.
명세서에서 "일부 실시예" 또는 "일부 경우"에 대한 참조는 실시예 또는 경우(instance)와 관련하여 설명된 특정 특징, 구조 또는 특성이 설명의 적어도 하나의 구현에 포함될 수 있음을 의미한다. 명세서의 다양한 곳에서 "일부 실시예에서"라는 문구의 출현은 반드시 모두 동일한 실시예를 지칭하는 것은 아니다.
위의 상세한 설명의 일부는 컴퓨터 메모리 내의 데이터 비트에 대한 연산의 알고리즘 및 상징적 표현의 관점에서 제시된다. 이들 알고리즘 설명 및 표현은 데이터 처리 기술의 숙련자가 자신의 동작들의 본질을 당업자에게 가장 효과적으로 전달하는데 사용하는 수단이다. 알고리즘은 본 명세서에서 일반적으로 원하는 결과로 이어지는 단계들의 일관된 순서로 간주된다. 단계들은 물리량의 물리적 조작이 필요한 단계이다. 반드시 그런 것은 아니지만 일반적으로 이러한 양은 저장, 전송, 결합, 비교 및 조작이 가능한 전기 또는 자기 데이터의 형태를 취한다. 주로 일반적인 사용의 이유로 이러한 데이터를 비트, 값, 요소, 기호, 문자, 용어, 숫자 등으로 참조하는 것이 편리한 것으로 입증되었다.
그러나, 이들 및 유사한 용어 모두는 적절한 물리량과 연관되어야 하며 이러한 수량에 적용되는 편리한 라벨일 뿐이라는 것을 명심해야 한다. 다음 논의에서 명확하게 달리 명시되지 않는 한, 설명 전반에 걸쳐 "처리" 또는 "계산 (computing)" 또는 "계산(calculating)" 또는 "결정" 또는 "디스플레이" 등을 포함하는 용어를 사용하는 논의는 컴퓨터 시스템의 레지스터 및 메모리 내에서 물리적(전자적) 수량으로 표시된 데이터를 컴퓨터 시스템 또는 레지스터 또는 다른 그러한 정보 저장, 전송 또는 디스플레이 디바이스 내에서 물리량으로 유사하게 표현 된 다른 데이터로 조작하고 변환하는 컴퓨터 시스템 또는 유사한 전자 컴퓨팅 디바이스의 동작 및 프로세스를 나타낸다.
명세서의 실시예는 또한 전술한 방법의 하나 이상의 단계를 수행하기 위한 프로세서와 관련될 수 있다. 프로세서는 컴퓨터에 저장된 컴퓨터 프로그램에 의해 선택적으로 활성화되거나 재구성된 특수 목적 프로세서일 수 있다. 이러한 컴퓨터 프로그램은 이에 한정되지는 않지만 광 디스크, ROM, CD-ROM, 자기 디스크, RAM, EPROM, EEPROM, 자기 또는 광학 카드, 비휘발성 메모리가 있는 USB 키를 포함하는 플래시 메모리, 또는 컴퓨터 시스템 버스에 각각 결합된 전자 명령을 저장하는데 적합한 모든 유형의 매체를 포함하는 비-일시적 컴퓨터 판독 가능 저장 매체에 저장될 수 있다.
명세서는 일부 전체 하드웨어 실시예, 일부 전체 소프트웨어 실시예 또는 하드웨어 및 소프트웨어 요소 모두를 포함하는 일부 실시예의 형태를 취할 수 있다. 일부 실시예에서, 사양은 펌웨어, 상주 소프트웨어, 마이크로 코드 등을 포함하지만 이에 제한되지 않는 소프트웨어로 구현된다.
또한, 설명은 컴퓨터 또는 임의의 명령 실행 시스템에 의해 또는 이와 관련하여 사용하기 위한 프로그램 코드를 제공하는 컴퓨터 사용 가능 또는 컴퓨터 판독 가능 매체로부터 액세스 가능한 컴퓨터 프로그램 제품의 형태를 취할 수 있다. 이 설명의 목적을 위해, 컴퓨터 사용 가능 또는 컴퓨터 판독 가능 매체는 명령 실행 시스템, 디바이스 또는 디바이스에 의해 또는 이와 관련하여 사용하기 위해 프로그램을 포함, 저장, 통신, 전파 또는 전송할 수 있는 임의의 디바이스 일 수 있다. .
프로그램 코드를 저장하거나 실행하기에 적합한 데이터 처리 시스템은 시스템 버스를 통해 메모리 요소에 직접 또는 간접적으로 연결된 적어도 하나의 프로세서를 포함할 것이다. 메모리 요소는 프로그램 코드의 실제실행 중에 사용되는 로컬 메모리, 벌크 스토리지 및 실행 중에 벌크 스토리지로부터 코드가 검색되어야 하는 횟수를 줄이기 위해 적어도 일부 프로그램 코드의 임시 스토리지를 제공하는 캐시 메모리를 포함할 수 있다.
위에서 논의된 시스템이 개인 정보를 수집하거나 사용하는 상황에서, 시스템은 사용자에게 프로그램 또는 기능이 사용자 정보(예를 들어, 사용자의 소셜 네트워크, 소셜 동작 또는 활동, 직업, 사용자의 선호도 또는 사용자의 현재 위치에 관한 정보)를 수집하는지 여부 또는 사용자와 더 관련이 있을 수 있는 컨텐츠를 서버로부터 수신할지 여부 및/또는 방법을 제어할 수 있는 기회를 사용자에게 제공한다. 또한 특정 데이터는 개인 식별 정보가 제거될 수 있도록 저장 또는 사용되기 전에 하나 이상의 방식으로 처리될 수 있다. 예를 들어, 사용자의 신원은 사용자에 대해 개인 식별 정보가 결정될 수 없도록 처리될 수 있거나 사용자의 지리적 위치는 사용자의 특정 위치가 결정돌 수 없도록 위치 정보가 획득된 곳(예를 들어, 도시, 우편 번호 또는 주 수준)에서 일반화될 수 있다. 따라서 사용자는 사용자에 대한 정보를 수집하고 서버에서 사용하는 방법을 제어할 수 있다.

Claims (20)

  1. 상이한 디바이스에 걸쳐 일관된 압축 비디오를 생성하는 방법으로서, 상기 방법은,
    출력 비트 레이트를 식별하는 단계;
    입력 비디오의 파라미터들을 파싱하는 단계;
    입력 비디오의 파라미터들에 기초하여 고정 지속 기간(duration)을 갖는 블랭크 비디오를 생성하는 단계, 상기 블랭크 비디오는 이미지를 포함하지 않고;
    디코더의 입력으로 블랭크 비디오를 제공하는 단계;
    디코더로, 디코더의 입력으로 블랭크 비디오를 제공하는 것에 기초하여 대표 비디오를 생성하는 단계;
    대표 비디오 및 출력 비트 레이트에 기초하여 요청 비트 레이트를 결정하는 단계; 및
    실제 비디오를 생성하기 위해 요청 비트 레이트를 사용하여 인코더에 의해 입력 비디오의 압축을 위해 인코더에 요청 비트 레이트를 제공하는 단계를 포함하는 것을 특징으로 하는 압축 비디오를 생성하는 방법.
  2. 제1항에 있어서,
    상기 대표 비디오를 생성하는 단계는 대표 비디오의 상부(top)에 기하학적 텍스처를 생성하는 단계를 포함하고;
    상기 요청 비트 레이트를 결정하는 단계는 대표 비디오의 대표 비트 레이트를 출력 비트 레이트와 비교하는 단계를 포함하고; 그리고
    상기 압축은 실제 폭, 실제 높이 및 실제 비트 레이트를 갖는 실제 비디오를 생성하는 것을 특징으로 하는 압축 비디오를 생성하는 방법.
  3. 제2항에 있어서,
    상기 출력 비트 레이트를 식별하는 단계는 출력 폭 및 출력 높이를 식별하는 단계를 더 포함하여,
    (a) 실제 폭 및 실제 높이가 출력 폭 및 출력 높이의 임계 폭 값 및 임계 높이 값 내에 있는지; 그리고
    (b) 실제 비디오의 프레임 수가 입력 비디오의 프레임 수와 동일한지를 확인함으로써 실제 비디오를 검증하는 단계를 더 포함하는 것을 특징으로 하는 압축 비디오를 생성하는 방법.
  4. 제2항에 있어서,
    상기 출력 비트 레이트를 식별하는 단계는 출력 폭 및 출력 높이를 식별하는 단계를 더 포함하여,
    실제 비디오의 실제 비트 레이트가 출력 비트 레이트의 임계 비트 레이트 값 이내인지 확인함으로써 실제 비디오를 검증하는 단계; 및
    실제 비트 레이트가 임계 비트 레이트 값 내에 있지 않다는 결정에 응답하여, 파라미터를 수정하고 수정된 파라미터에 기초하여 입력 비디오를 출력 폭 및 출력 높이로 압축하도록 요청하는 단계를 더 포함하는 것을 특징으로 하는 압축 비디오를 생성하는 방법.
  5. 제1항에 있어서,
    상기 출력 비트 레이트를 식별하는 단계는 출력 폭 및 출력 높이를 식별하는 단계를 더 포함하고; 그리고
    상기 입력 비디오는 출력 폭 및 출력 높이를 사용하여 추가로 압축되는 것을 특징으로 하는 압축 비디오를 생성하는 방법.
  6. 제5항에 있어서,
    상기 출력 비트 레이트, 출력 폭 및 출력 높이는 사용자에 의해 지정되거나 디폴트인 것을 특징으로 하는 압축 비디오를 생성하는 방법.
  7. 제1항에 있어서,
    상기 입력 비디오를 압축하는 단계는 하나 이상의 오디오 스트림을 실제 비디오에 추가하는 단계를 포함하여,
    실제 비디오가 하나 이상의 오디오 스트림을 포함하는지 확인하기 위해 입력 비디오를 실제 비디오와 비교함으로써 실제 비디오를 검증하는 단계; 및
    실제 비디오가 하나 이상의 오디오 스트림을 포함하지 못한다는 것에 응답하여, 실제 비디오가 실패한 것으로 결정하는 단계를 더 포함하는 것을 특징으로 하는 압축 비디오를 생성하는 방법.
  8. 제1항에 있어서,
    상기 출력 비트 레이트를 식별하는 단계는 출력 폭 및 출력 높이를 식별하는 단계를 더 포함하여,
    출력 폭에 출력 높이를 곱한 값이 실제 비디오와 관련된 해상도와 동일하다고 확인함으로써 실제 비디오를 검증하는 단계; 및
    출력 폭에 출력 높이를 곱한 값이 실제 비디오와 관련된 해상도와 동일하지 않다는 것에 응답하여, 더 높은 비트 레이트를 사용하여 입력 비디오를 압축하는 단계를 더 포함하는 것을 특징으로 하는 압축 비디오를 생성하는 방법.
  9. 제1항에 있어서,
    상기 입력 비디오를 압축하는 단계는,
    실제 비디오를 생성하기 위해 입력 비디오로부터의 메타 데이터를 병합하는 단계를 포함하는 것을 특징으로 하는 압축 비디오를 생성하는 방법.
  10. 제2항에 있어서,
    입력 비디오 이미지 프레임과 실제 비디오 이미지 프레임을 비교하여 실제 비디오를 검증하는 단계를 더 포함하는 것을 특징으로 하는 압축 비디오를 생성하는 방법.
  11. 하나 이상의 컴퓨터에 의해 실행될 때 하나 이상의 컴퓨터로 하여금 동작들을 수행함으로써 상이한 디바이스에 걸쳐 일관된 압축 비디오를 생성하게 하는 명령들이 저장된 비-일시적 컴퓨터 판독 가능 매체로서, 상기 동작들은,
    출력 비트 레이트를 식별하는 단계;
    입력 비디오의 파라미터들을 파싱하는 단계;
    입력 비디오의 파라미터들에 기초하여 고정 지속 기간을 갖는 블랭크 비디오를 생성하는 단계, 상기 블랭크 비디오는 이미지를 포함하지 않고;
    디코더의 입력으로 블랭크 비디오를 제공하는 단계;
    디코더로, 디코더의 입력으로 블랭크 비디오를 제공하는 것에 기초하여 대표 비디오를 생성하는 단계;
    대표 비디오 및 출력 비트 레이트에 기초하여 요청 비트 레이트를 결정하는 단계; 및
    실제 비디오를 생성하기 위해 요청 비트 레이트를 사용하여 인코더에 의해 입력 비디오의 압축을 위해 인코더에 요청 비트 레이트를 제공하는 단계를 포함하는 것을 특징으로 하는 비-일시적 컴퓨터 판독 가능 매체.
  12. 제11항에 있어서,
    상기 대표 비디오를 생성하는 단계는 대표 비디오의 상부에 기하학적 텍스처를 생성하는 단계를 포함하고;
    상기 요청 비트 레이트를 결정하는 단계는 대표 비디오의 대표 비트 레이트를 출력 비트 레이트와 비교하는 단계를 포함하고; 그리고
    상기 압축은 실제 폭, 실제 높이 및 실제 비트 레이트를 갖는 실제 비디오를 생성하는 것을 특징으로 하는 비-일시적 컴퓨터 판독 가능 매체.
  13. 제12항에 있어서,
    상기 출력 비트 레이트를 식별하는 단계는 출력 폭 및 출력 높이를 식별하는 단계를 더 포함하고,
    (a) 실제 폭 및 실제 높이가 출력 폭 및 출력 높이의 임계 폭 값 및 임계 높이 값 내에 있는지; 그리고
    (b) 실제 비디오의 프레임 수가 입력 비디오의 프레임 수와 동일한지를 확인함으로써 실제 비디오를 검증하는 단계를 더 포함하는 것을 특징으로 하는 비-일시적 컴퓨터 판독 가능 매체.
  14. 제12항에 있어서,
    상기 출력 비트 레이트를 식별하는 단계는 출력 폭 및 출력 높이를 식별하는 단계를 더 포함하고,
    실제 비디오의 실제 비트 레이트가 출력 비트 레이트의 임계 비트 레이트 값 이내인지 확인함으로써 실제 비디오를 검증하는 단계; 및
    실제 비트 레이트가 임계 비트 레이트 값 내에 있지 않다는 결정에 응답하여, 파라미터를 수정하고 수정된 파라미터에 기초하여 입력 비디오를 출력 폭 및 출력 높이로 압축하도록 요청하는 단계를 더 포함하는 것을 특징으로 하는 비-일시적 컴퓨터 판독 가능 매체.
  15. 제11항에 있어서,
    상기 출력 비트 레이트를 식별하는 단계는 출력 폭 및 출력 높이를 식별하는 단계를 더 포함하고; 그리고
    상기 입력 비디오는 출력 폭와 출력 높이를 사용하여 추가로 압축되는 것을 특징으로 하는 비-일시적 컴퓨터 판독 가능 매체.
  16. 상이한 디바이스에 걸쳐 일관된 압축 비디오를 생성하는 시스템으로서, 상기 시스템은,
    하나 이상의 프로세서; 및
    하나 이상의 프로세서에 의해 실행될 때 하나 이상의 프로세서로 하여금 동작들을 수행하게 하는 명령들을 저장하는 메모리를 포함하고, 상기 동작들은,
    출력 비트 레이트를 식별하는 단계;
    입력 비디오의 파라미터들을 파싱하는 단계;
    입력 비디오의 파라미터들에 기초하여 고정 지속 기간을 갖는 블랭크 비디오를 생성하는 단계, 상기 블랭크 비디오는 이미지를 포함하지 않고;
    디코더의 입력으로 블랭크 비디오를 제공하는 단계;
    디코더로, 디코더의 입력으로 블랭크 비디오를 제공하는 것에 기초하여 대표 비디오를 생성하는 단계;
    대표 비디오 및 출력 비트 레이트에 기초하여 요청 비트 레이트를 결정하는 단계; 및
    실제 비디오를 생성하기 위해 요청 비트 레이트를 사용하여 인코더에 의해 입력 비디오의 압축을 위해 인코더에 요청 비트 레이트를 제공하는 단계를 포함하는 것을 특징으로 하는 압축 비디오를 생성하는 시스템.
  17. 제16항에 있어서,
    상기 대표 비디오를 생성하는 단계는 대표 비디오의 상부에 기하학적 텍스처를 생성하는 단계를 포함하고;
    상기 요청 비트 레이트를 결정하는 단계는 대표 비디오의 대표 비트 레이트를 출력 비트 레이트와 비교하는 단계를 포함하고; 그리고
    상기 압축은 실제 폭, 실제 높이 및 실제 비트 레이트를 갖는 실제 비디오를 생성하는 것을 특징으로 하는 압축 비디오를 생성하는 시스템.
  18. 제17항에 있어서,
    상기 출력 비트 레이트를 식별하는 단계는 출력 폭 및 출력 높이를 식별하는 단계를 더 포함하고,
    (a) 실제 폭 및 실제 높이가 출력 폭 및 출력 높이의 임계 폭 값 및 임계 높이 값 내에 있는지; 그리고
    (b) 실제 비디오의 프레임 수가 입력 비디오의 프레임 수와 동일한지를 확인함으로써 실제 비디오를 검증하는 단계를 더 포함하는 것을 특징으로 하는 압축 비디오를 생성하는 시스템.
  19. 제17항에 있어서,
    상기 출력 비트 레이트를 식별하는 단계는 출력 폭 및 출력 높이를 식별하는 단계를 더 포함하고,
    실제 비디오의 실제 비트 레이트가 출력 비트 레이트의 임계 비트 레이트 값 이내인지 확인함으로써 실제 비디오를 검증하는 단계; 및
    실제 비트 레이트가 임계 비트 레이트 값 내에 있지 않다는 결정에 응답하여, 파라미터를 수정하고 수정된 파라미터에 기초하여 입력 비디오를 출력 폭 및 출력 높이로 압축하도록 요청하는 단계를 더 포함하는 것을 특징으로 하는 압축 비디오를 생성하는 시스템.
  20. 제16항에 있어서,
    상기 출력 비트 레이트를 식별하는 단계는 출력 폭 및 출력 높이를 식별하는 단계를 더 포함하고; 그리고
    상기 입력 비디오는 출력 폭와 출력 높이를 사용하여 추가로 압축되는 것을 특징으로 하는 압축 비디오를 생성하는 시스템.
KR1020207025487A 2018-11-26 2019-08-26 안전 및 크로스 디바이스에 일관된 비디오 압축 KR102411644B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201862771552P 2018-11-26 2018-11-26
US62/771,552 2018-11-26
PCT/US2019/048192 WO2020112193A1 (en) 2018-11-26 2019-08-26 Safe and cross device consistent video compression

Publications (2)

Publication Number Publication Date
KR20200116499A KR20200116499A (ko) 2020-10-12
KR102411644B1 true KR102411644B1 (ko) 2022-06-22

Family

ID=67902626

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020207025487A KR102411644B1 (ko) 2018-11-26 2019-08-26 안전 및 크로스 디바이스에 일관된 비디오 압축

Country Status (6)

Country Link
US (1) US11394977B2 (ko)
EP (1) EP3732879A1 (ko)
JP (1) JP7130050B2 (ko)
KR (1) KR102411644B1 (ko)
CN (1) CN111819846B (ko)
WO (1) WO2020112193A1 (ko)

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002232882A (ja) 2001-01-31 2002-08-16 Nec Corp 事前解析を用いた動画像符号化装置、動画像符号化方法、及びそのプログラム。

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004289867A (ja) * 1998-09-09 2004-10-14 Nippon Telegr & Teleph Corp <Ntt> 画質調整方法及びその方法を使用した映像通信装置及びその方法を記録した記録媒体
GB2356998A (en) 1999-12-02 2001-06-06 Sony Uk Ltd Video signal processing
ES2528293T3 (es) * 2005-04-19 2015-02-06 Telecom Italia S.P.A. Procedimiento y aparato de codificación de imágenes digitales
JP4791129B2 (ja) 2005-10-03 2011-10-12 ルネサスエレクトロニクス株式会社 画像符号化装置、画像符号化方法及び画像編集装置
JP5310189B2 (ja) * 2009-03-27 2013-10-09 日本電気株式会社 ビデオエンコーダ装置及び該ビデオエンコーダ装置に用いられる符号化データ出力方法
US8270473B2 (en) * 2009-06-12 2012-09-18 Microsoft Corporation Motion based dynamic resolution multiple bit rate video encoding
US8588296B2 (en) * 2009-07-02 2013-11-19 Dialogic Corporation Bitrate control algorithm for video transcoding systems
US8767825B1 (en) * 2009-11-30 2014-07-01 Google Inc. Content-based adaptive video transcoding framework
TWI538480B (zh) * 2014-05-27 2016-06-11 敦泰電子股份有限公司 藉由偵測鄰近像素複雜度來動態調整壓縮參數的影像壓縮系統
US10804958B2 (en) * 2015-02-24 2020-10-13 Comcast Cable Communications, Llc Multi-bitrate video with dynamic blocks
US20160295256A1 (en) * 2015-03-31 2016-10-06 Microsoft Technology Licensing, Llc Digital content streaming from digital tv broadcast
CN106856571B (zh) * 2015-12-09 2019-12-06 阿里巴巴集团控股有限公司 一种转码方法及装置
US10356406B2 (en) 2016-01-19 2019-07-16 Google Llc Real-time video encoder rate control using dynamic resolution switching
US10666941B1 (en) * 2016-04-06 2020-05-26 Ambarella International Lp Low bitrate encoding of panoramic video to support live streaming over a wireless peer-to-peer connection

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002232882A (ja) 2001-01-31 2002-08-16 Nec Corp 事前解析を用いた動画像符号化装置、動画像符号化方法、及びそのプログラム。

Also Published As

Publication number Publication date
US20210274190A1 (en) 2021-09-02
EP3732879A1 (en) 2020-11-04
CN111819846A (zh) 2020-10-23
JP7130050B2 (ja) 2022-09-02
KR20200116499A (ko) 2020-10-12
WO2020112193A1 (en) 2020-06-04
JP2021526747A (ja) 2021-10-07
CN111819846B (zh) 2024-04-16
US11394977B2 (en) 2022-07-19

Similar Documents

Publication Publication Date Title
US10516903B2 (en) Method and apparatus for transmitting video data
EP2123053B1 (en) Generating a data stream and identifying positions within a data stream
JP2019527444A (ja) 一致するコンテンツを特定するためのシステムおよび方法
EP3142381B1 (en) Network video playing method and device
EP3595324A1 (en) Method and device for adjusting video playback speed
US11929993B2 (en) System, method and application for transcoding data into media files
US10819951B2 (en) Recording video from a bitstream
US11051080B2 (en) Method for improving video resolution and video quality, encoder, and decoder
KR102411644B1 (ko) 안전 및 크로스 디바이스에 일관된 비디오 압축
US20240040147A1 (en) Data processing method and apparatus, computer device, and storage medium
US20160042487A1 (en) System and Method to detect video piracy
CN113055184A (zh) 数据加解密方法及装置
CN105471871B (zh) 用于提供视频片段集合的方法和装置
US20180139480A1 (en) Systems and methods for digital video sampling and upscaling
CN110730277B (zh) 一种信息编码及获取编码信息的方法和装置
CN106161021B (zh) 隐私数据发送方法及装置、隐私数据接收方法及装置
CN113228665A (zh) 用于处理配置数据的方法、设备、计算机程序和计算机可读介质
EP3189666B1 (en) Partial headers for system set-up
US20160105731A1 (en) Systems and methods for identifying and acquiring information regarding remotely displayed video content
CN106534137B (zh) 媒体流传输方法及装置
CN111064717A (zh) 数据编码方法、数据解码方法以及相关终端、装置
KR20190106462A (ko) 이미지 파일의 처리 시스템 및 방법
US9445141B2 (en) Efficient re-use of a media asset
CN111225210B (zh) 视频编码方法、视频编码装置及终端设备
JP2007134860A (ja) 暗号化プログラムおよび復号化プログラム

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant