KR102077556B1 - 가상 인트라-프레임을 사용하여 비디오 콘텐츠를 인코딩하기 위한 시스템 및 방법 - Google Patents

가상 인트라-프레임을 사용하여 비디오 콘텐츠를 인코딩하기 위한 시스템 및 방법 Download PDF

Info

Publication number
KR102077556B1
KR102077556B1 KR1020157002089A KR20157002089A KR102077556B1 KR 102077556 B1 KR102077556 B1 KR 102077556B1 KR 1020157002089 A KR1020157002089 A KR 1020157002089A KR 20157002089 A KR20157002089 A KR 20157002089A KR 102077556 B1 KR102077556 B1 KR 102077556B1
Authority
KR
South Korea
Prior art keywords
frame
intra
data
video content
inter
Prior art date
Application number
KR1020157002089A
Other languages
English (en)
Other versions
KR20150040872A (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 KR20150040872A publication Critical patent/KR20150040872A/ko
Application granted granted Critical
Publication of KR102077556B1 publication Critical patent/KR102077556B1/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/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/593Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving spatial prediction techniques
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/234Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs
    • H04N21/2343Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs involving reformatting operations of video signals for distribution or compliance with end-user requests or end-user device requirements
    • H04N21/234309Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs involving reformatting operations of video signals for distribution or compliance with end-user requests or end-user device requirements by transcoding between formats or standards, e.g. from MPEG-2 to MPEG-4 or from Quicktime to Realvideo
    • 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/103Selection of coding mode or of prediction mode
    • H04N19/114Adapting the group of pictures [GOP] structure, e.g. number of B-frames between two anchor frames
    • 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/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/156Availability of hardware or computational resources, e.g. encoding based on power-saving criteria
    • 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
    • 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/177Methods 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 a group of pictures [GOP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/30Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using hierarchical techniques, e.g. scalability
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • H04N19/423Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation characterised by memory arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/44Decoders specially adapted therefor, e.g. video decoders which are asymmetric with respect to the encoder
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/587Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal sub-sampling or interpolation, e.g. decimation or subsequent interpolation of pictures in a video sequence
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/59Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving spatial sub-sampling or interpolation, e.g. alteration of picture size or resolution
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/234Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs
    • H04N21/23424Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs involving splicing one content stream with another content stream, e.g. for inserting or substituting an advertisement
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/24Monitoring of processes or resources, e.g. monitoring of server load, available bandwidth, upstream requests
    • H04N21/2402Monitoring of the downstream path of the transmission network, e.g. bandwidth available
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/25Management operations performed by the server for facilitating the content distribution or administrating data related to end-users or client devices, e.g. end-user or client device authentication, learning user preferences for recommending movies
    • H04N21/266Channel or content management, e.g. generation and management of keys and entitlement messages in a conditional access system, merging a VOD unicast channel into a multicast channel
    • H04N21/2662Controlling the complexity of the video stream, e.g. by scaling the resolution or bitrate of the video stream based on the client capabilities
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B27/00Editing; Indexing; Addressing; Timing or synchronising; Monitoring; Measuring tape travel
    • G11B27/02Editing, e.g. varying the order of information signals recorded on, or reproduced from, record carriers
    • G11B27/031Electronic editing of digitised analogue information signals, e.g. audio or video signals
    • G11B27/034Electronic editing of digitised analogue information signals, e.g. audio or video signals on discs
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/40Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using video transcoding, i.e. partial or full decoding of a coded input stream followed by re-encoding of the decoded output stream
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/234Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs
    • H04N21/23406Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs involving management of server-side video buffer
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/234Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs
    • H04N21/2343Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs involving reformatting operations of video signals for distribution or compliance with end-user requests or end-user device requirements
    • H04N21/23439Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs involving reformatting operations of video signals for distribution or compliance with end-user requests or end-user device requirements for generating different versions

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Computing Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Business, Economics & Management (AREA)
  • Marketing (AREA)
  • Databases & Information Systems (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)

Abstract

하나 이상의 가상 인트라-프레임을 사용하여 인코딩된 로오(raw) 이미지 콘텐츠 인코딩하기 위한 시스템 및 방법이 제공된다. 예시적인 방법에서, 비디오 콘텐츠의 스트림은 인코딩되어 인트라-프레임 및 복수 개의 대응하는 인터-프레임을 포함하는 압축된 비디오 데이터를 생성할 수도 있다. 압축된 비디오 데이터는 버퍼 내에 저장될 수도 있고, 버퍼 내의 데이터의 양이 임계 값을 초과하면, 가상 인트라-프레임은 디코딩된 인터-프레임 데이터에 기초하여 계산될 수도 있다. 가상 인트라-프레임은 버퍼 내로의 저장을 위하여 출력될 수도 있다.

Description

가상 인트라-프레임을 사용하여 비디오 콘텐츠를 인코딩하기 위한 시스템 및 방법{SYSTEM AND METHOD FOR ENCODING VIDEO CONTENT USING VIRTUAL INTRA-FRAMES}
본 개시물은 일반적으로 이미지 데이터를 인코딩하고 압축된 비디오 콘텐츠를 생성하기 위한 시스템 및 방법에 관련된다. 좀 더 자세하게 설명하면, 그리고 제한됨이 없이, 본 개시물은 네트워크를 통한 압축된 비디오 콘텐츠의 버퍼링 및 전달을 가능하게 하기 위하여 가상 인트라-프레임을 생성하는 시스템 및 방법에 관련된다.
오늘날, 비디오 시스템은 TCP/IP 프로토콜을 사용하여 이미지 데이터를 통신할 수 있는 디지털 네트워크 카메라를 포함한다. 이러한 비디오 시스템은 아날로그 폐쇄 회로 텔레비전(CCTV) 카메라에 기초하는 전통적인 감시 시스템을 대체하고 있다. 예를 들어, 그리고 아날로그 CCTV 카메라에 반해, 디지털 네트워크 카메라가 있는 비디오 시스템은 로오 이미지 데이터를 실시간으로 캡쳐 및 인코딩하여 임의의 개수의 수신자 또는 스토리지 디바이스로의 연속 또는 이산 송신을 위한 고해상도 압축된 비디오 콘텐츠를 생성한다.
압축된, 고해상도 비디오 콘텐츠는 연속적으로 또는 대안적으로 실시간 시청을 위하여 지정된 수신자에게 또는 저장을 위하여 스토리지 디바이스로 송신될 수도 있다. 네트워크 카메라는 예를 들어 하나 이상의 이산 트리거링 이벤트 또는 사건에 응답하여 이미지 데이터를 송신할 수도 있다. 압축된 비디오 콘텐츠의 효율적 비트-레이트 코딩을 획득하기 위하여, 네트워크 카메라는 차분 인코딩 방식을 채용하는 비디오 코덱을 포함할 수도 있다. 이러한 인코딩 방식은 인트라-리프레시 프레임들 사이에 큰 거리를 요구할 수도 있다. 이러한 인코딩 방식으로써 생성된 압축된 비디오 콘텐츠는 네트워크를 통한 송신 도중에 최소의 네트워크 리소스를 소모하는 긴 픽쳐-그룹(group-of-picture; GOP) 길이를 가질 수도 있다.
더욱이, 그리고 아날로그 CCTV 카메라에 반하여, 네트워크 카메라는 압축된 비디오 콘텐츠의 부분을 버퍼링함으로써, 이를 통하여 이러한 네트워크 카메라가 관심대상인 이벤트 또는 사건을 브라켓팅(bracket)하는 압축된 비디오 콘텐츠를 배포하도록 한다. 그러나, 인트라-리프레시 프레임 사이의 긴 거리에 기인하여, 압축된 비디오 데이터 내에 긴-GOP 길이 코드를 사용하는 것은 인코딩된 데이터의 완전한 시퀀스를 저장하기 위하여 필요한 메모리의 양을 증가시킨다. 결과적으로, 네트워크 카메라의 제한된 버퍼 용량은 이러한 카메라가 압축된 비디오 콘텐츠의 의미있는 부분들을 버퍼링하는 능력을 제한한다.
전술한 바를 감안하여, 이미지 데이터를 인코딩하고 압축된 비디오 콘텐츠를 생성하기 위한 개선된 시스템 및 방법을 위한 필요성이 존재한다. 더욱이, 네트워크 상에서 압축된 비디오 콘텐츠의 버퍼링 및 전달을 가능하게 하는, 가상 인트라-프레임을 생성하는 개선된 시스템 및 방법을 위한 필요성이 존재한다. 또한, 비디오 데이터의 효율적인 큰 GOP-길이 인코딩 및 제한된 버퍼 메모리를 가지는 네트워크 카메라를 사용한 인코딩된 프레임 데이터의 버퍼링을 지원하는 이러한 시스템 및 방법에 대한 필요성이 존재한다. 또한 컴퓨터-기초 환경에서 구현될 수 있는 이러한 시스템 및 방법에 대한 필요성이 존재한다.
본 개시물의 실시예와 일관되는, 이미지 데이터를 인코딩하고 압축된 비디오 콘텐츠를 생성하기 위한 컴퓨터-구현 시스템 및 방법이 제공한다. 예시적인 일 실시예들에서, 비디오 콘텐츠의 스트림을 수신하고, 비디오 콘텐츠 스트림을 비디오 코덱을 사용하여 인코딩하여 인트라-프레임 및 복수 개의 대응하는 인터-프레임을 포함하는 압축된 비디오 데이터를 생성하며, 및 압축된 비디오 데이터를 버퍼 내에 저장하는 방법이 제공된다. 예시적인 방법과 일관적인 인코딩하는 단계는, 인코딩된 인트라-프레임과 연관된 데이터를 획득하는 단계, 및 인트라-프레임 데이터에 기초하여, 상기 비디오 콘텐츠 스트림의 부분을 인코딩하여 상기 인터-프레임 중 대응하는 하나를 생성하는 단계를 포함한다. 더 나아가, 이러한 방법은 버퍼 내에 저장된 데이터의 양이 제 1 임계 값을 초과하는지 여부를 결정하는 단계를 포함할 수도 있다. 버퍼 내의 데이터의 양이 제 1 임계 값을 초과하면, 이러한 방법은 생성된 인터-프레임을 디코딩하는 단계, 가상 인트라-프레임을 디코딩된 인터-프레임 데이터에 기초하여 계산하는 단계, 및 버퍼 내로의 저장을 위하여 가상 인트라-프레임을 대응하는 인터-프레임과 출력하는 단계를 포함할 수도 있다.
실시예에서, 비디오 콘텐츠 스트림의 제 1 부분은 인트라-프레임을 생성하기 위하여 인코딩될 수도 있다. 이러한 실시예에서, 제 1 부분은 인터-프레임과 연관된 비디오 콘텐츠 스트림의 부분에 선행한다.
다른 실시예에서, 버퍼링된 데이터의 양이 제 1 임계 값을 초과하지 않으면, 인코딩하는 단계는 압축된 비디오 데이터와 연관된 픽쳐-그룹 길이를 계산하는 단계를 포함할 수도 있다. 인코딩하는 단계는 계산된 픽쳐-그룹 길이가 선결정된 임계 길이를 초과하는지 여부를 결정하는 단계를 더 포함할 수도 있고, 계산된 픽쳐-그룹 길이가 선결정된 임계 길이를 초과하지 않으면, 비디오 콘텐츠 스트림의 추가적 부분은 추가적 인터-프레임을 생성하기 위하여 인코딩될 수도 있다. 이러한 실시예에서, 버퍼는 인트라-프레임 및 대응하는 인터-프레임의 하나 이상의 이전에-인코딩된 그룹을 포함할 수도 있고, 계산된 픽쳐-그룹 길이가 선결정된 임계 길이를 초과하면, 예시적인 방법은 인트라-프레임 및 대응하는 인터-프레임의 이전에-인코딩된 그룹을 폐기할 수도 있다.
추가적인 실시예에서, 인코딩하는 단계는 버퍼링된 데이터의 양이 제 1 임계 값보다 더 큰 제 2 임계 값을 초과하는지 여부를 결정하는 단계를 더 포함할 수도 있다. 이러한 실시예에서, 가상 인트라-프레임은 유지될 수도 있고, 가상 인트라-프레임에 선행하는 인코딩된 비디오 콘텐츠 버퍼링된 데이터의 양이 제 2 임계 값을 초과하면 폐기될 수도 있다.
추가적 실시예에서, 트리거링 사건을 표시하는 정보가 수신될 수도 있고, 수신된 정보에 기초하여, 예시적인 방법은 버퍼링된 데이터의 적어도 일부를 수신자에게 송신하라는 명령을 생성할 수도 있다. 이러한 실시예에서, 트리거링 사건은 비디오 콘텐츠에 대한 요청, 수신된 비디오 스트림 내의 선결정된 이벤트의 발생, 인터페이스를 통한 선결정된 데이터의 수신, 또는 센서에 의한 선결정된 이벤트의 검출 중 적어도 하나를 포함한다.
더욱이, 명령을 생성하는 단계는, 버퍼링된 데이터가 인트라-프레임 및 가상 인트라-프레임을 포함하는지 여부를 결정하는 단계를 더 포함할 수도 있다. 이러한 실시예에서, 버퍼링된 데이터가 인트라-프레임 및 가상 인트라-프레임을 포함하는 경우, 가상 인트라-프레임을 폐기될 수도 있고 대응하는 인터-프레임을 유지될 수도 있고, 버퍼링된 데이터 부분은 인트라-프레임에 기초하여 생성될 수도 있다. 추가적인 실시예에서, 예시적인 방법은 버퍼링된 데이터가 가상 인트라-프레임을 포함하고 인트라-프레임을 포함하지 않는지 여부를 결정할 수도 있고, 그리고 버퍼링된 데이터가 가상 인트라-프레임을 포함하고 인트라-프레임을 포함하지 않는 경우, 버퍼링된 데이터 부분을 가상 인트라-프레임에 기초하여 생성할 수도 있다.
또 다른 실시예에서, 예시적인 방법은 압축된 비디오 데이터의 적어도 하나의 프레임을 수신하고 디코딩하는 단계, 디코딩된 프레임이 인트라-프레임에 대응하는지 여부를 결정하는 단계, 및 디코딩된 프레임이 인트라-프레임에 대응하면 적어도 디코딩된 프레임을 데이터 저장소 내에 저장하는 단계를 더 포함할 수도 있다. 이러한 실시예에서, 이러한 방법은 디코딩된 프레임이 인터-프레임에 대응한다고 결정할 수도 있고, 디코딩된 프레임이 인터-프레임인 경우, 수신된 데이터와 연관된 픽쳐-그룹 길이를 계산할 수도 있다. 예시적인 방법은 계산된 픽쳐-그룹 길이가 선결정된 임계 길이를 초과하는지 여부를 결정할 수도 있고, 계산된 픽쳐-그룹 길이가 선결정된 임계 길이를 초과하지 않는다면, 예시적인 방법은 적어도 디코딩된 인터-프레임을 데이터 저장소 내에 저장할 수도 있다.
더 나아가, 이러한 실시예에서, 계산된 픽쳐-그룹 길이가 선결정된 임계 길이를 초과한다면, 이러한 방법은 추가적 인트라-프레임을 디코딩된 인터-프레임 데이터에 기초하여 생성할 수도 있고, 그리고 적어도 추가적 인트라-프레임을 데이터 저장소 내에 저장할 수도 있다.
추가적인 실시예에서, 압축된 비디오 콘텐츠는 비트 레이트의 대응하는 값과 연관될 수도 있고, 압축된 비디오 콘텐츠 내의 대응하는 시간적 포지션에서 적어도 하나의 스위칭 포인트가 확립될 수도 있다. 이러한 실시예에서, 스위칭 포인트는 압축된 비디오 콘텐츠의 수신자 또는 배포자 중 적어도 하나가 비트 레이트를 수정하도록 할 수도 있다.
이러한 실시예에서, 예시적인 방법은 압축된 비디오 데이터 및 스위칭 포지션과 연관되는 정보를 데이터 저장소 내에 저장하기 위한 명령을 생성할 수도 있다. 더 나아가, 스위칭 포인트를 확립할 때, 예시적인 방법은 대응하는 시간적 포지션과 연관되는 인터-프레임을 식별할 수도 있고, 식별된 인터-프레임을 디코딩하고 가상 인트라-프레임을 디코딩된 인터-프레임 데이터에 기초하여 계산할 수도 있으며, 이제 데이터 저장소 내의 저장을 위하여 시간적 포지션에서 가상 인트라-프레임을 출력할 수도 있다.
추가적 실시예에서, 인코딩하는 단계는 복수 개의 스위칭 포인트를 압축된 비디오 콘텐츠 내의 대응하는 시간적 포지션에서 확립하는 단계를 더 포함할 수도 있다. 일 실시예에서, 대응하는 시간적 포지션은 압축된 비디오 콘텐츠 내에서 고정된 간격으로 배치될 수도 있다.
추가적인 실시예에서, 예시적인 방법은 압축된 비디오 콘텐츠 내의 시간적 포지션을 식별하는 정보를 포함하는 스위칭 포지션을 생성하기 위한 요청을 수신할 수도 있고, 인코딩하는 단계는 이러한 요청에 응답하여 식별된 시간적 포지션에서 스위칭 포인트를 확립하는 단계를 더 포함할 수도 있다.
본 개시물의 다른 실시예와 일관되는, 비디오 콘텐츠의 스트림을 인코딩하여 인트라-프레임 및 복수 개의 대응하는 인터-프레임을 포함하는 압축된 비디오 데이터를 생성하도록 구성되는 비디오 코덱을 포함하는 장치가 제공된다. 이러한 장치 비디오 코덱 유닛에 커플링되며 압축된 비디오 데이터를 버퍼 내에 저장하도록 구성되는 스토리지 디바이스를 더 포함한다. 비디오 코덱은 더 나아가 인코딩된 인트라-프레임과 연관된 데이터를 획득하도록, 인트라-프레임 데이터에 기초하여, 비디오 콘텐츠 스트림의 부분을 인코딩하여 인터-프레임 중 대응하는 하나를 생성하도록, 그리고 버퍼 내에 저장된 데이터의 양이 제 1 임계 값을 초과하는지 여부를 결정하도록 구성될 수도 있다. 버퍼링된 데이터의 양이 제 1 임계 값을 초과하면, 비디오 코덱은 생성된 인터-프레임을 디코딩하고, 가상 인트라-프레임을 디코딩된 인터-프레임 데이터에 기초하여 계산하며, 그리고 버퍼 내로의 저장을 위하여 가상 인트라-프레임을 대응하는 인터-프레임과 함께 출력으로서 제공할 수도 있다.
일일 실시예에서, 비디오 코덱은 더 나아가 비디오 콘텐츠 스트림의 제 1 부분을 인코딩하여 인트라-프레임을 생성하도록 구성될 수도 있다. 이러한 실시예에서, 제 1 부분은 인터-프레임과 연관된 비디오 콘텐츠 스트림의 부분에 선행한다.
다른 실시예에서, 버퍼링된 데이터의 양이 제 1 임계 값을 초과하면, 비디오 코덱은 압축된 비디오 데이터와 연관된 픽쳐-그룹 길이를 계산하도록 구성될 수도 있다. 비디오 코덱은 또한, 계산된 픽쳐-그룹 길이가 선결정된 임계 길이를 초과하는지 여부를 결정하도록 구성될 수도 있고, 계산된 픽쳐-그룹 길이가 선결정된 임계 길이를 초과하지 않으면, 비디오 코덱은 비디오 콘텐츠 스트림의 추가적 부분을 인코딩하여 추가적 인터-프레임을 생성하도록 구성될 수도 있다. 이러한 실시예에서, 버퍼는 인트라-프레임 및 대응하는 인터-프레임의 하나 이상의 이전에-인코딩된 그룹을 포함할 수도 있고, 계산된 픽쳐-그룹 길이가 선결정된 임계 길이를 초과하면, 비디오 코덱은 더 나아가, 인트라-프레임 및 대응하는 인터-프레임의 이전에-인코딩된 그룹을 폐기하도록 구성될 수도 있다.
추가적인 실시예에서, 비디오 코덱은 버퍼링된 데이터의 양이 제 1 임계 값보다 더 큰 제 2 임계 값을 초과하는지 여부를 결정하도록 구성될 수도 있다. 이러한 실시형태에서, 비디오 코덱은 더 나아가 버퍼링된 데이터의 양이 제 2 임계 값을 초과하면, 가상 인트라-프레임을 유지하고 가상 인트라-프레임에 선행하는 인코딩된 비디오 콘텐츠를 폐기하도록 구성될 수도 있다.
추가적 실시예에서, 비디오 코덱은 더 나아가 트리거링 사건을 표시하는 정보를 수신하도록, 그리고 수신된 정보에 기초하여, 버퍼링된 데이터의 적어도 일부를 수신자에게 송신하기 위한 명령을 생성하도록 구성될 수도 있다. 이러한 실시예에서, 비디오 코덱은 더 나아가 버퍼링된 데이터가 인트라-프레임 및 가상 인트라-프레임을 포함하는지 여부를 결정하도록, 버퍼링된 데이터가 인트라-프레임 및 가상 인트라-프레임을 포함하는 경우, 가상 인트라-프레임을 폐기하고 대응하는 인터-프레임을 유지하도록, 그리고 버퍼링된 데이터 부분을 인트라-프레임에 기초하여 생성하도록 구성될 수도 있다. 추가적인 실시예에서, 비디오 코덱은 버퍼링된 데이터가 가상 인트라-프레임을 포함하고 인트라-프레임을 포함하지 않는지 여부를 결정하도록, 그리고 버퍼링된 데이터가 가상 인트라-프레임을 포함하고 인트라-프레임을 포함하지 않는 경우, 버퍼링된 데이터 부분을 가상 인트라-프레임에 기초하여 생성하도록 구성될 수도 있다.
또 다른 실시예에서, 비디오 코덱은 압축된 비디오 데이터의 적어도 하나의 프레임을 수신하고 디코딩하도록, 디코딩된 프레임이 인트라-프레임에 대응하는지 여부를 결정하도록, 그리고 디코딩된 프레임이 인트라-프레임에 대응하면 적어도 디코딩된 프레임을 데이터 저장소 내에 저장하기 위한 명령을 생성하도록 구성될 수도 있다. 이러한 실시예에서, 비디오 코덱은 또한 디코딩된 프레임이 인터-프레임에 대응한다고 결정하도록, 디코딩된 프레임이 인터-프레임인 경우, 수신된 데이터와 연관된 픽쳐-그룹 길이를 계산하도록 구성될 수도 있다. 비디오 코덱은 이제 계산된 픽쳐-그룹 길이가 선결정된 임계 길이를 초과하는지 여부를 결정하도록, 그리고 계산된 픽쳐-그룹 길이가 선결정된 임계 길이를 초과하지 않는다면, 적어도 디코딩된 인터-프레임을 스토리지 디바이스 내에 저장하기 위한 명령을 생성하도록 구성될 수도 있다.
더 나아가, 이러한 실시예에서, 비디오 코덱은 계산된 픽쳐-그룹 길이가 선결정된 임계 길이를 초과한다면, 추가적 인트라-프레임을 디코딩된 인터-프레임 데이터에 기초하여 생성하도록, 그리고 적어도 추가적 인트라-프레임을 스토리지 디바이스 내에 저장하기 위한 명령을 생성하도록 구성될 수도 있다.
추가적인 실시예에서, 압축된 비디오 콘텐츠는 비트 레이트의 대응하는 값과 연관될 수도 있고, 그리고 비디오 코덱은 압축된 비디오 콘텐츠 내의 대응하는 시간적 포지션에서 적어도 하나의 스위칭 포인트를 확립하도록 구성될 수도 있다. 이러한 실시예에서, 스위칭 포인트는 압축된 비디오 콘텐츠의 수신자 또는 배포자 중 적어도 하나가 비트 레이트를 수정하도록 할 수도 있다.
이러한 실시예에서, 비디오 코덱은 압축된 비디오 데이터 및 스위칭 포지션과 연관되는 정보를 스토리지 디바이스 내에 저장하기 위한 명령을 생성하도록 구성될 수도 있다. 비디오 코덱은 또한, 대응하는 시간적 포지션과 연관되는 인터-프레임을 식별하도록, 식별된 인터-프레임을 디코딩하고 가상 인트라-프레임을 디코딩된 인터-프레임 데이터에 기초하여 계산하도록, 그리고 스토리지 디바이스 내의 저장을 위하여 시간적 포지션에서 가상 인트라-프레임을 출력하도록 구성될 수도 있다.
추가적 실시예에서, 비디오 코덱은 복수 개의 스위칭 포인트를 압축된 비디오 콘텐츠 내의 대응하는 시간적 포지션에서 확립하도록 구성될 수도 있다. 이러한 실시형태에서, 대응하는 시간적 포지션은 압축된 비디오 콘텐츠 내에서 고정된 간격으로 배치될 수도 있다. 더욱이, 일 실시예에서, 비디오 코덱은 압축된 비디오 콘텐츠 내의 시간적 포지션을 식별하는 정보를 포함하는 스위칭 포지션을 생성하기 위한 요청을 수신하도록, 그리고 이러한 요청에 응답하여 식별된 시간적 포지션에서 스위칭 포인트를 확립하도록 구성될 수도 있다.
본 개시물의 추가적 실시예와 일관적인, 적어도 하나의 프로세서에 의하여 실행될 때 적어도 하나의 프로세서가, 비디오 콘텐츠의 스트림을 수신하는 단계, 비디오 콘텐츠 스트림을 인코딩하여 인트라-프레임 및 복수 개의 대응하는 인터-프레임을 포함하는 압축된 비디오 데이터를 생성하는 단계, 및 압축된 비디오 데이터를 버퍼 내에 저장하는 단계를 수행하도록 하는 명령을 저장하는 유형의 비 일시적 컴퓨터-판독가능 매체가 제공된다. 명령의 세트는 더 나아가 적어도 하나의 프로세서가 인코딩된 인트라-프레임을 획득하고, 인트라-프레임 데이터에 기초하여, 비디오 콘텐츠 스트림의 부분을 인코딩하여 인터-프레임 중 대응하는 하나를 생성하도록 야기할 수도 있다. 추가적으로, 명령의 세트는 적어도 하나의 프로세서가 버퍼 내에 저장된 데이터의 양이 제 1 임계 값을 초과하는지 여부를 결정하도록 야기할 수도 있다. 버퍼 내의 데이터의 양이 제 1 임계 값을 초과하면, 명령의 세트는 적어도 하나의 프로세서가 생성된 인터-프레임을 디코딩하고, 가상 인트라-프레임을 디코딩된 인터-프레임 데이터에 기초하여 계산하며, 버퍼 내로의 저장을 위하여 가상 인트라-프레임을 대응하는 인터-프레임과 출력하도록 야기할 수도 있다.
본 개시물의 다른 실시예와 일관적인, 컴퓨터-구현 방법은 통신 네트워크와 연관된 네트워크 상태를 표시하는 정보를 수신하고, 정보에 이러한 기초하여, 통신 네트워크를 통해서 송신되는 압축된 비디오 콘텐츠의 최초 비트 레이트가 네트워크 상태와 일치하는지 여부를 결정한다. 최초 비트 레이트가 네트워크 상태와 불일치하면, 압축된 비디오 콘텐츠의 최초 비트 레이트와 연관되는 스위칭 포인트가 식별된다. 스위치 포인트는 압축된 비디오 콘텐츠 내의 대응하는 시간적 포지션과 연관될 수도 있다. 비디오 코덱을 사용하여, 압축된 비디오 콘텐츠의 부분을 스위치 포인트의 시간적 포지션에서 수정된 비트 레이트로 송신하기 위한 명령이 생성된다. 이러한 일부는 수정된 비트 레이트에서 인코딩된 가상 인트라-프레임 및 대응하는 인트라-프레임을 포함할 수도 있다.
일 실시예에서, 최초 비트 레이트가 네트워크 상태와 일치하면, 예시적인 방법은 압축된 비디오 콘텐츠를 최초 비트 레이트에서 송신하기 위한 명령을 생성할 수도 있다. 더 나아가, 최초 비트 레이트가 네트워크 상태와 불일치하면, 예시적인 방법은 압축된 비디오 콘텐츠의 부분을 수정된 비트 레이트에서 획득할 수도 있다. 이러한 실시예에서, 수정된 비트 레이트는 스위치 포인트의 시간적 포지션에서 네트워크 상태와 일치할 수도 있다.
추가적 실시예에서, 예시적인 방법은 최초 비트 레이트가 네트워크 상태와 불일치하면, 네트워크 상태와 연관된 비트 레이트가 초기 비트 레이트를 초과한다고 결정할 수도 있고, 더 나아가 압축된 비디오 콘텐츠의 부분을 수정된 비트 레이트에서 획득할 수도 있다. 이러한 실시예에서, 수정된 비트 레이트는 스위치 포인트의 시간적 포지션에서 최초 비트 레이트를 초과할 수도 있다.
다른 실시예에서, 최초 비트 레이트가 네트워크 상태와 불일치하면, 예시적인 방법은 최초 비트 레이트가 네트워크 상태와 연관된 비트 레이트를 초과한다고 결정할 수도 있고, 그리고 압축된 비디오 콘텐츠의 부분을 수정된 비트 레이트에서 획득할 수도 있다. 이러한 실시예에서, 최초 비트 레이트는 스위치 포인트의 시간적 포지션에서 수정된 비트 레이트를 초과할 수도 있다.
추가적인 실시예에서, 이러한 방법은 압축된 비디오 콘텐츠 및 최초 비트 레이트를 식별하는 정보에 대한 요청을 수신하는 단계 및 압축된 비디오 콘텐츠를 이러한 요청에 응답하여 송신하기 위한 명령을 생성하는 단계를 포함할 수도 있다. 이러한 실시예에서, 이러한 방법은 압축된 비디오 콘텐츠와 연관되는 재생 정보를 송신하기 위한 명령을 생성할 수도 있다. 재생 정보는 압축된 비디오 콘텐츠 내의 스위치 포인트의 시간적 포지션을 식별하는 정보를 포함할 수도 있다.
본 개시물의 다른 실시예와 일관적인, 스토리지 디바이스 및 스토리지 디바이스에 커플링된 비디오 코덱을 포함하는 장치가 제공된다. 비디오 코덱은 통신 네트워크와 연관된 네트워크 상태를 표시하는 정보를 수신하도록, 그리고, 이러한 정보에 기초하여, 통신 네트워크를 통해서 송신되는 압축된 비디오 콘텐츠의 최초 비트 레이트가 네트워크 상태와 일치하는지 여부를 결정하도록 구성될 수도 있다. 최초 비트 레이트가 네트워크 상태와 불일치하면, 비디오 코덱은 더 나아가 압축된 비디오 콘텐츠의 최초 비트 레이트와 연관되는 스위칭 포인트를 식별하도록 구성된다. 스위치 포인트는 압축된 비디오 콘텐츠 내의 대응하는 시간적 포지션과 연관될 수도 있다. 비디오 코덱은 더 나아가 압축된 비디오 콘텐츠의 부분을 스위치 포인트의 시간적 포지션에서 수정된 비트 레이트로 송신하기 위한 명령을 생성하도록 구성된다. 이러한 일부는 수정된 비트 레이트에서 인코딩된 가상 인트라-프레임 및 대응하는 인트라-프레임을 포함할 수도 있다.
일 실시예에서, 최초 비트 레이트가 네트워크 상태와 일치하면, 비디오 코덱은 더 나아가 압축된 비디오 콘텐츠를 최초 비트 레이트에서 송신하기 위한 명령을 생성하도록 구성될 수도 있다. 비디오 코덱은 또한, 최초 비트 레이트가 네트워크 상태와 불일치하면, 압축된 비디오 콘텐츠의 부분을 수정된 비트 레이트에서 획득하도록 구성될 수도 있다. 이러한 실시예에서, 수정된 비트 레이트는 스위치 포인트의 시간적 포지션에서 네트워크 상태와 일치할 수도 있다.
추가적 실시예에서, 비디오 코덱은 더 나아가 최초 비트 레이트가 네트워크 상태와 불일치하면, 네트워크 상태와 연관된 비트 레이트가 초기 비트 레이트를 초과한다고 결정하도록, 그리고 압축된 비디오 콘텐츠의 부분을 수정된 비트 레이트에서 획득하도록 구성될 수도 있다. 이러한 실시예에서, 수정된 비트 레이트는 스위치 포인트의 시간적 포지션에서 최초 비트 레이트를 초과할 수도 있다.
다른 실시예에서, 최초 비트 레이트가 네트워크 상태와 불일치하면, 비디오 코덱은 더 나아가 최초 비트 레이트가 네트워크 상태와 연관된 비트 레이트를 초과한다고 결정하도록, 그리고 압축된 비디오 콘텐츠의 부분을 수정된 비트 레이트에서 획득하도록 구성될 수도 있다. 이러한 실시형태에서, 최초 비트 레이트는 스위치 포인트의 시간적 포지션에서 수정된 비트 레이트를 초과할 수도 있다.
추가적인 실시예에서, 비디오 코덱은 더 나아가 최초 비트 레이트를 식별하는 정보를 포함하는 압축된 비디오 콘텐츠에 대한 요청을 수신하도록, 그리고 압축된 비디오 콘텐츠를 이러한 요청에 응답하여 송신하기 위한 명령을 생성하도록 구성될 수도 있다. 비디오 코덱은 또한, 압축된 비디오 콘텐츠와 연관되는 재생 정보를 송신하기 위한 명령을 생성하도록 구성될 수도 있다. 이러한 실시예에서, 재생 정보는 압축된 비디오 콘텐츠 내의 스위치 포인트의 시간적 포지션을 식별하는 정보를 포함할 수도 있다.
본 개시물의 다른 실시예는, 적어도 하나의 프로세서에 의하여 실행될 때, 적어도 하나의 프로세서가, 통신 네트워크와 연관된 네트워크 상태를 표시하는 정보를 수신하는 단계 및 이러한 정보에 기초하여, 통신 네트워크를 통해서 송신되는 압축된 비디오 콘텐츠의 최초 비트 레이트가 네트워크 상태와 일치하는지 여부를 결정하는 단계를 수행하도록 하는 명령을 저장하는 유형의 비 일시적 컴퓨터-판독가능 매체에 관련된다. 최초 비트 레이트가 네트워크 상태와 불일치하면, 압축된 비디오 콘텐츠의 최초 비트 레이트와 연관되는 스위칭 포인트가 식별된다. 스위치 포인트는 압축된 비디오 콘텐츠 내의 대응하는 시간적 포지션과 연관될 수도 있다. 압축된 비디오 콘텐츠의 부분을 스위치 포인트의 시간적 포지션에서 수정된 비트 레이트로 송신하기 위한 명령이 생성된다. 이러한 일부는 수정된 비트 레이트에서 인코딩된 가상 인트라-프레임 및 대응하는 인트라-프레임을 포함할 수도 있다.
본 개시물의 다른 실시예는 압축된 비디오 데이터의 적어도 하나의 프레임을 포함하는 비디오 콘텐츠의 스트림을 수신하는 컴퓨터-구현 방법에 관련된다. 이러한 방법은 수신된 프레임을 디코딩하고, 디코딩된 프레임이 인터-프레임에 대응하는지 여부를 결정한다. 디코딩된 프레임이 인터-프레임이라면, 이러한 방법은 수신된 데이터와 연관된 픽쳐-그룹 길이를 계산하고 계산된 픽쳐-그룹 길이가 선결정된 임계 길이를 초과하는지 여부를 결정한다. 계산된 픽쳐-그룹 길이가 선결정된 임계 길이를 초과하면, 비디오 코덱은 추가적 인트라-프레임을 디코딩된 인터-프레임 데이터에 기초하여 생성한다. 적어도 이러한 추가적 인트라-프레임은 저장된 데이터 저장소 내에 저장된다.
일 실시예에서, 예시적인 방법은 디코딩된 프레임이 인트라-프레임에 대응하면 적어도 디코딩된 프레임을 데이터 저장소 내에 저장할 수도 있다. 예시적인 방법은 또한, 계산된 픽쳐-그룹 길이가 선결정된 임계 길이를 초과하면, 적어도 디코딩된 인터-프레임을 데이터 저장소 내에 저장할 수도 있다.
앞선 일반적 설명 및 후속하는 상세한 설명 모두가 예시적이고 오직 설명만을 위한 것이며, 청구되는 바와 같은 본 발명을 한정하는 것이 아니라는 것이 이해되어야 한다.
본 명세서에 통합되어 일부를 구성하는 첨부된 도면들은 본 발명의 실시예들을 예시하며, 발명의 상세한 설명과 함께 첨부된 특허청구범위 내에 진술된 본 발명의 원칙들을 설명하는 역할을 한다.
도 1 은 본 개시물과 일관적인 실시예가 실시될 수도 있는 예시적인 컴퓨팅 환경의 도면이다.
도 2 는 개시된 실시예과 일관적인 예시적인 온-칩 비디오 코덱의 도면이다.
도 3 은 개시된 실시예과 일관적인, 비디오 콘텐츠의 인코딩된 프레임의 예시적인 그룹을 도시한다.
도 4 는 개시된 실시예과 일관적인, 압축된 비디오 콘텐츠를 생성하고 버퍼링하기 위한 예시적인 방법의 흐름도이다.
도 5a 내지 도 5c 는 개시된 실시예과 일관적인, 가상 인트라-프레임을 포함하는 예시적인 버퍼링된 프레임 시퀀스를 예시한다.
도 6 은 개시된 실시예과 일관적인, 트리거링 사건에 응답하여 버퍼링된 비디오 콘텐츠를 송신하기 위한 예시적인 방법의 흐름도이다.
도 7 은 개시된 실시예과 일관적인, 인코딩된 비디오 콘텐츠의 픽쳐-그룹(GOP) 길이를 수정하기 위한 예시적인 방법의 흐름도이다.
도 8 은, 개시된 실시예와 일관적인, 다중 인코딩된 비디오 콘텐츠의 채널을 저장하기 위한 예시적인 데이터 구조를 도시한다.
도 9 는 개시된 실시예와 일관적인, 송신된 비디오 콘텐츠의 비트 레이트를 적응적으로 수정하기 위한 예시적인 방법의 흐름도이다.
도 10a 내지 도 10b 및 도 11a 내지 도 11b 는 개시된 실시예과 일관적인, 인코딩된 비디오 콘텐츠의 송신 비트 레이트에 대한 예시적인 조절을 도시한다.
도 12 는 개시된 실시예가 실시될 수도 있는 예시적인 컴퓨터 시스템을 도시한다.
이제 본 개시물의 예시적인 실시예에 대해 세부적으로 참조할 것인데, 이들은 첨부 도면에 도시되어 있다. 동일한 참조 번호들이 도면들 전체를 통해서 동일하거나 유사한 부분들을 참조하는데 사용될 것이다.
본 출원에서, 단수형을 사용하는 것은 구체적으로 그렇지 않다고 진술되지 않으면 복수형을 포함한다. 본 출원에서, "또는"을 사용하는 것은 달리 진술되지 않는 한 "및/또는"을 의미한다. 더욱이, 용어 "포함" 및 "포함한다" 및 "포함된"과 같은 다른 형태를 사용하는 것은 한정적이지 않다. 추가적으로, "엘리먼트" 또는 "컴포넌트"와 같은 용어는 달리 특정적으로 그렇지 않다고 진술되지 않으면 하나의 유닛 및 두 개 이상의 서브유닛을 포함하는 엘리먼트 및 컴포넌트를 망라한다. 추가적으로, 본 명세서에서 사용된 앞선 섹션들은 오직 형식적인 목적을 위해서만 사용되며 기술된 기술 요지를 한정하는 것으로 해석되어서는 안 된다.
도 1 은 본 개시물과 일관적인 실시예가 실시될 수도 있는 예시적인 컴퓨팅 환경(100)을 도시한다. 도 1 에 도시된 바와 같이, 환경(100)은 비디오 콘텐츠가 캡쳐되고, 인코딩되며, 그리고 후속하여 통신 네트워크(130)와 통신하는 다양한 위치에 저장되도록 하는 IP-기초 또는 네트워크 비디오 감시 시스템으로써 구현될 수도 있다. 도 1 의 컴포넌트의 개수 및 구성은 예시의 목적을 위하여 제공되며, 본 개시물의 당업자에게 명백하게 이해될 바와 같이, 환경(100)의 의도된 필요성 또는 목적에 따라서 컴포넌트들의 개수는 증가 또는 감소될 수도 있고 그리고/또는 컴포넌트의 구성에 수정이 가해질 수도 있다.
도 1 의 예시적인 실시예에서, 환경(100)은 통신 네트워크(130)를 통해 상호접속된 복수 개의 디지털 네트워크 카메라(102 및 104), 복수 개의 클라이언트 디바이스(112 및 114), 비디오 인코더 유닛(116), 및 비디오 관리 시스템(120)을 포함한다. 더 나아가, 도 1 에서 묘사되는 바와 같이, 하나 이상의 아날로그 카메라(들)(116A)(예를 들어, 폐쇄 회로 텔레비전(CCTV) 카메라)는 연결(150)을 통하여 하나 이상의 비디오 인코더 유닛(들)(116)과 통신하도록 배치될 수도 있다. 이러한 실시예에서, 연결(150)은 당업자에게 명백하며 아날로그 카메라(116A) 및 비디오 인코더 유닛(116)으로 그리고 그로부터 데이터를 운반할 수 있는 것을 포함하여 임의의 유선 또는 무선 연결에 대응할 수도 있다.
도 1 에서, 디지털 네트워크 카메라(102 및 104)는 연속적으로 로오 이미지 데이터를 캡쳐하도록 구성될 수도 있는데, 이것은 거의 실시간으로 인코딩되어 압축된 비디오 콘텐츠를 생성할 수도 있다. 이와 유사하게, 아날로그 카메라(116A)는 로오 이미지 데이터를 연속적으로 캡쳐하도록 구성될 수도 있는데, 이것은 후속 인코딩을 위하여 연결(150)을 거쳐 비디오 인코더 유닛(116)으로 전달될 수도 있다. 이러한 실시예에서, 네트워크 카메라(102 및 104)에 의하여 그리고 비디오 인코딩 유닛(116)에 의하여 수행된 인코딩은 연속적으로, 규정된 간격으로, 또는 선결정된 트리거링 사건에 응답하여 네트워크를 통한 송신(130)을 위하여 적합한 압축된 비디오 콘텐츠를 생성할 수도 있다.
실시예에서, 비디오 인코딩 유닛(116) 및 네트워크 카메라(102 및 104)에 의하여 획득되는 로오 이미지 데이터는 각각, 인트라-프레임(즉, I-프레임) 및 인터-프레임의 대응하는 순차적인 세트(즉, P-프레임)를 포함하는 픽쳐의 그룹(GOP)을 생성하는 차분 인코딩 기법에 따라서 인코딩될 수도 있다. 예를 들어, 로오 이미지 데이터는 고선명 비디오를 위한 H.264 표준, 고효율 비디오 코딩을 위한 H.265 표준, 또는 당업자에게 명백한 임의의 추가적 또는 대안적인 차분 인코딩 표준에 따라서 인코딩될 수도 있다.
더 나아가, 본 개시물과 일관적인 실시예들에서, 비디오 인코딩 유닛(116) 및 네트워크 카메라(102 및 104)는 네트워크(130)를 통한 후속 송신을 위하여 로오 이미지 데이터를 복수 개의 비트 레이트에서 인코딩하도록 구성될 수도 있다. 예를 들어, 로오 이미지 데이터를 인코딩하기 위하여 선택된 비트 레이트는 네트워크(130)의 상태(예를 들어, 네트워크(130)의 대역폭), 압축된 이미지 데이터의 수신자의 상태(예를 들어, 클라이언트 디바이스(102) 또는 비디오 관리 시스템(120), 또는 당업자에게 적합하며 비디오 인코딩 유닛(116) 및 네트워크 카메라(102 및 104)에 적합한 임의의 추가적 또는 대안적인 상태에 의존할 수도 있다.
다시 도 1 을 참조하면, 클라이언트 디바이스(112 및 114)는 적어도 하나의 프로세서 또는 컴퓨터-기초 시스템과 구현될 수도 있다. 예를 들어, 클라이언트 디바이스(112 및 114)는 개인용 컴퓨터, 랩탑 컴퓨터, 노트북 컴퓨터, 핸드-헬드 컴퓨터, 개인 휴대용 단말기, 휴대용 네비게이션 디바이스, 모바일 폰, 스마트 폰, 셋 톱 박스, 제 3 자 포털, 비디오 디코더 박스 또는 전용 디스플레이 디바이스가 있는 동글, 및 데이터를 네트워크(130)를 통해서 송신 및 수신하도록 동작가능한 임의의 추가적 또는 대안적인 컴퓨팅 디바이스를 포함할 수 있지만 이들로 한정되지는 않는다.
통신 네트워크(130)는 디지털 데이터 통신을 제공하기 위하여 임의의 조합의 유선 및/또는 무선 네트워크로써 구현될 수도 있다. 통신 네트워크(120)의 예는 근거리 네트워크("local area network; LAN"), 무선 LAN, 예를 들어, "WiFi" 네트워크, 다중 무선 LAN을 연결하는 무선 거대도시 네트워크(Metropolitan Area Network; MAN), 및 광역 네트워크("wide area network; WAN")를 포함한다. 몇 가지 실시예들에서, 통신 네트워크(130)는 인터넷을 포함한다. 예를 들어, 본 개시물의 실시예과 일관적인 네트워크(130)는 인터넷을 포함하고 임의의 공공연하게-액세스가능한 네트워크 또는 하이퍼텍스트 전송 프로토콜(hypertext transfer protocol; HTTP), 송신 제어 프로토콜/인터넷 프로토콜(transmission control protocol/internet protocol TCP/IP), 및 실시간 수송 프로토콜(Real-time Transport Protocol; RTP/RTCP)을 포함하지만 이들로 한정되지는 않는 하나 이상의 통신 프로토콜을 통해서 상호접속된 네트워크를 포함할 수도 있다. 더욱이, 통신 네트워크(130)는 하나 이상의 모바일 디바이스 네트워크, 예컨대 클라이언트 디바이스(112 및 114), 네트워크 카메라(102 및 104)를 허용하는 GSM 네트워크 또는 PCS 네트워크, 및 데이터를 위에서 설명된 것들을 포함하는 적용가능한 통신 프로토콜을 통해서 전송 및 수신하는 비디오 관리 시스템(120)을 더 포함할 수도 있다.
비디오 관리 시스템(120)은 비디오 관리 서버(122) 및 데이터 저장소(124)를 포함할 수도 있다. 예를 들어, 비디오 관리 서버(122)는 프론트 엔드 및 프론트 엔드와 통신하게 배치되는 백 엔드를 포함할 수도 있다. 이러한 실시예에서, 서버(122)의 프론트 및 백 엔드는 하드웨어 유닛, 예를 들어, 단일 컴퓨터, 단일 서버, 또는 당업자에게 명백한 임의의 추가적 또는 대안적인 컴퓨팅 디바이스 내에 통합될 수도 있다. 더 나아가, 일 실시예에서, 프론트 엔드는 서버(122) 상에서 실행중이며 클라이언트 디바이스(예를 들어, 클라이언트 디바이스(112 및 114)의 사용자가 데이터 저장소(124) 내에 저장된 압축된 비디오 콘텐츠에 액세스, 관리, 및 시청하도록 하는 웹 서비스와 같은 소프트웨어 애플리케이션일 수도 있다.
데이터 저장소(124)는 하나 이상의 복수 개의 비트 레이트에서 비디오 코딩 유닛(116) 및 네트워크 카메라(102 및 104)에 의하여 인코딩되는 압축된 비디오 콘텐츠를 저장할 수도 있다. 예를 들어, 위에서 논의된 바와 같이, 비디오 코딩 유닛(116) 및 네트워크 카메라(102 및 104) 중 하나 이상은 압축된 비디오 콘텐츠를 네트워크(130)를 통하여 연속적으로, 규정된 간격으로, 또는 선결정된 트리거링 사건에 응답하여 저장 기록을 위하여 데이터 저장소(124)로 송신할 수도 있다.
위에서 설명된 바와 같이, 네트워크 카메라(102 및 104) 및 비디오 코덱 유닛(116)은 대응하는 프로세서 및 스토리지 유닛과 통신하는 하나 이상의 비디오 코덱을 통합하여 로오 이미지 데이터를 획득하고, 로오 이미지 데이터를 획득하여 압축된 비디오 콘텐츠를 생성하며, 및 후속하여 압축된 비디오 데이터의 부분을 스토리지 유닛 내에 버퍼링할 수도 있다. 이러한 실시예에서, 코덱 및 프로세서는, 예를 들어 도 2 를 참조하여 아래에서 설명되는 바와 같이 센서 인터페이스 유닛, 비디오 코덱 유닛, 및 센서 인터페이스 및 비디오 코덱 유닛을 제어하고, 클라이언트 디바이스(112 및 114) 및 비디오 관리 시스템(120)과 네트워크(130)를 통하여 인터페이싱하기 위한 로직을 포함하는 처리 유닛을 포함하는 온-칩 장치로 결합될 수도 있다.
도 2 는 개시된 실시예에 따른, 이미지 데이터를 인코딩하여 압축된 비디오 콘텐츠를 생성하는 예시적인 온-칩 비디오 코덱(200)을 도시한다. 일 예로서는, 비디오 코덱(200)은 네트워크 카메라(102 및 104) 중 하나 이상 및 비디오 코딩 유닛(116) 내에 통합되어 로오 이미지 데이터를 연속적으로 인코딩하여 압축된 비디오 콘텐츠를 생성할 수도 있다.
도 2 의 예시적인 실시예에서, 비디오 코덱(200)은 센서 유닛(220), 코덱 유닛(240), 및 처리 유닛(260)을 포함한다. 더 나아가, 도 2 의 메모리 인터페이스(290)는 커플링 센서 유닛(220), 코덱 유닛(240), 및 처리 유닛(260)을 외부 스토리지 유닛(280)으로 커플링할 수도 있다. 이러한 실시예에서, 센서 유닛(220)은 로오 이미지 데이터를 수신하고 이것을 코덱 유닛(240)에 의한 인코딩을 위하여 적합한 포맷으로 처리할 수도 있다. 코덱 유닛(240)은 포매팅된 로오 이미지 데이터를 인코딩하여 압축된 비디오 데이터를 생성할 수도 있는데, 이것의 일부는 스토리지 디바이스(280) 내에 버퍼링될 수도 있다. 더 나아가, 이러한 실시예에서, 압축된 비디오 콘텐츠는 처리 유닛(260)에 의하여 생성된 명령에 응답하여 시청 및/또는 저장을 위하여 통신 네트워크(예를 들어, 네트워크(130))를 통해서 송신될 수도 있다.
더 나아가, 비록 도 2 에 도시되지는 않지만, 이미지 센서에 의하여 캡쳐된 로오 이미지 데이터는 네트워크 카메라(102 및 104) 내로 통합될 수도 있다. 개시된 실시예와 일관적인 이미지 센서는 디지털 전하-결합 디바이스(charge-coupled device; CCD) 이미지 센서 및 상보적 금속-산화물-반도체(complementary metal-oxide-semiconductor; CMOS) 이미지 센서를 포함하지만 이것으로 제한되지 않는다. 추가적으로, 비디오 인코딩 유닛(116)에 의하여 획득된 로오 이미지 데이터는 적합한 이미지 센서를 사용하여 하나 이상의 아날로그 카메라(예를 들어, 아날로그 카메라(116A)에 의하여 캡쳐될 수도 있고, 후속하여 연결(150)을 사용하여 비디오 코딩 유닛(116)으로 제공될 수도 있다.
다시 도 2 를 참조하면, 센서 유닛(220)은 이미지 데이터를 이미지 센서로부터 수신하는 센서 입력 인터페이스(222), 컬러 필터를 로오 이미지 데이터로 적용하는 바이어 패턴 프로세서(224), 및 필터링된 이미지 데이터의 포맷을 변환하는 포맷 컨버터(226)를 포함한다. 센서 유닛(220)은 이러한 예시적인 구성으로 한정되지 않으며, 추가적인 실시예에서, 센서 유닛(220)은 하나 이상의 추가적 이미지 처리 알고리즘을 실행하도록 구성될 수도 있으며, 이것은 데드 픽셀 은닉 알고리즘, 노이즈 필터링 알고리즘, 이미지 선명화(sharpening) 알고리즘, 화이트 밸런스 알고리즘, 노출 알고리즘, 및 이미지 자동초점 알고리즘을 포함하지만 이들로 한정되지는 않는다. 센서 유닛은 센서 유닛(220)이 인터페이스(290)를 통하여 스토리지 유닛(280)에 직접적으로 액세스하도록, 그리고 필터링된 이미지 데이터를 인터페이스(290)를 통하여 코덱 유닛(240)으로 제공하도록 하는 직접 메모리 액세스(direct memory access; DMA) 제어기(228)를 더 포함한다.
코덱 유닛(240)은 필터링된 이미지 데이터를 대응하는 직접적 메모리 액세스(DMA) 제어기(248)를 사용하여 인터페이스(290)를 통하여 센서 유닛(220)으로부터 수신할 수도 있는 비디오 스케일러(242)를 포함한다. 비디오 스케일러(242)에 의하여 처리되면, 스케일링된 이미지 데이터는 인코더(244) 또는 인코더(246) 중 하나 이상으로 포워딩될 수도 있다. 예를 들어, 인코더(244)는 스케일링된 이미지 데이터를 압축하여 대응하는 JPEG-압축된 이미지를 생성할 수도 있는데, 이것은 DMA 제어기(248)에 의하여 네트워크(130)를 통한 후속 송신을 위하여 스토리지 유닛(280)으로, 또는 대안적으로는, 처리 유닛(260)으로 포워딩될 수도 있다.
추가적으로 또는 대안적으로는, 인코더(246)는 스케일링된 이미지 데이터를 고선명 비디오를 위한 H.264 표준에 따라 차분하여 인코딩하여 압축된 비디오 데이터의 대응하는 프레임을 생성할 수도 있다. 예를 들어, 생성된 프레임은 대응하는 픽쳐-그룹(GOP) 길이를 가지는 차분하여-인코딩된 프레임의 그룹의 일부를 형성할 수도 있다. 이러한 실시예에서, DMA 제어기(248)는 압축된 비디오 데이터를 버퍼링을 위하여 스토리지 유닛(280)으로, 그리고 추가적으로 또는 대안적으로는, 네트워크(130)를 통한 송신을 위하여 처리 유닛(260)으로 포워딩할 수도 있다.
처리 유닛(260)은 중앙 처리 유닛(CPU)(262), 대응하는 캐시(264), 위에 요약된 통신 프로토콜 중 하나 이상을 사용하여 네트워크(130)로 연결하는 네트워크 인터페이스(266)를 포함한다. 처리 유닛은 마이크로폰으로부터 입력을 수락하고 출력을 스피커로 제공하는 청각적 인터페이스(268), 시큐어 디지털(SD) 카드를 수락하는 인터페이스(270), 및 하나 이상의 주변 디바이스(예를 들어, 키패드 또는 터치 스크린과 같은 입력/출력 디바이스, 및 예컨대 하드 디스크 또는 플래시 드라이브와 같은 외부 메모리 디바이스)와 통신하기 위한 범용 인터페이스(272)를 더 포함한다.
실시예에서, 처리 유닛(260)은 대응하는 인터페이스를 사용하여 국지적으로-액세스가능한 스토리지 디바이스(예를 들어, 범용 인터페이스(272)를 사용하는 SD 카드 인터페이스(270) 또는 플래시 디바이스)내에 압축된 비디오 콘텐츠에 저장하기 위한 신호를 생성할 수도 있다. 추가적 실시예에서, 처리 유닛(260)은 코덱 유닛(240)에 의하여 생성된 압축된 비디오 콘텐츠를 시청 또는 저장을 위하여 대응하는 수신자에게 연속적으로 송신하거나, 또는 대안적으로는, 압축된 비디오 콘텐츠를 선결정된 시간마다 시청 또는 저장을 위하여 대응하는 수신자에게 송신하기 위한 신호를 더 생성할 수도 있다. 그러나, 개시된 실시예는 국부적 저장 및 송신을 위한 이러한 매커니즘으로 한정되지 않으며, 추가적 실시예에서, 처리 유닛(260)은 압축된 비디오 콘텐츠의 전송을 트리거링하는 사건을 식별하는 네트워크 인터페이스(266), 청각적 인터페이스(268), SD 카드 인터페이스(270), 또는 일반적 I/O 인터페이스(272) 중 하나 이상으로부터 수신할 수도 있다.
예를 들어, 이러한 트리거링 사건은 클라이언트 디바이스의 사용자로부터의 요청, 센서 유닛(예를 들어, 모션 센서, 적외선 센서, 열적 센서, 및 릴레이 또는 문 접촉 센서)으로부터 수신된 신호, 청각적 인터페이스와 통신하는 마이크로폰으로부터 수신된 신호, 추가적 네트워크형 디바이스(예를 들어, 추가적 네트워크 카메라)에 의하여 생성되고 통신 네트워크(예를 들어, 네트워크(130)) 상에서 처리 유닛(260)으로 송신되는 신호 또는 알람, 또는 당업자에게 명백한 임의의 추가적 또는 대안적인 이벤트를 포함하지만 이들로 한정되는 것은 아니다. 이러한 실시예에서, 클라이언트 디바이스(예를 들어, 클라이언트 디바이스(112 또는 104))의 사용자는 구성 정보를 하나 이상의 트리거링 사건을 식별하는 네트워크 카메라(102 및 104) 중 하나 이상 및 압축된 데이터를 수신하기 위한 하나 이상의 대응하는 목적지로 제공할 수도 있다.
더 나아가, 위에서 설명된 바와 같이, DMA 제어기(248)는 압축된 비디오 콘텐츠를 스토리지 디바이스(280)로 송신할 수도 있고, 이것은 압축된 비디오 콘텐츠를 일시적으로 저장하기 위한 버퍼로서의 역할을 할 수도 있다. 트리거링 이벤트의 식별 시에, 처리 유닛(260)은 또한 버퍼링된 비디오 콘텐츠를 네트워크(130)를 통하여 시청 또는 저장을 위하여 지정된 수신자 또는 위치로 송신하기 위한 명령을 생성할 수도 있다. 이러한 실시예에서, 비디오 코덱(200)은 트리거링 사건에 후속하는 로오 이미지 데이터에 대응하는 압축된 비디오 콘텐츠뿐만 아니라, 트리거링 사건에 선행하는 선결정된 시간 기간 내에 캡쳐된 압축된 비디오 데이터의 버퍼링된 일부도 전달하는 것을 가능하게 할 수도 있다.
위에서 설명된 바와 같이, 네트워크 카메라(102 및 104)의 온-칩 코덱 시스템은 로오 이미지 데이터를 방식 고선명 비디오에 대한 H.264 표준 및 고효율 비디오 코딩에 대한 H.265 표준과 일치되는 기법을 포함하지만 이들로 한정되는 것은 아닌 하나 이상의 차분 인코딩 방식에 따라서 인코딩한다. 이러한 차분 인코딩 방식을 사용하면서, 로오 이미지 데이터는 대응하는 픽쳐-그룹(GOP) 길이를 가지며, 최초 인트라-프레임(즉, I-프레임), 및 예를 들어 도 3 을 참조하여 아래에서 설명되는 바와 같이 I-프레임에 기초하여 예측된 복수 개의 인터-프레임(즉, P-프레임)을 포함하는 프레임의 그룹으로 인코딩된다.
도 3 은 본 개시물의 실시예에 따르는, 차분적으로 인코딩된 프레임의 예시적인 그룹(300)을 도시한다. 예를 들어, 그룹(300)은 네트워크 카메라(예를 들어, 네트워크 카메라(102 및 104)) 중 적어도 하나 내에 통합된 비디오 코덱(예를 들어, 온-칩 비디오 코덱(200)) 또는 아날로그 카메라와 통신하는 비디오 코딩 유닛(예를 들어, 비디오 코딩 유닛(116))에 의하여 생성될 수도 있고, 로오 이미지 데이터에 기초하여 네트워크 카메라 및/또는 아날로그 카메라의 이미지 센서에 의하여 캡쳐될 수도 있다.
도 3 의 예시적인 실시예에서, 로오 이미지 데이터의 최초 부분은 인코딩되어 대응하는 I-프레임(302)(예를 들어, I-프레임 I1)을 형성할 수도 있다. 이러한 실시예에서, I-프레임(302)은 비디오 코덱(200)에 의한 디코딩 시에 로오 이미지 데이터의 최초 부분에 대응하는 이미지를 산출하는 자족적(self contained) 이미지를 나타낸다.
로오 이미지 데이터의 후속 부분은 차분하여 인코딩되어 I-프레임(302) 및 대응하는 시퀀스 내의 각각의 선행하는 P-프레임에 의존하는 P-프레임(304)의 그 시퀀스(예를 들어, P-프레임 P2 P3 P4 …PN-1 PN)를 산출한다. 예를 들어, 도 3 에 도시된 바와 같이, P-프레임 P2는 제 2 및 로오 데이터의 최초 부분 사이의 차분을 나타내고, 로오 데이터의 제 2 부분에 대응하는 이미지는 디코딩된 I-프레임(302) 및 디코딩된 P-프레임 P2에 기초하여 생성될 수도 있다. 이와 유사하게, P-프레임 P7에 대응하는 이미지는 I-프레임(302) 및 P-프레임 P2 내지 P7의 각각을 순차적으로 디코딩함으로써 생성될 수도 있다.
도 3 의 실시예에서, 비디오 코덱 장치(200)에 의하여 생성된 P-프레임은 단일 참조 이미지와 연관된다. 그러나, 개시된 실시예는 이러한 예시적인 차분 인코딩 방식으로 한정되지 않으며, 추가적 실시예에서는, 비디오 코덱 장치(200)가 다중 참조 이미지와 연관되는 추가적 P-프레임을 개시된 실시예의 사상 또는 범위에서 벗어나지 않으면서 생성할 수도 있다.
더 나아가, 위에서 설명된 실시예에서, 차분 코딩 기법은 비디오 코덱 장치(200)가 이전에-인코딩된 이미지 데이터(즉, 더 빠른 참조 프레임)를 참조하는 P-프레임을 생성하게 한다. 추가적 실시예에서, 비디오 코덱(200)은 또한 이전에-인코딩된 이미지 데이터(즉, 하나 이상의 더 빠른 참조 프레임) 및 후속하여-인코딩된 이미지 데이터(즉, 하나 이상의 후속 참조 프레임) 모두를 참조하는 하나 이상의 양방향성 예측된 프레임(즉, B-프레임)을 생성할 수도 있다. 예를 들어, 비디오 코덱(200)은 이러한 B-프레임을 생성하고 대응하는 P-프레임들 사이에서 포지셔닝하여 레이턴시를 증가시키고 인코딩된 비디오 콘텐츠를 송신하기 위한 장래 대역폭 요구 사항을 감소시킬 수도 있다.
다시 도 3 을 참조하면, 인코딩된 I-프레임과 연관되는 사이즈는 대응하는 인코딩된 P-프레임과 연관되는 크기보다 실질적으로 더 클 수도 있다. 예를 들어, I-프레임(302)은 사이즈에 있어서 50 킬로바이트일 수도 있는 반면에, P-프레임(304)의 각각은 로오 이미지 데이터와 연관되는 노이즈의 레벨에 의존하여 사이즈에 있어서 1 킬로바이트 내지 4 킬로바이트의 범위를 가질 수도 있다. 이러한 실시예에서, 압축된 비디오 콘텐츠와 연관되는 픽쳐-그룹(GOP) 길이는 시퀀스(300) 내의 최초 I-프레임(302)에 의존하는 P-프레임(304)의 개수를 증가시키도록 조절될 수도 있고, 이를 통하여 시퀀스(300)를 통신 네트워크(예를 들어, 도 1 의 네트워크(130))를 통하여 송신하기 위하여 필요한 비트 레이트를 감소시킨다. 예를 들어, 128 의 GOP 길이를 가지는 시퀀스를 송신하기 위하여 필요한 비트 레이트는 32 의 GOP 길이를 가지는 비슷한 시퀀스를 송신하기 위하여 필요한 비트 레이트보다 두 배 내지 네 배 더 작을 수도 있다.
위에서 설명된 바와 같이, 비디오 코덱(200)은 로컬 스토리지 유닛(예를 들어, 스토리지 유닛(280)) 내의 압축된 비디오 콘텐츠의 부분을 버퍼링하는 동시에, 압축된 비디오 콘텐츠를 네트워크(130)를 통하여 실시간 시청 또는 저장을 위하여 수신자 디바이스로 송신할 수도 있다. 이러한 실시예에서, 비디오 코덱(200)은 압축된 비디오 콘텐츠를 네트워크(130)를 통하여 송신하기 위하여 요구되는 비트 레이트를 감소시키기 위하여, 상대적으로 긴 GOP 길이(예를 들어, 128 개의 프레임 또는 그 이상)를 가지는 압축된 비디오 콘텐츠를 생성할 수도 있다. 그러나, IP-기초 비디오 감시 시스템의 컴포넌트 내에 공통적으로 통합된 버퍼의 제한된 용량(예를 들어, 300 킬로바이트의 용량) 때문에, 이러한 긴 GOP-길이 코드를 사용하면 압축된 비디오 콘텐츠의 전체 GOP를 버퍼링하는 비디오 코덱(200)의 능력을 제한할 수도 있다.
예를 들어, 다시 도 3 을 참조하면, 비디오 코덱 장치(200)는 128 프레임의 GOP 길이를 가지는 압축된 비디오 콘텐츠를 생성할 수도 있다. 이러한 실시예에서, I-프레임(302)은 저장된 50 킬로바이트를 요구할 수도 있는 반면에, 대응하는 P-프레임(304)의 각각은 사이즈에 있어서 1 킬로바이트 내지 4 킬로바이트 사이를 요구할 수도 있다. 이러한 상황에는 압축된 비디오 콘텐츠의 전체 GOP는 저장 용량의 177 킬로바이트(무잡음 프레임 데이터의 경우) 및 558 킬로바이트(잡음 프레임 데이터의 경우) 사이를 요구할 수도 있다. 이러한 실시예에서, 비디오 코덱(200)은 압축된 비디오 콘텐츠의 완전 GOP를 300 킬로바이트 버퍼 내에 버퍼링할 수 없을 수도 있는데, 이것은 GOP의 최초 I-프레임이 후속 P-프레임에 의하여 덮어쓰기될 수도 있고, 버퍼링된 콘텐츠의 수신자는 버퍼링된 콘텐츠를 디코딩하여 대응하는 이미지를 생성할 수 없을 수도 있기 때문이다.
도 4 는 본 개시물의 실시예에 따른 압축된 비디오 콘텐츠를 생성 및 버퍼링하기 위한 예시적인 방법(400)을 도시한다. 방법(400)은 비디오 코덱(예를 들어, 온-칩 코덱(200))에 의하여 긴 GOP 길이 코드를 가지는 압축된 비디오 콘텐츠를 생성하도록, 그리고 후속하여 압축된 비디오 콘텐츠를 제한된 버퍼 용량을 가지는 스토리지 유닛 내에 버퍼링하도록 구현될 수도 있다. 본 개시물로부터 당업자에게 명백할 바와 같이, 도 4 내의 동일한 것의 단계 및 정렬은 필요에 따라 수정될 수도 있다. 더욱이, 이하 방법(400)을 참조하여 설명되는 임계(예를 들어, 50% 및 90%)는 예시의 목적을 위한 것이고, 필요에 따라 수정될 수도 있다.
도 4 에서, 비디오 코덱(200)은 비디오 콘텐츠의 스트림을 단계 402 에서 수신한다. 실시예에서, 비디오 콘텐츠는 네트워크형 카메라와 연관되는 이미지 센서(예를 들어, CCD 디바이스 또는 CMOS 디바이스)에 의하여 캡쳐될 수도 있고, 후속하여 센서 유닛(예를 들어, 비디오 코덱(200)의 센서 유닛(220))에 의하여 필터링되어 도 2 의 예시적인 실시예를 참조하여 위에서 설명된 바와 같은 필터링된 비디오 콘텐츠를 생성할 수도 있다.
단계 404 에서, 비디오 코덱(200)은 수신된 비디오 콘텐츠 스트림의 최초 부분에 기초하여 인트라-프레임(즉, I-프레임)을 생성하고, 및 단계 406 에서, 비디오 코덱(200)은 과잉 용량이 대응하는 버퍼(예를 들어, 스토리지 유닛(280)의 일부) 내에 존재하는지 여부를 결정한다. 실시예에서, 비디오 코덱(200)은 단계 404 에서 로오 이미지 데이터를 고선명 비디오에 대한 H.264 표준 및 고효율 비디오 코딩에 대한 H.265 표준을 포함하지만 이들로 제한되는 것은 아닌 차분 코딩 기법에 따라 인코딩함으로써 I-프레임을 생성한다.
만일 비디오 코덱(200)이 과잉 용량이 버퍼 내에 존재한다(즉 버퍼가 풀이다)고 결정한다면, 에러 신호가 단계 408 에서 생성되고, 및 방법(400)은 단계 410 에서 종료된다. 그러나, 만일 비디오 코덱(200)이 버퍼가 풀 상태가 아니라고 결정하면, 인코딩된 I-프레임은 버퍼링되고, 수신된 비디오 콘텐츠 스트림의 추가적 부분은 비디오 코덱(200)에 의하여 인코딩되어 대응하는 인터-프레임(즉, P-프레임)을 단계 412 에서 생성한다. 이러한 실시예에서, 생성된 P-프레임은 도 3 을 참조하여 위에서 논의된 바와 같이, 수신된 비디오 콘텐츠 스트림의 최초 및 추가적 부분 간의 차분을 나타낸다.
예를 들어, P-프레임을 단계 412 에서 생성할 때, 위에서 설명된 차분 인코딩 방식(예를 들어, H.264 표준 또는 H.265 표준의 I-프레임 인코딩 기법)은 비디오 인코더(200)가 새롭게-인코딩된 P-프레임을 디코딩하여 대응하는 참조 프레임을 생성하도록 지시할 수도 있다. 이러한 실시예에서, 비디오 코덱(200)은 참조 프레임을 레버리지(leverage)하여 후속 P-프레임, 및 추가적으로 또는 대안적으로, 아래에서 논의되는 바와 같이 P-프레임에 기초하여 가상 I-프레임을 생성할 수도 있다.
단계 414 에서, 비디오 코덱(200)은 과잉 용량이 버퍼 내에 존재하는지 여부를 다시 결정한다. 만일 비디오 코덱(200)이 버퍼가 풀 상태라고 결정하면, 그러면 방법(400)은 다시 단계 408 로 돌아가서, 이 때 에러 신호가 생성되고 방법은 단계 410 에서 종료된다.
그러나, 비디오 코덱(200)이 과잉 용량 이 버퍼 내에 존재한다고 결정하면, 비디오 코덱(200)은 픽쳐의 그룹 내의 대응하는 포지션에서 생성된 P-프레임을 버퍼링하고, 단계 416 에서 버퍼링된 데이터의 양이 버퍼 용량의 임계 부분, 예를 들어, 버퍼 용량의 90%를 초과하는지 여부를 결정한다. 일 실시예에서, 90%(또는 다른 값) 임계는 버퍼가 오버플로우를 경험할(즉, 후속 프레임이 이전에-버퍼링된 프레임에 덮어쓰기 할) 임박한 위험에 있다는 것을 비디오 코덱(200)에게 표시한다.
만일 버퍼링된 데이터 양이 버퍼 용량의 90% 를 초과하지 않으면, 비디오 코덱(200)은 단계 418 에서 버퍼링된 데이터 양이 추가적 임계 부분, 예를 들어, 버퍼 용량의 50% 를 초과하는지 여부를 결정한다. 만일 버퍼링된 데이터 양이 버퍼 용량의 50%(또는 다른 값)를 초과한다면, 코덱은 단계 420 에서 이전에-버퍼링된 P-프레임에 기초하여 가상 I-프레임을 생성한다.
가상 I-프레임을 단계 420 에서 생성하기 위해서, 비디오 코덱(200)은 우선 버퍼 내에 저장된 압축된 데이터의 시퀀스 내의 최종 P-프레임을 식별할 수도 있다. 일 실시예에서, 식별된 P-프레임은 이전에 단계 412 에서 생성된 P-프레임에 대응하고, 및 비디오 코덱(200)은 식별된 P-프레임과 연관된 참조 데이터를 레버리지하여 단계 420 에서 대응하는 가상 I-프레임을 생성할 수도 있고, 이것은 버퍼 내에 대응하는 P-프레임 데이터와 저장될 수도 있다.
예를 들어, 가상 I-프레임을 생성하기 위하여, 비디오 코덱(200)은 참조 데이터를 인코딩 파라미터의 수정된 세트가 있는 대응하는 I-프레임 알고리즘(예를 들어, H.264 표준 또는 H.265 표준의 I-프레임 알고리즘)을 사용하여 인코딩할 수도 있다. 이러한 실시예에서, 가상 I-프레임을 인코딩하기 위하여 사용되는 파라미터, 예를 들어 품질 파라미터는 P-프레임 또는 다른 I-프레임을 인코딩하기 위하여 사용되는 것들과는 상이할 수도 있고, 수정된 파라미터는 P-프레임 및 I-프레임과 연관되는 양자화 레벨 보다 더 낮거나 더 높은 양자화 레벨을 가지는 가상 I-프레임을 초래할 수도 있다. 더 나아가, 추가적 실시예에서, 가상 I-프레임의 품질 파라미터는 단계 420 에서 생성된 가상 I-프레임과 연관된 양자화 에러를 감소 및/또는 최소화하기 위하여 튜닝될 수도 있다.
예를 들어, 도 5a 는 개시된 실시예에 따른 예시적인 버퍼링된 프레임 시퀀스(500)를 도시한다. 위에서 설명된 바와 같이, 비디오 코덱(200)은 최종 P-프레임(504), 예를 들어 P-프레임 P8을 저장한 이후에 버퍼링된 프레임 시퀀스(500)가 버퍼 용량의 50%를 초과한다고 결정할 수도 있다. 이러한 실시예에서, 비디오 코덱(200)은 이제 P-프레임 P8에 대응하는 참조 프레임 데이터를 대응하는 I-프레임 알고리즘(예를 들어, H.264 표준 또는 H.265 표준의 I-프레임 알고리즘)을 사용하여 재인코딩함으로써 P-프레임 P8에 대응하는 가상 I-프레임(506)을 생성할 수도 있다. 위에서 설명된 바와 같이, 비디오 코덱(200)은 자유롭게 I-프레임 알고리즘의 하나 이상의 파라미터(예를 들어, 품질 파라미터)를 수정하여 생성된 가상 I-프레임인 V8과 연관되는 양자화 에러를 감소시킬 수도 있고, 이것은 후속하여 대응하는 P-프레임 P8 및 최초 I-프레임 I1과 함께 버퍼 내에 저장될 수도 있다.
그러나, 개시된 실시예는 가상 I-프레임을 대응하는 참조 데이터에 기초하여 생성하는 기법으로 한정되지 않는다. 추가적 실시예에서, 비디오 코덱(200)은 P-프레임 P8의 로오 이미지 데이터에 대응하는 디코딩된 이미지를, 버퍼링된 시퀀스의 최초 I-프레임(502)(예를 들어, I-프레임 I1) 및 P-프레임 P2 내지 P8의 연속을 디코딩함으로써 생성할 수도 있다. 그러면 비디오 코덱(200)은 위에서 설명된 바와 같은 대응하는 I-프레임 알고리즘을 사용하여 디코딩된 이미지 데이터를 재인코딩함으로써 가상 I-프레임(506)을 생성할 수도 있다.
다시 도 4 를 참조하고 그리고 생성된 가상 I-프레임을 버퍼 내에 저장하는 것에 후속하여, 비디오 코덱(200)은 단계 422 에서 버퍼의 과잉 용량에 대한 추가적 체크를 수행할 수도 있다. 만일 비디오 코덱(200)이 버퍼가 풀 상태라고 단계 422 에서 결정할 수도 있다면, 방법(400)은 다시 에러 신호를 생성하는 단계 408 로 진행하고, 방법은 단계 410 에서 완료된다.
대안적으로는, 비디오 코덱(200)이 과잉 용량이 버퍼 내에 존재한다고 결정하면, 비디오 코덱(200)은 현재 버퍼링된 픽쳐의 그룹(GOP)의 길이를 단계 424 에서 계산할 수도 있고, 계산된 길이를 단계 426 에서 임계 길이와 비교할 수도 있다. 일 실시예에서, 임계 길이는 비디오 코덱(200)과 연관된 GOP 길이를 나타낼 수도 있고, 통신 네트워크(예를 들어, 도 1 의 통신 네트워크(130))를 통한 압축된 비디오 콘텐츠의 송신을 위하여 수락가능한 비트 레이트를 생성하기 위하여 튜닝될 수도 있다.
만일 비디오 코덱(200)이 단계 426 에서 현재 버퍼링된 GOP의 길이가 임계 길이를 초과한다고 결정하면, 현재 버퍼링된 GOP는 인코딩된 프레임의 완전한 그룹(즉, 비디오 코덱(200)에 의하여 정의된 바와 같은 완전 GOP)을 나타낸다. 그러면 비디오 코덱(200)은 단계 428 에서(예를 들어, 처리 유닛(260)을 사용하여) 현재 버퍼링된 GOP를 유지하고 임의의 이전에-인코딩된 GOP를 버퍼로부터 폐기하라는 명령을 생성할 수도 있다. 예를 들어, 도 5b 에서 묘사되는 바와 같이, 현재 버퍼링된 GOP(510)의 길이가 비디오 코덱(200)의 GOP 길이를 초과한다면, 버퍼는 현재 완전한 버퍼링된 GOP(510) 및 종래의 완전 GOP(508) 모두를 포함한다. 이러한 실시예에서, 완료된 GOP(508) 및 임의의 대응하는 가상 I-프레임은 단계 428 에서 폐기되고, 프레임(510)은 버퍼 내에 남겨진다. 도 4 의 예시적인 방법은 다시 단계 404 로 진행하고, 코덱은 비디오 콘텐츠 스트림에 기초하여 추가적 I-프레임을 생성한다.
단계 426 을 다시 참조하면, 현재 버퍼링된 GOP의 길이가 임계 길이를 초과하지 않으면, 버퍼는 인코딩된 프레임의 불완전 그룹과 연관된 I-프레임을 포함한다. 이러한 실시예에서, 방법(400)은 단계 412 으로 다시 진행하고, 코덱은 이전에-버퍼링된 I-프레임과 연관되는 추가적 P-프레임을 생성한다.
단계 418 을 다시 참조하면, 비디오 코덱(200)이 버퍼링된 데이터 양이 버퍼 용량의 50%를 초과하지 않으면, 비디오 코덱(200)은 버퍼가 오버플로우의 위험에 있지 않다고 결정할 수도 있다. 이러한 실시예에서, 방법(400)은 직접적으로 단계 424 로 진행하고, 비디오 코덱(200)은 버퍼링된 프레임과 연관되는 GOP 길이를 위에서 설명된 바와 같이 계산한다.
단계 416 을 다시 참조하면, 비디오 코덱(200)이 버퍼링된 데이터 양이 버퍼 용량의 90%를 초과한다고 결정하면, 버퍼는 오버플로우의 임박한 위험에 있을 수도 있다. 이러한 실시예에서, 비디오 코덱(200)은 후속하여 단계 432 에서 버퍼링된 프레임이 가상 I-프레임을 포함하는지 여부를 결정할 수도 있다. 버퍼링된 프레임이 가상 I-프레임을 포함한다면, 비디오 코덱(200)은 신규 GOP를 단계 434 에서 가상 I-프레임에 기초하여 생성한다. 그러면, 예를 들어 도 5c 를 참조하여 아래에서 설명되는 바와 같이 코덱은 가상 I-프레임 이전에 버퍼링된 프레임, 및 가상 I-프레임에 대응하는 P-프레임을 폐기할 수도 있다.
예를 들어, 도 5c 에서 묘사되는 바와 같이, 비디오 코덱(200)은 단계 416 에서 버퍼링된 프레임(560)이 버퍼 용량의 90%를 초과한다고 결정할 수도 있고, 더 나아가 단계 432 에서 버퍼가 가상 I-프레임, 즉, 가상 I-프레임 V8을 포함한다고 결정할 수도 있다. 그러면 비디오 코덱(200)은 신규 GOP(562)를 가상 I-프레임 V8에 기초하여 생성할 수도 있고, 후속하여 V8 이전에 버퍼링된, V8이 그로부터 유도되는 P-프레임 P8을 포함하는 프레임(564)을 폐기할 수도 있다.
다시 도 4 를 참조하면, 단계 434 에서 신규 GOP의 생성 시에, 방법(400)은 단계 424 으로 다시 진행하고, 비디오 코덱(200)은 위에서 설명된 바와 같이 신규 GOP에 대응하는 GOP 길이를 계산한다. 이와 유사하게, 비디오 코덱(200)이 단계 432 에서 버퍼가 가상 I-프레임을 포함하지 않는다고 결정하면, 방법(400)은 역시 단계 424 으로 다시 진행하고, 비디오 코덱(200)은 현재-버퍼링된 프레임과 연관되는 GOP 길이를 계산한다.
위에서 설명된 실시예에서, 예시적인 방법(400)은 비디오 코덱(예를 들어, 비디오 코덱(200)) 압축된 비디오 콘텐츠의 단일의 완료된 GOP를 버퍼링하도록 최적화될 수도 있다. 개시된 실시예는 이러한 최적화된 기법으로 한정되지 않으며, 추가적 실시예(도 4 에서 미도시)에서, 도 4 의 예시적인 방법은 비디오 코덱(200)이 복수 개의 완전 GOP 압축된 비디오 콘텐츠를 대응하는 버퍼 내에 저장하고, 추가적으로 또는 다르게는, 개시된 실시예의 범위의 사상으로부터 벗어나지 않으면서 압축된 비디오 콘텐츠의 완전 GOP의 하나 이상의 선-결정된 또는 적응적으로-결정된 부분을 저장하게 하도록 수정될 수도 있다.
더 나아가, 추가적 실시예에서, 도 4 의 예시적인 기법은 하나 이상의 에러 핸들링 기능 및 하나 이상의 송신 기능과 결합하여 압축된 비디오 콘텐츠를 통신 네트워크(예를 들어, 네트워크(130)) 상에서 수신자(예를 들어, 클라이언트 디바이스(112) 또는 데이터 저장소(124))에게 전달할 수도 있다. 예를 들어, 개시된 실시예와 일관적인 송신 기능은 비디오 코덱(200)이 송신을 위한 압축된 비디오 콘텐츠의 GOP를 식별하고, 식별된 GOP의 부분의 송신을 개시하며, 그리고 식별된 GOP를 송신 프로세스의 완료시까지 버퍼 내에 "로킹(lock)"하도록 할 수도 있다. 이러한 실시예에서, 비디오 코덱(200)은 송신 프로세스가 성공적으로 완료된 이후까지 압축된 비디오 콘텐츠의 식별된 GOP를 삭제하거나 덮어쓰기할 수 없을 수도 있다.
위에서 설명된 바와 같이, 버퍼링된 비디오 콘텐츠는 I-프레임, 하나 이상의 대응하는 P-프레임, 및 추가적으로 또는 대안적으로는, 더 빠른 참조 프레임 및 후속 참조 프레임 모두를 참조하는 하나 이상의 양방향성 예측된 프레임(즉, B-프레임)을 가지는 비디오의 그룹을 포함할 수도 있다. 예를 들어, B-프레임은 비디오 코덱(200)에 의하여 GOP의 P-프레임의 쌍들 사이에 삽입될 수도 있다(예를 들어, 시퀀스 IBBPBBPBBP…로).
비록 도 4 에서는 도시되지 않지만, 개시된 실시예와 일관적인 예시적인 방법은 가상 I-프레임을 P-프레임과 연관된 참조 데이터뿐만 아니라 B-프레임과 연관된 참조 데이터에도 기초해서 생성할 수도 있다. 예를 들어, 가상 I-프레임을 대응하는 B-프레임에 기초하여 생성하기 위한 기법은 인코딩된 비디오 콘텐츠의 송신 순서를 수정할 수도 있고, 더 나아가 변환을 설명하기 위하여 B-프레임에 후속하는 시간적 포지션에 배치된 프레임 데이터를 정정할 수도 있다. 이러한 실시예에서, 가상 I-프레임을 B-프레임에 기초하여 생성하는 것은, 독립적으로-디코딩가능한 시작 포인트, 또는 IDR-프레임(순시 디코더 리프레시 프레임)을 버퍼링된 비디오 콘텐츠 내에 생성할 수도 있다.
위에서 설명된 프로세스를 사용하면, 비디오 코덱(200)은 H.264 또는 H.265 표준에 따른 비디오 데이터의 긴 GOP-길이 인코딩 및 인코딩된 프레임 데이터의 제한된 버퍼 메모리를 가진 네트워크 카메라(예를 들어, 도 1 의 네트워크 카메라(102)) 내로의 버퍼링 모두를 지원할 수도 있다. 이러한 실시예에서, 도 4 의 예시적인 프로세스는 비디오 코덱(200)이 트리거링 사건에 응답하여, 이벤트에 후속하여 캡쳐된 인코딩된 비디오 콘텐츠뿐만 아니라, 수신자에게 사건 직전에 캡쳐된 비디오를 제공하는 버퍼링된 비디오 콘텐츠도 수신자에게 제공하도록 할 수도 있다.
예를 들어, 트리거링 사건은 수신자(예를 들어, 클라이언트 디바이스(112))에 의하여 네트워크(130)를 통하여 송신된 비디오 콘텐츠에 대한 요청을 포함하지만 이것으로 한정되는 것은 아니다. 이러한 실시예에서, 클라이언트 디바이스(112)의 사용자는 네트워크 카메라(예를 들어, 네트워크 카메라(102))에 의하여 캡쳐된 스트리밍된 비디오 콘텐츠를 시청하고 있을 수도 있고, 스트리밍된 콘텐츠 내에서 발생하는 사건에 응답하여, 사건 직전 및 직후에 캡쳐된 비디오 콘텐츠의 전달을 요청할 수도 있다. 이런 경우들에서, 사용자는 네트워크 카메라(102)와 연관되는 웹 페이지 또는 다른 그래픽 사용자 인터페이스에 액세스하여 비디오 콘텐츠의 전달을 요청하고, 추가적 또는 대안적으로, 콘텐츠의 수신자를 지정한다. 더 나아가, 이러한 실시예에서, 사용자는 또한 사건 직전에 그리고 직후에 캡쳐된 비디오 콘텐츠를 네트워크 카메라 또는 비디오 디코더 박스와 통합된 스토리지 디바이스, 예를 들어, SD 카드 또는 플래시 메모리 디바이스로부터 획득할 수도 있다.
개시된 실시예는 네트워크형 디바이스의 사용자에 의하여 개시되는 요청으로 한정되지 않으며, 추가적 실시예에서, 비디오 코덱(200)은 비디오 코덱(200)이 캡쳐된 로오 이미지 데이터의 일부 내의 트리거링 사건을 식별하도록 하는 기능성(예를 들어, CPU(262)에 의하여 실행되는 하나 이상의 소프트웨어 애플리케이션)을 포함할 수도 있다. 예를 들어, 이러한 트리거링 사건은 로오 이미지 데이터의 부분 내에서 나타나는 특정한 개인, 로오 이미지 데이터 내에서 발생하는 특정 동작, 고요한 기간 이후의 레이트 이미지 데이터 내의 모션, 또는 비디오 코덱(200)의 기능성에 의하여 검출될 수 있는 임의의 추가적 또는 변경 이벤트를 포함할 수 있지만 이들로 한정되는 것은 아니다. 더 나아가, 이러한 실시예에서, 클라이언트 디바이스(112)의 사용자는 비디오 코덱(200)과 연관되는 웹 페이지 또는 다른 그래픽 사용자 인터페이스(예를 들어, 네트워크 카메라(102) 내에 포함된 것과 같음)에 액세스하여 비디오 코덱(200)에 의한 검출을 위한 하나 이상의 트리거링 이벤트를 특정할 수도 있다.
더욱이, 추가적 실시예에서, 비디오 코덱(200)은 트리거링 사건을 하나 이상의 외부 센서에 의하여 생성된 신호에 기초하여 검출할 수도 있다. 예를 들어, 비디오 코덱(200)은 열 센서, 모션 센서, 방사선 센서, 음향 센서, 문 또는 릴레이 접촉 센서, 및 적외선 센서를 포함하지만 이들로 한정되는 것은 아닌 하나 이상의 센서와 통신하여, 비디오 코덱(200) 주위(예를 들어, 비디오 코덱(200)을 통합하는 네트워크 카메라(102) 주위)의 상태에 기초하여 하나 이상의 트리거링 이벤트를 검출할 수도 있다. 이러한 실시예에서, 센서는 통신 네트워크(130)를 통하여, 또는 대안적으로는 하나 이상의 인터페이스(예를 들어, 인터페이스(246, 268, 250, 및 252))를 사용하는 유선 또는 무선 접속을 통하여 비디오 코덱(200)과 통신하고 있을 수도 있다. 트리거링 사건의 검출 시에, 비디오 코덱은 버퍼링된 데이터의 부분을 예를 들어 도 6 을 참조하여 아래에서 설명되는 바와 같이 지정된 수신자에게 송신하기 위한 명령을 생성할 수도 있다.
도 6 은 개시된 실시예과 일관적인, 트리거링 사건에 응답하여 버퍼링된 비디오 콘텐츠를 송신하기 위한 예시적인 방법(600)을 도시한다. 이러한 방법(600)은 비디오 코덱(예를 들어, 온-칩 비디오 코덱(200))이 트리거링 사건을 식별하고 후속하여 수신자로의 송신을 위한 버퍼링된 데이터의 부분을 생성하게 하는 기능성을 제공할 수도 있다.
단계 602 에서, 비디오 코덱(200)은 트리거링 사건을 표시하는 정보를 수신할 수도 있다. 일 실시예에서, 그리고 위에서 설명된 바와 같이, 트리거링 사건 정보는 클라이언트 디바이스(예를 들어, 클라이언트 디바이스(112))의 사용자로부터의 압축된 비디오 콘텐츠에 대한 요청, 비디오 코덱(200)에 의하여 수신된 로오 이미지 데이터 내의 선결정된 이벤트의 발생, 선결정된 타입의 로오 이미지 데이터의 수신, 또는 비디오 코덱(200)과 통신하는 센서 또는 네트워크형 디바이스에 의한 선결정된 이벤트의 검출을 포함할 수도 있지만 이들로 한정되는 것은 아니다.
더 나아가, 위에서 논의된 바와 같이, 트리거링 사건 정보는 비디오 코덱(200)의 인터페이스(예를 들어, 인터페이스(246, 248, 250, 및 252) 중 하나 이상)에 의하여 클라이언트 디바이스, 감지 디바이스, 릴레이 또는 문 접촉 센서, 추가적 네트워크 디바이스에 의하여 송신된 알람, 또는 비디오 코덱(200)에 적합하고 통신 네트워크(130)를 통하여 비디오 코덱(200)과 통신하는 임의의 추가적 또는 다른 디바이스로부터 수신될 수도 있다. 이러한 실시예에서, 클라이언트 디바이스(112)의 사용자는 비디오 코덱(200)을 웹 페이지 또는 적합한 그래픽 사용자 인터페이스를 사용하여 액세스할 수도 있고, 비디오 코덱(200)에 의한 압축된 비디오 콘텐츠의 송신을 초래할 하나 이상의 트리거링 사건을 확립할 수도 있다.
다시 도 6 을 참조하면, 그리고 트리거링 사건 정보의 수신 시에, 비디오 코덱(200)은 버퍼링된 프레임 데이터(예를 들어, 스토리지 디바이스(280) 내에 있음)에 액세스하여 단계 604 에서 현재 버퍼 내에 저장된 프레임의 최장 유효 시퀀스를 식별할 수도 있다. 예를 들어, 단계 604 에서, 비디오 코덱(200)은 버퍼 내의 최초에-인코딩된 I-프레임을 최장 유효 시퀀스라고 식별할 수도 있고, 또는 버퍼링된 I-프레임의 부재 시에는, 단계 604 에서 식별된 최장 유효 시퀀스는 최초-생성된 가상 I-프레임과 연관된 시퀀스에 대응할 수도 있다.
단계 606 에서, 비디오 코덱(200)은 단계 604 에서 식별된 시퀀스의 최초 인코딩된 프레임이 I-프레임 또는 가상 I-프레임인지 여부를 결정한다. 최초 인코딩된 프레임이 I-프레임에 대응하면, 비디오 코덱(200)은 대응하는 P-프레임 데이터를 유지하는 반면에 단계 608 에서 식별된 시퀀스 내의 임의의 가상 I-프레임 데이터를 폐기할 수도 있다.
단계 610 에서, 비디오 코덱(200)은 후속 송신을 위한 적어도 I-프레임을 포함하는 버퍼링된 시퀀스에 대한 픽쳐의 그룹(GOP)을 생성할 수도 있고, 단계 612 에서, 비디오 코덱(200)은 버퍼링된 GOP를 지정된 수신자에게 송신하기 위한 명령을 생성한다. 실시예에서, 클라이언트 디바이스(예를 들어, 클라이언트 디바이스(112 및 114) 중 하나)의 사용자는 네트워크(130)를 통한 비디오 코덱(200)과의 통신 세션을 확립할 수도 있고, 적합한 그래픽 사용자 인터페이스의 웹 페이지에 액세스하여 지정된 수신자를 특정할 수도 있다. 예를 들어, 지정된 수신자는 클라이언트 디바이스(112 및 114) 중 하나, 비디오 관리 시스템(120), 및 사용자에게 액세스가능하고 네트워크(130)를 통하여 비디오 코덱(200)과 통신하는 임의의 추가적 또는 대안적인 디바이스를 포함할 수도 있지만 이들로 한정되는 것은 아니다. 방법(600)은 후속하여 단계 614 에서 완료된다.
그러나, 식별된 시퀀스의 최초 인코딩된 프레임이 단계 606 에서 가상 I-프레임에 대응하면, 그 I-프레임에 대응하는 버퍼링된 데이터는 덮어쓰여졌을 수도 있다. 이러한 실시예에서, 비디오 코덱(200)은 단계 616 에서 최초 가상 I-프레임과 연관된 P-프레임 데이터(및 식별된 시퀀스 내의 추가적인 임의의 후속 가상 I-프레임 데이터)를 폐기하고, 단계 618 에서 도 5C를 참조하여 위에서 개략화된 바와 같이 GOP를 생성한다.
방법(600)은 단계 612 으로 다시 진행하고, 비디오 코덱(202)은 버퍼링된 GOP를 지정된 수신자로 송신하기 위한 명령을 생성한다. 이러한 방법은 단계 614 에서 후속하여 완료된다.
위에서 설명된 실시예에서, 비디오 코덱(200)은 통신 네트워크(130)를 통한 스트리밍 전달을 위하여 적합한 픽쳐-그룹(GOP) 길이(예를 들어, 128 프레임의 GOP 길이)에서 인코딩된 비디오 콘텐츠를 버퍼링할 수도 있고 후속하여 버퍼링된 비디오 콘텐츠의 부분을 선결정된 트리거링 사건에 응답하여 지정된 수신자로 전달할 수도 있다. 예를 들어, 위에서 설명된 바와 같이, 버퍼링된 비디오 콘텐츠의 완전한 유효 시퀀스는 최초 I-프레임(또는 최초 가상 I-프레임), 하나 이상의 가상 I-프레임, 및 하나 이상의 대응하는 P-프레임을 포함할 수도 있다. 도 6 의 실시예를 사용하면, 최초 I-프레임(또는 가상 I-프레임)에 후속하는 가상 I-프레임 데이터는 대응하는 P-프레임에 대한 송신 이전에 폐기될 수도 있다. 이러한 실시예에서, 버퍼링된 비디오 콘텐츠의 결과적인 시퀀스의 송신 비트 레이트는 통신 네트워크(130)와 함께 동작하는 수신자(예를 들어, 클라이언트 디바이스(112 및 114))에게 수락가능한 레벨로 감소될 수도 있다.
더욱이, 이러한 실시예에서, 비디오 코덱(200)은 또한 인코딩된 비디오 콘텐츠를 네트워크(130)를 통하여 연속적으로, 규정된 간격마다, 또는 트리거링 사건에 응답하여 실시간 시청 및/또는 연속 기록을 위하여 수신자 디바이스로 송신할 수도 있다. 예를 들어, 비디오 코덱(200)은 인코딩된 비디오 콘텐츠를 저장되고 후속하여 IP-기초 감시 네트워크의 사용자(예를 들어, 클라이언트 디바이스(112 및 114))의 사용자)에 의하여 취출되기 위하여 통신 네트워크(130) 내의 데이터 저장소(예를 들어, 데이터 저장소(124))로 송신할 수도 있다.
그러나, 인코딩된 비디오 콘텐츠의 GOP 길이가 인코딩된 비디오 콘텐츠를 통신 네트워크(130)를 통하여 송신하기 위하여 필요한 비트 레이트를 감소시킬 수도 있고, 이러한 GOP 길이의 인코딩된 비디오 콘텐츠의 후속 스토리지는 사용자에게 불편한 후속 액세스를 렌더링할 수도 있다. 예를 들어, 네트워크를 통한 송신(130)을 위해 적합한 긴 GOP 길이(예를 들어, 128 개의 프레임)를 사용하면, 사용자가 저장된 비디오 콘텐츠의 부분에 무작위로 액세스하고 콘텐츠를 브라우징하거나 이것에서 스킵하는 능력을 제한할 수도 있다. 이러한 실시예에서, 인코딩된 비디오 콘텐츠의 GOP 길이는 지정된 수신자 또는 지정된 수신자의 사용자의 요구 사항에 따라서 예를 들어 도 7 을 참조하여 아래에서 설명되는 바와 같이 튜닝될 수도 있다.
도 7 은 본 개시물의 실시예에 따른 인코딩된 비디오 콘텐츠의 픽쳐-그룹(GOP) 길이를 수정하기 위한 예시적인 방법(700)을 도시한다. 방법(700)은 인코딩된 비디오 콘텐츠의 지정된 수신자(예를 들어, 비디오 관리 시스템(120)의 데이터 저장소(124))가 저장 이전에 인코딩된 비디오 콘텐츠의 GOP 길이를 적응적으로 수정하도록 하는 기능성을 제공할 수도 있다.
도 7 에서, 데이터 저장소(124)는 GOP 카운터를 단계 702 에서 1 로 재설정할 수도 있고, 후속하여 단계 704 에서 압축된 비디오 콘텐츠의 프레임을 수신할 수도 있다. 이러한 실시예에서, 압축된 비디오 콘텐츠는 네트워크 카메라의 비디오 코덱(예를 들어, 온-칩 코덱(200))으로부터 통신 네트워크(130)를 통해서 수신될 수도 있고, 인코딩된 비디오 콘텐츠는 네트워크(130)의 하나 이상의 상태와 일치하여 튜닝되는 GOP 길이와 연관될 수도 있다. 더 나아가, 인코딩된 비디오 콘텐츠는 고선명 비디오를 위한 H.264 표준 및 고효율 비디오 코딩을 위한 H.265 표준을 포함하지만 이들로 한정되는 것은 아닌 다수 개의 적합한 차분 코딩 방식에 따라 생성될 수도 있다,
단계 706 에서, 수신된 프레임은 디코딩된 대응하는 차분 코딩 기법에 따라 디코딩될 수도 있다. 데이터 저장소(124)는 후속하여 디코딩된 프레임이 인트라-프레임(즉, I-프레임)에 대응하는지 여부를 단계 708 에서 결정할 수도 있다.
만일 디코딩된 프레임이 I-프레임에 대응한다면, 데이터 저장소(124)는 단계 710 에서 신규 GOP를 수신된 I-프레임에 기초하여 확립할 수도 있다. GOP 카운터는 단계 712 에서 1 로 재설정할 수도 있고, 이를 통하여 신규 GOP의 확립을 표시하고, 데이터 저장소(124)는 디코딩된 프레임 데이터를 단계 714 에서 저장할 수도 있다.
단계 714 에서의 디코딩된 프레임 데이터의 저장 시에, 데이터 저장소(124)는 단계 716 에서 추가적 인코딩된 비디오 콘텐츠가 처리를 위하여 이용가능한지 여부를 결정할 수도 있다. 만일 추가적 콘텐츠가 처리를 위하여 이용가능하다면, 예시적인 방법(700)은 단계 704 으로 다시 진행하고, 데이터 저장소(124)는 처리를 위하여 인코딩된 비디오 콘텐츠의 추가적 프레임을 획득할 수도 있다. 그러나, 데이터 저장소(124)가 처리를 위하여 이용가능한 추가적 비디오 콘텐츠가 없다고 결정하면, 예시적인 방법(700)은 단계 718 에서 완료된다.
단계 708 을 다시 참조하면, 데이터 저장소(124)가 디코딩된 프레임이 인터-프레임(즉, P-프레임)에 대응한다고 결정하면, 지정된 수신자는 단계 720 에서 디코딩된 프레임의 개수가 임계 값을 초과하는지 여부를 결정할 수도 있다. 이러한 실시예에서, GOP 카운터의 현재 값은 현재 GOP과 연관되는 디코딩된 프레임의 개수를 표시할 수도 있고, 임계 값은 데이터 저장소 내에 저장된 비디오 콘텐츠의 최대 GOP 길이로 튜닝될 수도 있다.
예를 들어, 수신된 비디오 콘텐츠는 128 개의 프레임의 GOP 길이를 사용하여 인코딩될 수도 있는 반면에 저장된 비디오 콘텐츠는 사용자가 더 효과적으로 취출 시에 비디오 콘텐츠를 브라우징하게 하는 더 작은 GOP 길이(예를 들어, 32 개의 프레임)와 연관된다. 이러한 실시예에서, 임계 값은 데이터 저장소(124) 또는 데이터 저장소(124)의 사용자와 연관된 고정된 값일 수도 있고, 또는 대안적으로는, 임계 값은 사용자 입력에 응답하여 가변일 수도 있다.
저장된 디코딩된 프레임의 개수가 임계 값을 초과하지 않으면, GOP 카운터는 단계 722 에서 1 만큼 증분될 수도 있다. 예시적인 방법(700)은 단계 714 으로 다시 진행할 수도 있고, 데이터 저장소(124)는 위에서 설명된 바와 같이 GOP내의 대응하는 포지션에 디코딩된 P-프레임을 저장할 수도 있다.
그러나, 데이터 저장소(124)가 저장된 디코딩된 프레임의 개수가 임계 값을 초과한다고 단계 720 에서 결정하면, 지정된 수신자는 단계 724 에서 가상 I-프레임을 디코딩된 P-프레임에 기초하여 생성할 수도 있고, 단계 726 에서 신규 GOP를 가상 I-프레임에 기초하여 생성할 수도 있다. 도 5a 내지 도 5c 를 참조하여 위에서 개략화된 이러한 실시예에서, 단계 726 에서 신규 GOP를 생성하면 가상 I-프레임을 GOP 생성의 목적을 위하여 대응하는 I-프레임으로 효과적으로 변환한다.
단계 726 에서 신규 GOP의 생성 시에, 예시적인 방법(700)은 단계 712 로 다시 진행하고, GOP 카운터는 1 로 재설정된다. 데이터 저장소(124)는 후속하여 단계 714 에서 가상 I-프레임 데이터를 저장하여 신규 GOP를 형성할 수도 있고, 데이터 저장소(124)는 단계 716 에서 추가적 인코딩된 비디오 콘텐츠가 위에서 개략화된 바와 같이 처리를 위하여 이용가능한지 여부를 결정할 수도 있다. 예시적인 방법(700)은 단계 718 에서 완료된다.
위에서 설명된 실시예에서, 비디오 관리 시스템(120)의 데이터 저장소(124)는 저장 이전에 인코딩된 비디오 콘텐츠의 GOP 길이를 적응적으로 수정할 수도 있다. 이러한 실시예에서, 데이터 저장소(124)는 인코딩된 비디오 콘텐츠의 지정된 수신자에 대응하고, 이것은 네트워크 카메라(102 및 104) 및 비디오 코딩 유닛(116) 중 하나 이상과 통신하는 사용자에 의하여 특정될 수도 있다. 개시된 실시예는 이러한 예시적인 수신자로 한정되지 않으며, 추가적 실시예에서, 인코딩된 비디오 콘텐츠의 지정된 수신자는 클라이언트 디바이스(112 및 114), 데이터 저장소(124)와 코디네이션할 수도 있는 비디오 관리 서버(122), 및 네트워크(130)를 통해서 통신하여 인코딩된 비디오 콘텐츠를 수신할 수 있는 임의의 추가적 또는 대안적 디바이스 중 하나 이상을 포함할 수도 있지만 이들로 한정되는 것은 아니다.
위에서 설명된 프로세스들을 사용하면, 비디오 코덱(예를 들어, 온-칩 코덱(200))은 가상 I-프레임을 생성하고 레버리지하여 제한된 스토리지 용량의 디바이스 내의 긴 GOP 길이 내에 인코딩된 비디오 콘텐츠를 버퍼링할 수도 있다. 더 나아가, 인코딩된 비디오 콘텐츠의 지정된 수신자(예를 들어, 데이터 저장소(124))에서 동작하는 유사한 비디오 코덱은 이러한 가상 I-프레임을 생성하여 저장 이전에 인코딩된 비디오 콘텐츠 GOP 길이를 적응적으로 튜닝할 수도 있다. 이러한 실시예에서, 가상 I-프레임을 생성하여 인코더(예를 들어, 네트워크 카메라(102)) 및 디코더(예를 들어, 데이터 저장소(124) 또는 클라이언트 디바이스(112 및 114))에 배치된 비디오 코덱에 의하여 사용하면, 통신 네트워크(예를 들어, 도 1 의 네트워크(130))를 통한 인코딩된 비디오 콘텐츠의 송신에 대한 수락가능한 비트 레이트를 초래한다.
그러나, 개시된 실시예는 이러한 정적 송신 비트 레이트로 한정되지 않는다. 개시된 실시예와 일관적인 비디오 코덱은 복수 개의 송신 비트 레이트(예를 들어, 3 개의 비트 레이트)에서 동일한 비디오 콘텐츠를 인코딩할 수도 있고, 이것은 클라이언트 디바이스로의 후속 송신을 위하여 외부 데이터 저장소 내에 저장될 수도 있다. 이러한 실시예에서, 클라이언트 디바이스는 변화하는 네트워크 상태에 응답하여 그래픽 사용자 인터페이스를 통하여 또는 프로그램적으로 다양한 비트 레이트에서의 인코딩된 비디오 콘텐츠의 전달을 요청하도록 구성될 수도 있다.
그러나, 인코딩된 비디오 콘텐츠의 송신 비트 레이트에 대한 수정을 요청하는 클라이언트 디바이스의 능력은 다양한 송신 비트 스트림과 연관되는 GOP 길이에 의하여 제한될 수도 있다. 예를 들어, 더 낮은 비트 레이트를 가지는 인코딩된 비디오 콘텐츠는 더 긴 GOP 길이와, 그리고 이를 고려하여, 더 높은 송신 비트 레이트에서 인코딩된 비디오 콘텐츠의 대응하는 부분보다 연속 I-프레임들 사이의 더 긴 간격에 연관될 수도 있다. 이러한 실시예에서, GOP 길이에서의 차이는 다양한 송신 비트 레이트에서 인코딩된 비디오 콘텐츠 사이에 끊김없이 스위칭하는 클라이언트 디바이스의 능력을 제한할 수도 있다.
추가적 실시예에서, 비디오 코덱은 인코딩된 콘텐츠의 스트림의 다양한 시간적 포지션에서 가상 I-프레임을 생성하여 수신자 디바이스가 인코딩된 비디오 콘텐츠의 송신 도중에 비트 레이트를 수정하도록 할 수도 있다. 예를 들어, 그리고 위에서 논의된 바와 같이, 비디오 코덱은 3 개의 비트 레이트(예를 들어, "낮은," "매체," 및 "높은")에서 비디오 콘텐츠를 인코딩하여 인코딩된 비디오 콘텐츠의 3 개의 채널을 생성하는 기능성을 포함할 수도 있다. 이러한 실시예에서, 인코딩된 비디오 콘텐츠의 채널은 데이터 저장소(예를 들어, 비디오 관리 시스템(120)의 데이터 저장소(124)) 내에 저장될 수도 있고, 가상 I-프레임은 저장된 비디오 콘텐츠의 다양한 시간적 포지션에서 생성되어 예를 들어 아래에서 도 8 을 참조하여 설명되는 바와 같이 스위칭 포인트를 확립할 수도 있다.
도 8 은 본 개시물의 실시예에 따른 복수 개의 스위칭 포인트를 가지는 압축된 비디오 데이터의 3 개의 채널의 예시적인 데이터 구조(800)를 도시한다. 도 8 에서, 데이터 구조(800)는 3 개의 대응하는 비트 레이트에서 인코딩된 압축된 비디오 콘텐츠의 3 개의 채널을 도시한다. 예를 들어, 채널(802)은 "높은" 비트 레이트에서 인코딩된 저장된 비디오 콘텐츠에 대응하고, 채널(804)은 "중간" 비트 레이트에서 인코딩된 저장된 비디오 콘텐츠에 대응하며, 채널(806)은 "낮은" 비트 레이트에서 인코딩된 저장된 비디오 콘텐츠에 대응한다. 그러나, 개시된 실시예는 이러한 예시적인 비트 레이트로 한정되지 않으며, 추가적 실시예에서, 데이터 구조(800)는 당업자에게 명백하며 통신 네트워크(130)의 디바이스에 적합한 임의의 추가적 또는 대안적 비트 레이트에서 인코딩된 임의의 추가적 또는 대안적인 개수의 비디오 콘텐츠 채널을 포함할 수도 있다.
도 8 에서, 데이터 구조(800)는 채널(802, 804, 및 806)의 인코딩된 비디오 콘텐츠에 대한 픽쳐의 그룹(GOP)의 부분을 도시한다. 더 나아가, 위에서 논의된 바와 같이, 스위칭 포인트는 저장된 비디오 콘텐츠에 걸친 임의의 그리고 고정된 시간적 포지션에서 채널(802, 804, 및 806)의 각각 내에서 확립된다. 예를 들어, 도 8 의 실시예에서, 스위칭 포인트는 각각의 채널의 인코딩된 비디오 콘텐츠의 각 분에서 확립된다. 그러나, 개시된 실시예는 이러한 정규 시간적 간격으로 배치된 스위칭 포인트로 한정되지 않으며, 추가적 실시예에서, 스위칭 포인트는 개시된 실시예에서의 사상 또는 범위에서 벗어나지 않으면서 저장된 비디오 콘텐츠 내의 임의의 추가적 시간적 포지션에서 확립될 수도 있다.
일 실시예에서, 비디오 코덱(예를 들어, 도 2 의 온-칩 비디오 코덱(200))은 저장된 비디오 콘텐츠의 대응하는 시간적 포지션에서, 가상 I-프레임을 그 시간적 포지션에서 생성 및 저장함으로써 스위칭 포인트를 확립할 수도 있다. 예를 들어, 2 분과 등가인 시각에, 비디오 코덱(200)은 최초 I-프레임(812) 및 P-프레임(814)까지의 연속적인 P-프레임을 디코딩함으로써 채널(802)에 대한 스위칭 포인트를 생성하여 P-프레임(814)의 로오 이미지 데이터에 대응하는 디코딩된 이미지를 생성할 수도 있다. 그러면 비디오 코덱은 디코딩된 이미지를 대응하는 I-프레임 알고리즘(예를 들어, H.264 표준 또는 H.265 표준의 I-프레임 인코딩 기법)을 사용하여 재인코딩함으로써 P-프레임(814)을에 대응하는 가상 I-프레임(816)을 생성한다. 그러면 가상 I-프레임(816)은 데이터 저장소 내의 채널(802) 내에 저장될 수도 있다.
그러나, 개시된 실시예는 가상 I-프레임 생성을 위한 이러한 예시적인 기법으로 한정되는 것은 아니다. 예를 들어, 위에서 설명된 하나 이상의 차분 인코딩 방식(예를 들어, H.264 표준 또는 H.265 표준의 I-프레임 알고리즘)은 비디오 인코더(200)가 새롭게-인코딩된 P-프레임을 디코딩하여 대응하는 참조 프레임을 생성하도록 지시할 수도 있다. 이러한 실시예에서, P-프레임(814)의 인코딩 시에, 비디오 코덱(200)은 대응하는 I-프레임 알고리즘을 사용하여 P-프레임(814)의 참조 데이터를 직접적으로 재인코딩함으로써 스위칭 포인트를 생성하여 가상 I-프레임(816)을 생성할 수도 있는데, 이것은 데이터 저장소 내의 채널(802) 내에 저장될 수도 있다.
유사한 방식으로, 비디오 코덱은 가상 I-프레임(820)을 P-프레임(818)과 연관된 디코딩된 이미지에 기초하여 생성하고 저장함으로써 채널(804) 내에 대응하는 스위칭 포인트를 확립할 수도 있고, 가상 I-프레임(824)을 P-프레임(822)과 연관된 디코딩된 이미지에 기초하여 생성하고 저장함으로써 대응하는 스위칭 포인트를 채널(806) 내에 확립할 수도 있다. 더 나아가, 비디오 코덱(200)은 채널(802, 804, 및 806)의 압축된 비디오 콘텐츠 내의 임의의 추가적 또는 대안적 시간적 포지션에서(예를 들어, 1 분, 3 분 등에), 그러한 시간적 포지션에 대응하는 가상 I-프레임을 생성 및 저장함으로써 스위칭 포인트를 생성할 수도 있다.
일 실시예에서, 인코딩된 비디오 콘텐츠의 채널(예를 들어, 채널(802, 804, 및 806))은, 클라이언트 디바이스(예를 들어, 클라이언트 디바이스(112 및 114))에게 하나 이상의 비트 레이트의에서의 스트리밍 콘텐츠로의 액세스를 제공하는 웹 서버와 연관되는 데이터 저장소(예를 들어, 데이터 저장소(124) 및 비디오 관리 서버(122)) 내에 저장될 수도 있다. 예를 들어, 클라이언트 디바이스(112)는 위에서 개략화된 통신 프로토콜의 하나 이상을 사용하여 통신 네트워크(예를 들어, 통신 네트워크(130))를 통해 비디오 관리 서버(122)와 연결을 확립할 수도 있다.
이러한 실시예에서, 비디오 관리 서버(122)는 클라이언트 디바이스(112)에게, 확립된 연결을 통한 스트리밍 다운로드를 위하여 이용가능한 비디오 콘텐츠의 하나 이상의 채널을 식별하는 정보를 제공할 수도 있다. 예를 들어, 제공된 정보는 이용가능한 비디오 및 오디오 콘텐츠의 플레이 리스트, 상이한 비트 레이트 채널의 개수, 각각의 채널에 대한 비트 레이트, 콘텐츠와 연관되는 지속기간(예를 들어, 고정된 지속기간 또는 무한 지속기간), 암호화 정보, 코덱을 식별하는 정보, 및 스위칭 포인트들(예를 들어, 다수 개의 프레임들 또는 시간적 시간들) 사이의 거리를 포함할 수도 있지만 이들로 한정되는 것은 아니다. 더 나아가, 일 실시예에서, 콘텐츠 플레이리스트로의 업데이트가 비디오 콘텐츠의 특정 엘리먼트의 만료 시에 정규 간격으로, 또는 당업자에게 명백하여 클라이언트 디바이스(112) 및 비디오 관리 서버(122)에 적합한 임의의 추가적 또는 대안적인 간격으로 클라이언트 디바이스(112)로 제공될 수도 있다.
제공된 정보의 수신 시에, 클라이언트 디바이스(112)는 클라이언트 디바이스(112)의 사용자에게 디스플레이되기 위하여 제공된 정보를 렌더링하기 위한 웹 브라우저 또는 다른 적합한 애플리케이션을 실행할 수도 있다. 이러한 실시예에서, 클라이언트 디바이스(112)의 사용자는 스트리밍 다운로드를 위하여 비디오 콘텐츠의 디스플레이된 엘리먼트 중 하나 이상을 클릭하거나, 일련의 키스트로크를 입력하거나, 또는 그렇지 않으면 이의 선택을 표시할 수도 있다. 사용자의 선택에 응답하여, 클라이언트 디바이스(112)는 선택된 비디오 콘텐츠에 대한 요청을 생성할 수도 있고, 이것은 네트워크(130)를 통해서 비디오 관리 서버(122)로 송신될 수도 있다.
일 실시예에서, 선택된 미디어 콘텐츠에 대한 요청은 비디오 콘텐츠의 최초 부분 및 비디오 콘텐츠의 송신을 위한 최초 대역폭을 식별하는 정보를 포함할 수도 있다. 예를 들어, 클라이언트 디바이스(112)는 네트워크(130)와 연관된 현재 상태를 측정할 수도 있고, 현재 네트워크 상태와 일관적인 선택된 콘텐츠의 이용가능한 비트 레이트 중 하나를 선택하는 정보를 포함할 수도 있다.
대안적으로는, 비디오 콘텐츠에 대한 최초 요청은 송신 비트 레이트의 디폴트 값, 클라이언트 디바이스(112)의 기능성, 사용자에 의하여 특정된 송신 비트 레이트, 또는 당업자에게 명백하고 선택된 비디오 콘텐츠 및 클라이언트 디바이스에 적합한 임의의 추가적 또는 대안적인 송신 비트 레이트와 연관될 수도 있다. 요청의 수신 시에, 비디오 관리 서버(122)는 요청된 비디오 콘텐츠의 최초 부분을, 예를 들어 도 9 를 참조하여 아래에서 설명되는 바와 같이, 클라이언트 디바이스(112)가 요청된 비디오 콘텐츠의 후속 일부의 비트 레이트를 적응적으로 조절하는 데에 사용될 수도 있는 매커니즘을 특정하는 추가적 정보와 함께 클라이언트 디바이스(112)로 송신할 수도 있다.
도 9 는 개시된 실시예에 따른, 비디오 콘텐츠를 동적으로-결정된 송신 비트 레이트에서 요청 디바이스로 송신하기 위한 예시적인 방법(900)을 도시한다. 방법(900)은 웹 서버(예를 들어, 비디오 관리 서버(122))가 대응하는 스위칭 포인트에 배치된 하나 이상의 가상 I-프레임을 사용하여 요청된 비디오 콘텐츠의 송신 비트 레이트에서 수정하도록 하는 기능성을 제공할 수도 있다.
도 9 에서, 서버(122)는 단계 902 에서 클라이언트 디바이스(예를 들어, 클라이언트 디바이스(112))로부터 비디오 콘텐츠의 일부에 대한 요청을 수신할 수도 있다. 위에서 논의된 바와 같이, 이러한 요청은 클라이언트 디바이스(112)로부터 통신 네트워크(130)를 거쳐 위에서 개략화된 통신 프로토콜 중 하나 이상(예를 들어, TCP/IP)에 따라서 송신될 수도 있고, 이러한 요청은 클라이언트 디바이스(112)에 이용가능한 비디오 콘텐츠의 하나 이상의 엘리먼트를 식별하는 웹 서버에 의하여 제공되는 정보에 응답할 수도 있다. 더 나아가, 이러한 실시예에서, 수신된 요청은, 예를 들어 클라이언트 디바이스(112)에 의한 요청의 송신 도중에 네트워크(130)의 상태와 일치하는, 요청된 콘텐츠의 송신에 대한 비트 레이트를 제안할 수도 있다.
단계 904 에서, 서버(122)는 요청된 비디오 콘텐츠의 최초 부분을 데이터 저장소(예를 들어 데이터 저장소(124))로부터 획득할 수도 있고 요청된 비디오 콘텐츠의 최초 부분의 재생에 대하여 클라이언트 디바이스(112)에게 지시하는 정보를 생성할 수도 있다. 예를 들어, 서버(122)는 요청된 송신 비트 레이트의 임계 값과 일치하거나 대안적으로는 그 안에 속하는 송신 비트 레이트로써 인코딩된 비디오 콘텐츠의 최초 부분을 선택할 수도 있다. 더 나아가, 일 실시예에서, 생성된 정보는 요청된 콘텐츠에 대한 하나 이상의 스위칭 포인트 및 그러한 스위칭 포인트에서 이용가능한 하나 이상의 추가적 비트레이트를 식별하는 요청된 콘텐츠에 대한 미디어 기술자에 대응할 수도 있다.
단계 906 에서, 서버(122)는 요청된 비디오 콘텐츠의 최초 부분 및 대응하는 재생 정보를 클라이언트 디바이스(112)로 송신할 수도 있다. 일 실시예에서, 송신은 위에서 개략화된 통신 프로토콜 중 하나 이상에 따라서 네트워크(130)를 통하여 발생할 수도 있다. 추가적으로, 이러한 실시예에서, 요청된 비디오 콘텐츠의 최초 부분 및 재생 정보는 당업자에게 명백하며 클라이언트 디바이스(112) 및 서버(122)에 적합한 다수 개의의 암호화 기법 중 임의의 것을 사용하여 클라이언트 디바이스(112)로의 송신 이전에 암호화될 수도 있다.
클라이언트 디바이스(112)는 요청된 콘텐츠의 최초 부분을 대응하는 송신 대역폭에서 수신할 수도 있다. 최초 부분과 동시에, 클라이언트 디바이스(112)는 요청된 콘텐츠와 연관되는 재생 정보를 수신할 수도 있다. 위에서 설명된 바와 같이, 재생 정보는 요청된 콘텐츠의 송신을 위하여 이용가능한 하나 이상의 추가적 대역폭을 식별하는 정보 및 클라이언트 디바이스(112)가 상이한 송신 비트 레이트로 스위칭할 수도 있는 하나 이상의 스위칭 포인트를 식별하는 정보를 포함할 수도 있지만 이들로 한정되는 것은 아니다. 이러한 실시예에서, 재생 정보 및 요청된 비디오 콘텐츠의 최초 부분은 네트워크(130)의 공통 통신 채널 상에서 수신될 수도 있고, 또는 대안적으로는, 재생 정보는 네트워크(130)의 전용 백채널을 사용하여 클라이언트 디바이스(112)로 송신될 수도 있다.
위에서 설명된 바와 같이, 클라이언트 디바이스(112)는 네트워크(120)의 상태(예를 들어, 현재 대역폭)를 요청된 콘텐츠의 최초 부분의 송신 도중에 모니터링할 수도 있다. 예를 들어, 네트워크 상태는 요청된 콘텐츠의 최초 부분의 송신 도중에 연속적으로, 또는 송신 도중에 이산 간격에서 수정될 수도 있다. 더 나아가, 일 실시예에서, 클라이언트 디바이스(112)는 현재 네트워크 상태를 식별하는 정보를 정규 간격에서, 또는 대안적으로는 특정 네트워크 상태의 검출에 응답하여 서버(122)로 송신하도록 구성될 수도 있다. 예를 들어, 네트워크의 상태를 식별하는 정보는 네트워크(130)의 이용가능한 대역폭이 선결정된 임계 아래로 떨어지면 서버(122)로 송신될 수도 있다.
서버(122)는 단계 908 에서 송신 상태 정보를 수신할 수도 있고, 단계 910 에서, 요청된 비디오 콘텐츠와 연관되는 현재 송신 비트 레이트가 네트워크(130)의 현재 상태를 고려할 때 너무 큰지 여부를 결정할 수도 있다. 만일 현재 송신이 현재 네트워크 상태에 대하여 너무 크다면, 서버(122)는 압축된 비디오 콘텐츠가 더 낮은 송신 비트 레이트에서 이용가능한지 여부를 단계 912 에서 결정할 수도 있다. 예를 들어, 서버(122)는 데이터 저장소(124)에 액세스하여 데이터 저장소(124)가 현재 비트 레이트보다 더 작은 비트 레이트에서 인코딩된 비디오 콘텐츠를 저장하는지 여부를 결정할 수도 있다.
만일 서버(122)가 단계 912 에서 더 낮은 비트 레이트에서 인코딩된 압축된 비디오 콘텐츠를 위치결정할 수 없으면, 서버(122)는 단계 914 에서 계속하여 압축된 비디오 콘텐츠를 현재 송신 비트 레이트에서 클라이언트 디바이스(112)로 송신한다. 예를 들어, 도 8 을 참조하여, 요청된 비디오 콘텐츠가 클라이언트 디바이스로 채널(806)의 "낮은" 대역폭에서 송신되면, 서버(122)는 네트워크(130)의 상태와 무관하게 심지어 더 낮은 비트 레이트에서 인코딩된 요청된 비디오 콘텐츠를 획득할 수 없다. 방법(900)은 단계 916 에서 완료된다.
대안적으로는, 서버(122)가 더 낮은 비트 레이트에서 인코딩된 요청된 비디오 콘텐츠의 부분을 식별할 수 있으면, 서버(122)는 다음 스위칭 포인트에서 요청된 콘텐츠의 송신 비트 레이트를 더 낮추도록 결정할 수도 있다. 이러한 실시예에서, 서버(122)는 단계 918 에서 다음 스위칭 포인트까지 현재 비트 레이트에서 P-프레임을 계속하여 클라이언트 디바이스(112)로 송신한다.
예를 들어, 도 8 을 참조하여, 현재 송신 비트 레이트는 채널(804)의 "중간" 비트 레이트에 대응할 수도 있고, 서버(122)는 1 분 및 2 분 마크 사이의 시간적 포지션에서 송신 상태 정보를 수신할 수도 있다. 단계 912 에서, 서버(122)는 요청된 비디오 콘텐츠의 일부를 채널(806)의 "낮은" 비트 레이트에서 식별할 수도 있고, 단계 918 에서, 서버(122)는 다음 스위칭 포인트, 예를 들어, 2 분 마크까지 계속하여 P-프레임을 채널의 "중간" 대역폭에서 클라이언트 디바이스(112)로 송신할 수도 있다.
단계 920 에서, 서버(122)는 다음 스위칭 포인트에서 식별된 더 낮은 비트 레이트에 대응하는 가상 I-프레임을 요청할 수도 있다. 요청된 가상 I-프레임의 수신 시에, 서버(122)는 새 픽쳐의 그룹(GOP)을 식별된 더 낮은 비트 레이트에서 개시할 수도 있고, 그리고 가상 I-프레임 및 대응하는 P-프레임을 단계 922 에서 클라이언트(102)로 송신할 수도 있다. 예를 들어, 도 8 을 참조하여, 서버(122)는 "낮은" 비트 레이트 채널과 연관된 가상 I-프레임(824)을 요청할 수도 있고, 후속하여 가상 I-프레임(824) 및 대응하는 P-프레임을 "낮은" 송신 대역폭에서 클라이언트 디바이스(112)로 송신할 수도 있다. 방법(900)은 후속하여 단계 916 에서 완료된다.
단계 910 을 다시 참조하면, 서버(122)가 요청된 비디오 콘텐츠의 현재 송신 비트 레이트가 현재 네트워크 상태와 일치한다고 결정하면, 서버(122)는 단계 924 에서 현재 네트워크 상태가 더 큰 송신 비트 레이트를 수용할 것인지를 결정했다. 현재 네트워크 상태가 더 크거나 더 작은 송신 비트 레이트를 수용하지 않을 것이라면, 현재 송신 비트 레이트가 현재 네트워크 상태에 최적이며, 서버(122)는 단계 914 에서 요청된 비디오 콘텐츠를 현재 송신 비트 레이트에서 클라이언트 디바이스(112)로 계속하여 송신한다. 방법(900)은 후속하여 단계 916 에서 완료된다.
그러나, 서버(122)가 현재 네트워크 상태가 높은 송신 비트 레이트를 수용할 것이라고 단계 924 에서 결정하면, 서버(122)는 요청된 비디오 콘텐츠의 일부가 더 높은 송신 비트 레이트에서 이용가능한지 여부를 단계 926 에서 결정한다. 예를 들어, 서버(122)는 데이터 저장소(124)에 액세스하여 데이터 저장소(124)가 현재 송신 비트 레이트보다 더 큰 비트 레이트에서 인코딩된 비디오 콘텐츠를 저장하는지 여부를 결정할 수도 있다.
서버(122)가 단계 926 에서 더 높은 비트 레이트에서 인코딩된 압축된 비디오 콘텐츠를 위치결정할 수 없으면, 방법(900)은 단계 914 로 다시 진행하고, 서버(122)는 계속하여 압축된 비디오 콘텐츠를 현재 송신 비트 레이트에서 클라이언트 디바이스(112)로 송신한다. 예를 들어, 도 8 을 참조하여, 요청된 비디오 콘텐츠가 클라이언트 디바이스로 채널(802)의 "높은" 대역폭에서 송신되면, 서버(122)는 네트워크(130)의 상태와 무관하게 심지어 더 높은 비트 레이트에서 인코딩된 요청된 비디오 콘텐츠를 획득할 수 없다. 방법(900)은 단계 916 에서 완료된다.
대안적으로는, 서버(122)가 더 높은 비트 레이트에서 인코딩된 요청된 비디오 콘텐츠의 일부를 식별할 수 있으면, 서버(122)는 다음 스위칭 포인트에서 요청된 콘텐츠의 송신 비트 레이트를 더 높이도록 결정할 수도 있다. 이러한 실시예에서, 서버(122)는 단계 928 에서 다음 스위칭 포인트까지 현재 비트 레이트에서 P-프레임을 계속하여 클라이언트 디바이스(112)로 송신한다.
예를 들어, 도 8 을 참조하여, 현재 송신 비트 레이트는 채널(804)의 "중간" 비트 레이트에 대응할 수도 있고, 서버(122)는 1 분 및 2 분 마크 사이의 시간적 포지션에서 송신 상태 정보를 수신할 수도 있다. 단계 912 에서, 서버(122)는 요청된 비디오 콘텐츠의 일부가 채널(802)의 "높은" 비트 레이트에서 식별할 수도 있고, 단계 928 에서, 서버(122)는 다음 스위칭 포인트, 예를 들어, 2 분 마크까지 계속하여 P-프레임을 채널의 "중간" 대역폭에서 클라이언트 디바이스(112)로 송신할 수도 있다.
단계 930 에서, 서버(122)는 다음 스위칭 포인트에서 식별된 더 높은 비트 레이트에 대응하는 가상 I-프레임을 요청할 수도 있다. 요청된 가상 I-프레임의 수신 시에, 서버(122)는 새 픽쳐의 그룹(GOP)을 식별된 더 높은 비트 레이트에서 개시할 수도 있고, 그리고 가상 I-프레임 및 대응하는 P-프레임을 단계 932 에서 클라이언트(102)로 송신할 수도 있다. 예를 들어, 도 8 을 참조하여, 서버(122)는 "높은" 비트 레이트 채널과 연관된 가상 I-프레임(816)을 요청할 수도 있고, 후속하여 가상 I-프레임(816) 및 대응하는 P-프레임을 "높은" 송신 대역폭에서 클라이언트 디바이스(112)로 송신할 수도 있다. 방법(900)은 후속하여 단계 916 에서 완료된다.
도 10a 내지 도 10b 는 개시된 실시예에 따르는, 6 분의 기간 동안의 인코딩된 비디오 콘텐츠의 송신 비트 레이트에 대한 예시적인 조절을 도시한다. 예를 들어, 도 10a 에서, 서버(122)는 인코딩된 비디오 콘텐츠의 최초 부분을 "낮은" 송신 비트 레이트에서 클라이언트 디바이스(112)로 송신할 수도 있다. 1 분에서 제 1 스위칭 포인트(1002) 이전에, 서버(122)는 현재 네트워크 상태가 더 높은 송신 비트 레이트를 수용할 것이라고 결정할 수도 있고, 도 10b 에서 묘사되는 바와 같이, 서버(122)는 "중간" 비트 레이트와 연관된 가상 I-프레임을 제 1 스위칭 포인트(1002)에서 요청한다. 서버(122)는 제 1 스위칭 포인트(1002)까지 "낮은" 대역폭에서 P-프레임을 계속 송신하고, 후속하여 제 1 스위칭 포인트(1002) 이후에 "중간" 비트 레이트에서 가상 I-프레임 및 대응하는 P-프레임을 클라이언트 디바이스(112)로 송신한다.
이와 유사하게, 2 분에서의 제 2 스위칭 포인트(1004) 이전에, 서버(122)는 현재 네트워크 상태가 더 높은 송신 비트 레이트를 수용할 것이라고 결정할 수도 있고, 도 10b 에서 묘사되는 바와 같이, 서버(122)는 "높은" 비트 레이트와 연관된 가상 I-프레임을 요청할 수도 있다. 이러한 실시예에서, 서버(122)는 제 2 스위칭 포인트(1004)까지 "중간" 대역폭에서 P-프레임을 계속 송신하고, 후속하여 제 2 스위칭 포인트(1004) 이후에 "높은" 비트 레이트에서 가상 I-프레임 및 대응하는 P-프레임을 클라이언트 디바이스(112)로 송신한다.
그러나, 서버(122)는 제 3 스위칭 포인트(1006)에 앞선 네트워크(130)의 상태가 "높은" 비트 레이트를 지원할 수 없다고 결정할 수도 있다. 이러한 실시예에서, 그리고 도 10b 에서 개략화된 바와 같이, 서버(122)는 "중간" 비트 레이트와 연관하여 가상 I-프레임을 제 3 스위칭 포인트(1006)에서 요청할 수도 있다. 서버(122)는 제 3 스위칭 포인트(1006)까지 "높은" 대역폭에서 P-프레임을 계속 송신하고, 후속하여 제 3 스위칭 포인트(1006) 이후에 "중간" 비트 레이트에서 가상 I-프레임 및 대응하는 P-프레임을 클라이언트 디바이스(112)로 송신한다.
도 10a 및 도 10b 의 예시적인 실시예에서, 서버(122)는 "중간" 송신 비트 레이트가 제 4 스위치 포인트(1008)에서 네트워크 상태에 대하여 최적이며, 이를 고려하여, 비트 레이트에 있어서 변화가 생기지 않는다. 그러나, 제 5 스위칭 포인트(1010)에서, 서버(122)는 네트워크(130)가 더 높은 송신 비트 레이트를 지원할 수 있다는 것을 표시하는 상태 정보를 수신할 수도 있다. 이러한 실시예에서, 도 10b 에 도시된 바와 같이, 서버(122)는 "높은" 비트 레이트와 연관하여 가상 I-프레임을 제 5 스위칭 포인트(1010)에서 요청할 수도 있다. 서버(122)는 제 2 스위칭 포인트(1006)까지 "중간" 대역폭에서 P-프레임을 계속 송신할 수도 있고, 후속하여 제 5 스위칭 포인트(1010) 이후에 "높은" 비트 레이트에서 가상 I-프레임 및 대응하는 P-프레임을 클라이언트 디바이스(112)로 송신할 수도 있다.
도 11a 및 도 11b 는 개시된 실시예에 따르는, 6 분의 기간 동안의 인코딩된 비디오 콘텐츠의 송신 비트 레이트에 대한 예시적인 조절의 추가적인 세트를 도시한다. 위에서 설명된 바와 같이, 서버(122)는 도 11a 및 도 11b 에서 인코딩된 비디오 콘텐츠의 최초 부분을 "낮은" 송신 비트 레이트에서 클라이언트 디바이스(112)로 송신할 수도 있다. 그러나, 1 분에서 제 1 스위칭 포인트(1102) 이전에, 서버(122)는 현재 네트워크 상태가 더 높은 송신 비트 레이트를 수용할 것이라고 결정할 수도 있고, 도 11b 에서 묘사되는 바와 같이, 서버(122)는 "중간" 비트 레이트와 연관된 가상 I-프레임을 제 1 스위칭 포인트(1102)에서 요청한다. 서버(122)는 제 1 스위칭 포인트(1102)까지 "낮은" 대역폭에서 P-프레임을 계속 송신할 수도 있고, 후속하여 제 1 스위칭 포인트(1102) 이후에 "중간" 비트 레이트에서 가상 I-프레임 및 대응하는 P-프레임을 클라이언트 디바이스(112)로 송신할 수도 있다.
그러나, 도 10a 및 도 10b 의 예와 반대로, 서버(122)는 "중간" 송신 비트 레이트가 후속 스위칭 포인트(1104, 1106, 1108, 및 1110)의 각각에서 네트워크 상태에 대해 최적이라고 결정한다. 이러한 실시예에서, 현재 GOP와 함께 P-프레임, 또는 후속 GOP과 연관되는 I-프레임 및 후속 P-프레임의 송신은 "중간" 비트 레이트에서 계속할 수도 있다.
위에서 설명된 실시예에서, 클라이언트 디바이스(112)는 통신 네트워크, 예를 들어, 통신 네트워크(130)의 하나 이상의 상태를 인코딩된 비디오 콘텐츠의 송신 도중에 측정하도록 구성된다. 이러한 실시예에서, 현재 네트워크 상태를 표시하는 정보는 위에서 설명된 바와 같이 주기적으로, 또는 특정 네트워크 이벤트에 응답하여 서버(122)로 송신될 수도 있다.
그러나, 개시된 실시예들은 이러한 네트워크 측정 기법으로 한정되지 않는다. 예를 들어, 클라이언트 디바이스(112)는 적어도 인코딩된 비디오 콘텐츠의 일부를 디스플레이 이전에 수신 시에 버퍼 내에 저장할 수도 있다. 이러한 실시예에서, 클라이언트 디바이스(112)의 스토리지 버퍼 내의 데이터의 양이 네트워크(130)의 현재 상태를 표시할 수도 있다. 예를 들어, 클라이언트 디바이스(112)에서의 버퍼링된 데이터의 양이 임계 값을 초과한다면, 대응하는 송신 비트 레이트는 너무 클 수도 있고, 송신 비트 레이트를 감소시킬 필요성을 표시하는 정보가 위에서 설명된 바와 같이 상태 정보로서 서버(122)로 송신될 수도 있다.
더욱이, 개시된 실시예에서, 서버(122)는 비디오 콘텐츠의 송신 비트 레이트를 조절할지 여부를 통신 네트워크(예를 들어, 통신 네트워크(130))의 상태 중 하나 이상에 기초하여 결정하고, 이것은 클라이언트 디바이스(112)에 의하여 서버(122)로 송신될 수도 있다. 개시된 실시예는 이러한 조절 매커니즘으로 한정되지 않으며, 추가적 실시예에서, 서버(122)는 송신 비트 레이트를 클라이언트 디바이스(112)의 사용자로부터의 요청에 기초하여 조절할 수도 있다. 예를 들어, 사용자는 서버(122)와 연관되는 웹 페이지 또는 다른 그래픽 사용자 인터페이스에 액세스할 수도 있고, 클라이언트 디바이스(112)로부터 송신 비트 레이트를 증가 또는 감소하는 긍정 요청을 송신할 수도 있다. 이러한 실시예에서, 송신 비트 레이트로의 수정은 네트워크 상태에 기초하지 않고, 대신에 클라이언트 디바이스(112)의 하나 이상의 성능에 기초하여 개시될 수도 있다.
추가적으로, 개시된 실시예는 저장된 비디오 콘텐츠 내의 고정된 시간적 포지션, 예를 들어 도 10a 및 도 10b 의 1 분 간격으로 배치된 스위칭 포인트(1002, 1004, 1006, 1008, 및 1010)에 배치된 스위칭 포인트를 포함한다. 개시된 실시예는 이러한 고정된 스위칭 포인트로 한정되지 않으며, 추가적 실시예에서, 이러한 스위칭 포인트의 시간적 포지션들은 변화하는 네트워크 상태, 변화하는 디바이스 상태, 또는 콘텐츠의 하나 이상의 특징에 응답하여 비디오 코덱(예를 들어, 온-칩 비디오 코덱(200))에 의하여 또는 하나 이상의 클라이언트 디바이스(예를 들어, 클라이언트 디바이스(112 및 114))에 의하여 적응적으로 결정될 수도 있다.
더 나아가, 추가적 실시예에서, 클라이언트 디바이스(예를 들어, 클라이언트 디바이스(112)) 또는 웹 서버(예를 들어, 서버(122)) 중 하나 이상은 추가적 스위칭 포인트가 고정된 스위칭 포인트 이전에 생성되도록 요청할 수도 있다. 예를 들어, 도 10a 및 도 10b 를 참조하면, 클라이언트 디바이스(112)는 제 2 스위칭 포인트(1004) 직후에 네트워크 상태에 있어서 상당한 열화를 경험할 수도 있다. 이러한 실시예에서, 스위칭 포인트의 즉시 생성에 대한 요청은 서버(122)로, 그리고 추가적으로 또는 대안적으로는, 압축된 비디오 콘텐츠와 연관되는 비디오 코덱으로 통신 네트워크(130)의 백채널을 통하여 송신될 수도 있다. 요청의 수신 시에, 비디오 코덱은 대응하는 I-프레임을 생성할 수도 있고, 이것은 클라이언트 디바이스(112)로의 송신을 위하여 서버(122)와 연관되는 데이터 저장소(예를 들어, 저장소(124)) 내에 저장될 수도 있으며, 또는 대안적으로는, 직접적으로 클라이언트 디바이스(112)로 송신될 수도 있다.
위에서 설명된 바와 같이, 클라이언트 디바이스(112 및 114), 비디오 관리 서버(122), 및 데이터 저장소(124)는 적어도 하나의 프로세서 또는 컴퓨터-기초 시스템으로써 구현될 수 있다. 도 12 는 본 개시물과 일관적인 실시예가 구현될 수도 있는 예시적인 컴퓨팅 시스템(1200)을 도시한다. 컴퓨터 시스템(1200)은 하나 이상의 프로세서, 예컨대 프로세서(1202)를 포함한다. 프로세서(1202)는 통신 기반구조(1206), 예컨대 버스 또는 통신 네트워크, 예를 들어, 도 1 의 네트워크(130)에 연결된다.
컴퓨터 시스템(1200)은 메인 메모리(1208), 예를 들어, 랜덤 액세스 메모리(RAM)를 더 포함하고, 이차 메모리(1210)를 포함할 수도 있다. 이차 메모리(1210)는 예를 들어, 하드 디스크 드라이브(1212) 및/또는 자기적 테이프 드라이브, 광학적 디스크 드라이브, CD/DVD 드라이브, 등을 나타내는 착탈식 스토리지 드라이브(1214)를 포함할 수도 있다. 착탈식 스토리지 드라이브(1214)는 주지된 방식으로 착탈식 스토리지 유닛(1218)으로부터 판독하고/하거나 이에 기록한다. 착탈식 스토리지 유닛(1218)은 자기적 테이프, 광학적 디스크, 또는 착탈식 스토리지 드라이브(1214)에 의하여 판독되고 이에 기록되는 다른 스토리지 매체를 나타낸다. 이해될 바와 같이, 착탈식 스토리지 유닛(1218)은 그 안에 프로세서(1202)에 의하여 실행될 컴퓨터 프로그램, 명령의 세트, 코드, 또는 데이터를 저장하는 컴퓨터 판독가능 매체를 나타낼 수 있다.
대안적 실시예에서, 이차 메모리(1210)는 컴퓨터 프로그램 또는 명령의 세트가 컴퓨터 시스템(1200)으로 로딩되게 하는 다른 수단을 포함할 수도 있다. 예를 들어, 이러한 수단은 착탈식 스토리지 유닛(1222) 및 인터페이스(1220)를 포함할 수도 있다. 이러한 수단의 일 예는 착탈식 메모리 칩(예를 들어, EPROM, RAM, ROM, DRAM, EEPROM, 플래시 메모리 디바이스, 또는 다른 휘발성 또는 비-휘발성 메모리 디바이스) 및 연관된 소켓, 또는 다른 착탈식 스토리지 유닛(1222) 및 명령 및 데이터가 착탈식 스토리지 유닛(1222)으로부터 컴퓨터 시스템(1200)으로 전달되게 하는 인터페이스(1220)를 포함할 수도 있다.
컴퓨터 시스템(1200)은 하나 이상의 통신 인터페이스, 예컨대 통신 인터페이스(1224)를 더 포함할 수도 있다. 통신 인터페이스(1224)는 컴퓨터 프로그램(또는 명령의 세트) 및 데이터가 컴퓨터 시스템(1200) 및 외부 디바이스 사이에서 전달되도록 한다. 통신 인터페이스(1224)의 예는 모뎀, 네트워크 인터페이스(예를 들어, 이더넷 카드), 통신 포트, PCMCIA 슬롯 및 카드, 등을 포함할 수도 있다. 컴퓨터 프로그램(또는 명령의 세트) 및 데이터는 통신 인터페이스(1224)를 통하여 신호(226)의 형태로 전달될 수도 있는데, 이것은 전자적, 전자기, 광학적 또는 통신 인터페이스(1224)에 의하여 수신될 수 있는 다른 신호일 수도 있다. 이러한 신호(1226)는 통신 경로(예를 들어, 채널(1228))를 통하여 통신 인터페이스(1224)로 제공된다. 채널(1228)은 신호(1226)를 운반하고, 배선, 케이블, 섬유 광학, RF 링크, 및/또는 다른 통신 채널을 사용하여 구현될 수도 있다. 본 발명의 일 실시예에서, 신호(1226)는 프로세서(1202)로 전송되는 데이터 패킷을 포함한다. 처리된 패킷을 나타내는 정보 도 또한 프로세서(202)로부터 또는 통신 경로(1228)를 통하여 신호(1226)의 형태로 전송될 수 있다.
더 나아가, 비록 도 12 에는 도시되지 않지만, 클라이언트 디바이스(112 및 114), 비디오 관리 서버(122), 및 데이터 저장소(124) 중 하나 이상은 네트워크 카메라(102 및 104) 및 비디오 코딩 유닛(116)에 의하여 제공되는 비디오 콘텐츠를 디코딩할 수 있는 하드웨어 또는 소프트웨어 기초 비디오 코덱을 더 포함할 수도 있다. 예를 들어, 클라이언트 디바이스(112 및 114), 비디오 관리 서버(122), 및 데이터 저장소(124)는 고선명 비디오에 대한 H.264 표준에 따라 인코딩된 비디오 콘텐츠를 디코딩 및 조작하기 위한, 위에서 설명된 바와 같은 온-칩 비디오 코덱(200)과 일관적인 하드웨어-기초 코덱 유닛을 포함할 수도 있다.
용어 "스토리지 디바이스" 및 "스토리지 매체"는 메인 메모리(1208), 이차 메모리(1210), 하드 디스크 드라이브(1212) 내에 설치된 하드 디스크, 및 착탈식 스토리지 유닛(1218 및 1222)을 포함하지만 이들로 한정되는 것은 아니다. 더 나아가, 용어 "컴퓨터 판독가능 매체"는 하드 디스크 드라이브(1212) 내에 설치된 하드 디스크, 메인 메모리(1208) 및 이차 메모리(1210)의 임의의 조합, 및 착탈식 스토리지 유닛(1218 및 1222)을 포함하지만 이들로 한정되는 것은 아닌 디바이스를 지칭할 수도 있는데, 이것들은 각각 컴퓨터 프로그램 및/또는 명령의 세트를 컴퓨터 시스템(1200)의 프로세서(1202)로 제공한다. 용어 "컴퓨터 판독가능 매체"는 또한, 프로세서(242) 및 온-칩 비디오 코덱(200)의 대응하는 캐시(244)와 통신하고, 컴퓨터 프로그램 및/또는 명령의 세트를 코덱(200)의 프로세서로 제공하는 스토리지 유닛, 예를 들어, 스토리지 유닛(280)을 지칭할 수도 있다. 이러한 컴퓨터 프로그램 및 명령의 세트는 하나 이상의 컴퓨터 판독가능 미디어 내에 저장될 수 있다. 추가적으로 또는 대안적으로는, 컴퓨터 프로그램 및 명령의 세트는 또한 통신 인터페이스(1224)를 통하여 수신되고 하나 이상의 컴퓨터 판독가능 미디어 상에 저장될 수도 있다.
프로세서(1202)에 의하여 실행되면, 이러한 컴퓨터 프로그램 및 명령은 프로세서(1202)가 본 명세서에서 설명되는 컴퓨터-구현 방법을 수행하도록 한다. 이와 유사하게, 프로세서(242)에 의하여 실행되면, 이러한 컴퓨터 프로그램 및 명령은 또한 프로세서(242)가 본 명세서에서 설명되는 컴퓨터-구현 방법을 수행하도록 한다. 프로그램 및 명령의 세트의 예는, 예를 들어 컴파일러에 의하여 생성된 코드와 같은 머신 코드 및 해석기(interpreter)를 사용하여 프로세서(1202 및 242)에 의하여 실행될 수 있는 고수준 코드를 보유하는 파일을 포함한다.
더욱이, 본 명세서에서 설명되는 컴퓨터-구현 방법은 컴퓨터 시스템의 단일 프로세서, 예컨대 시스템(1200)의 프로세서(1202)에서 구현될 수 있다. 그러나, 추가적 실시예에서, 개시된 컴퓨터-구현 방법은 단일 컴퓨터 시스템 내의 하나 이상의 프로세서를 사용하여, 그리고 추가적으로 또는 대안적으로 네트워크를 통하여 연동된 별개의 컴퓨터 시스템 내의 하나 이상의 프로세서 상에서 구현될 수도 있다.
추가적으로, 본 명세서에서 설명되는 컴퓨터-구현 방법은 로오 이미지 데이터를 인코딩하고 압축된 비디오 콘텐츠를 생성하는(예를 들어, 고선명 비디오에 대한 H.264 표준 및 고효율 비디오 코딩에 대한 H.265 표준에 따름) 하드웨어-기초 비디오 코덱(예를 들어, 도 2 의 온-칩 비디오 코덱(200))에 의하여 수행될 수도 있다. 개시된 실시예들은 이러한 온-칩 비디오 코덱으로 한정되지 않으며, 추가적 실시예에서, 소프트웨어-기초 비디오 코덱은 프로세서(예를 들어, 도 12 의 프로세서(1202))에 의하여 실행되어 로오 이미지 데이터를 인코딩하고 압축된 비디오 콘텐츠를 생성할 수도 있다.
다양한 실시예들이 본 명세서에서 첨부 도면들을 참조하여 설명되었다. 그러나, 후속하는 특허청구범위에 진술된 본 발명의 더 넓은 범위로부터 벗어나지 않으면서 다양한 수정 및 변화가 실시예에 이루어질 수도 있고 추가적 실시예가 구현될 수도 있다는 것이 명백할 것이다.
더 나아가, 다른 실시예들이 상세한 설명 및 본 개시물의 하나 이상의 실시예들의 실시를 고려하는 것으로부터 당업자에게 명백해질 것이다. 그러므로, 본 개시물 및 본 명세서의 예들은 오직 예시적인 것으로 간주되어야 하며, 본 발명의 진정한 범위 및 사상은 예시적인 청구항의 후속하는 목록에 의하여 표시되는 것이 의도된다.

Claims (58)

  1. 컴퓨터-구현 방법으로서,
    비디오 콘텐츠의 스트림을 수신하는 단계;
    비디오 코덱을 사용하여, 비디오 콘텐츠 스트림을 인코딩하여 압축된 비디오 데이터를 생성하는 단계로서, 상기 압축된 비디오 데이터는 인트라-프레임 및 복수 개의 대응하는 인터-프레임을 포함하는, 단계; 및
    압축된 비디오 데이터를 버퍼 내에 저장하는 단계를 포함하고,
    상기 인코딩하는 단계는,
    인코딩된 인트라-프레임과 연관된 데이터를 획득하는 단계;
    인트라-프레임 데이터에 기초하여, 상기 비디오 콘텐츠 스트림의 부분을 인코딩하여 상기 인터-프레임 중 대응하는 하나를 생성하는 단계;
    상기 버퍼 내에 저장된 데이터의 양이 제 1 임계 값을 초과하는지 여부를 결정하는 단계;
    상기 버퍼 내의 데이터의 양이 제 1 임계 값을 초과하면, 생성된 인터-프레임을 디코딩하고 가상 인트라-프레임을 디코딩된 인터-프레임 데이터에 기초하여 계산하는 단계; 및
    상기 버퍼 내로의 저장을 위하여 상기 가상 인트라-프레임을 대응하는 인터-프레임과 출력하는 단계를 포함하는, 방법.
  2. 제 1 항에 있어서,
    상기 인코딩하는 단계는, 상기 비디오 콘텐츠 스트림의 제 1 부분을 인코딩하여 상기 인트라-프레임을 생성하는 단계를 더 포함하고,
    상기 제 1 부분은 상기 인터-프레임과 연관된 상기 비디오 콘텐츠 스트림의 부분에 선행하는, 방법.
  3. 제 1 항에 있어서,
    상기 인코딩하는 단계는,
    버퍼링된 데이터의 양이 제 1 임계 값을 초과하면, 압축된 비디오 데이터와 연관된 픽쳐-그룹 길이를 계산하는 단계;
    계산된 픽쳐-그룹 길이가 선결정된 임계 길이를 초과하는지 여부를 결정하는 단계; 및
    계산된 픽쳐-그룹 길이가 선결정된 임계 길이를 초과하지 않으면, 상기 비디오 콘텐츠 스트림의 추가적 부분을 인코딩하여 추가적 인터-프레임을 생성하는 단계를 더 포함하는, 방법.
  4. 제 3 항에 있어서,
    상기 버퍼는 인트라-프레임 및 대응하는 인터-프레임의 하나 이상의 이전에-인코딩된 그룹을 포함하고; 그리고
    계산된 픽쳐-그룹 길이가 선결정된 임계 길이를 초과하면, 인트라-프레임 및 대응하는 인터-프레임의 상기 이전에-인코딩된 그룹을 폐기하는 단계를 더 포함하는, 방법.
  5. 제 1 항에 있어서,
    상기 인코딩하는 단계는 버퍼링된 데이터의 양이 제 2 임계 값을 초과하는지 여부를 결정하는 단계를 더 포함하고, 상기 제 2 임계 값은 제 1 임계 값보다 더 큰, 방법.
  6. 제 5 항에 있어서,
    상기 인코딩하는 단계는, 버퍼링된 데이터의 상기 양이 상기 제 2 임계 값을 초과하면, 가상 인트라-프레임을 유지하고 상기 가상 인트라-프레임에 선행하는 인코딩된 비디오 콘텐츠를 폐기하는 단계를 더 포함하는, 방법.
  7. 제 1 항에 있어서,
    트리거링 사건을 표시하는 정보를 수신하는 단계; 및
    수신된 정보에 기초하여, 버퍼링된 데이터의 적어도 일부를 수신자에게 송신하기 위한 명령을 생성하는 단계를 더 포함하는, 방법.
  8. ◈청구항 8은(는) 설정등록료 납부시 포기되었습니다.◈
    제 7 항에 있어서,
    상기 트리거링 사건은 비디오 콘텐츠에 대한 요청, 수신된 비디오 스트림 내의 선결정된 이벤트의 발생, 인터페이스를 통한 선결정된 데이터의 수신, 또는 센서에 의한 선결정된 이벤트의 검출 중 적어도 하나를 포함하는, 방법.
  9. 제 7 항에 있어서,
    상기 명령을 생성하는 단계는,
    상기 버퍼링된 데이터가 인트라-프레임 및 가상 인트라-프레임을 포함하는지 여부를 결정하는 단계;
    상기 버퍼링된 데이터가 상기 인트라-프레임 및 가상 인트라-프레임을 포함하는 경우, 상기 가상 인트라-프레임을 폐기하고 대응하는 인터-프레임을 유지하는 단계; 및
    상기 버퍼링된 데이터 부분을 상기 인트라-프레임에 기초하여 생성하는 단계를 더 포함하는, 방법.
  10. 제 7 항에 있어서,
    상기 버퍼링된 데이터가 상기 가상 인트라-프레임을 포함하고 상기 인트라-프레임을 포함하지 않는지 여부를 결정하는 단계; 및
    상기 버퍼링된 데이터가 상기 가상 인트라-프레임을 포함하고 상기 인트라-프레임을 포함하지 않는 경우, 상기 버퍼링된 데이터 부분을 상기 가상 인트라-프레임에 기초하여 생성하는 단계를 더 포함하는, 방법.
  11. 제 1 항에 있어서,
    압축된 비디오 데이터의 적어도 하나의 프레임을 수신하는 단계;
    수신된 프레임을 디코딩하는 단계;
    상기 디코딩된 프레임이 인트라-프레임에 대응하는지 여부를 결정하는 단계; 및
    상기 디코딩된 프레임이 인트라-프레임에 대응하면 적어도 상기 디코딩된 프레임을 데이터 저장소 내에 저장하는 단계를 더 포함하는, 방법.
  12. 제 11 항에 있어서,
    상기 디코딩된 프레임이 인터-프레임에 대응한다고 결정하는 단계;
    상기 디코딩된 프레임이 인터-프레임인 경우, 상기 수신된 데이터와 연관된 픽쳐-그룹 길이를 계산하는 단계;
    계산된 픽쳐-그룹 길이가 선결정된 임계 길이를 초과하는지 여부를 결정하는 단계; 및
    계산된 픽쳐-그룹 길이가 상기 선결정된 임계 길이를 초과하지 않는다면, 적어도 상기 디코딩된 인터-프레임을 상기 데이터 저장소 내에 저장하는 단계를 더 포함하는, 방법.
  13. 제 12 항에 있어서,
    상기 계산된 픽쳐-그룹 길이가 상기 선결정된 임계 길이를 초과한다면, 추가적 인트라-프레임을 상기 디코딩된 인터-프레임 데이터에 기초하여 생성하는 단계; 및
    적어도 상기 추가적 인트라-프레임을 상기 데이터 저장소 내에 저장하는 단계를 더 포함하는, 방법.
  14. ◈청구항 14은(는) 설정등록료 납부시 포기되었습니다.◈
    제 1 항에 있어서,
    압축된 비디오 콘텐츠는 비트 레이트의 대응하는 값과 연관되고; 그리고
    상기 인코딩하는 단계는 상기 압축된 비디오 콘텐츠 내의 대응하는 시간적 포지션에서 적어도 하나의 스위칭 포인트를 확립하는 단계를 더 포함하는, 방법.
  15. ◈청구항 15은(는) 설정등록료 납부시 포기되었습니다.◈
    제 14 항에 있어서,
    상기 스위칭 포인트는 압축된 비디오 콘텐츠의 수신자 또는 배포자 중 적어도 하나가 비트 레이트를 수정하도록 하는, 방법.
  16. ◈청구항 16은(는) 설정등록료 납부시 포기되었습니다.◈
    제 14 항에 있어서,
    압축된 비디오 데이터 및 상기 스위칭 포인트와 연관되는 정보를 데이터 저장소 내에 저장하기 위한 명령을 생성하는 단계를 더 포함하는, 방법.
  17. ◈청구항 17은(는) 설정등록료 납부시 포기되었습니다.◈
    제 16 항에 있어서,
    상기 스위칭 포인트를 확립하는 단계는,
    대응하는 시간적 포지션과 연관되는 인터-프레임을 식별하는 단계;
    식별된 인터-프레임을 디코딩하고 가상 인트라-프레임을 디코딩된 인터-프레임 데이터에 기초하여 계산하는 단계; 및
    데이터 저장소 내의 저장을 위하여 상기 시간적 포지션에서 상기 가상 인트라-프레임을 출력하는 단계를 포함하는, 방법.
  18. ◈청구항 18은(는) 설정등록료 납부시 포기되었습니다.◈
    제 14 항에 있어서,
    상기 인코딩하는 단계는, 복수 개의 스위칭 포인트를 상기 압축된 비디오 콘텐츠 내의 대응하는 시간적 포지션에서 확립하는 단계를 더 포함하는, 방법.
  19. ◈청구항 19은(는) 설정등록료 납부시 포기되었습니다.◈
    제 18 항에 있어서,
    상기 대응하는 시간적 포지션은 상기 압축된 비디오 콘텐츠 내에서 고정된 간격으로 배치되는, 방법.
  20. ◈청구항 20은(는) 설정등록료 납부시 포기되었습니다.◈
    제 14 항에 있어서,
    상기 방법은, 상기 스위칭 포인트를 생성하기 위한 요청을 수신하는 단계로서, 상기 요청은 상기 압축된 비디오 콘텐츠 내의 시간적 포지션을 식별하는 정보를 포함하는, 단계를 포함하고, 그리고
    상기 인코딩하는 단계는 상기 요청에 응답하여 상기 식별된 시간적 포지션에서 상기 스위칭 포인트를 확립하는 단계를 더 포함하는, 방법.
  21. 장치로서,
    비디오 콘텐츠의 스트림을 인코딩하여 압축된 비디오 데이터를 생성하도록 구성되는 비디오 코덱으로서, 상기 압축된 비디오 데이터는 인트라-프레임 및 복수 개의 대응하는 인터-프레임을 포함하는, 비디오 코덱; 및
    상기 비디오 코덱 유닛에 커플링되며 상기 압축된 비디오 데이터를 버퍼 내에 저장하도록 구성되는 스토리지 디바이스를 포함하고,
    상기 비디오 코덱은 더 나아가:
    인코딩된 인트라-프레임과 연관된 데이터를 획득하도록;
    인트라-프레임 데이터에 기초하여, 상기 비디오 콘텐츠 스트림의 부분을 인코딩하여 상기 인터-프레임 중 대응하는 하나를 생성하도록;
    상기 버퍼 내에 저장된 데이터의 양이 제 1 임계 값을 초과하는지 여부를 결정하도록;
    버퍼링된 데이터의 양이 제 1 임계 값을 초과하면, 생성된 인터-프레임을 디코딩하고 가상 인트라-프레임을 디코딩된 인터-프레임 데이터에 기초하여 계산하도록; 그리고
    상기 버퍼 내로의 저장을 위하여 상기 가상 인트라-프레임을 상기 대응하는 인터-프레임과 함께 출력으로서 제공하도록 구성되는, 장치.
  22. 제 21 항에 있어서,
    상기 비디오 코덱은 더 나아가:
    상기 비디오 콘텐츠 스트림의 제 1 부분을 인코딩하여 상기 인트라-프레임을 생성하도록 구성되고,
    상기 제 1 부분은 상기 인터-프레임과 연관된 상기 비디오 콘텐츠 스트림의 부분에 선행하는, 장치.
  23. 제 21 항에 있어서,
    상기 비디오 코덱은 더 나아가:
    버퍼링된 데이터의 양이 제 1 임계 값을 초과하면, 압축된 비디오 데이터와 연관된 픽쳐-그룹 길이를 계산하도록;
    계산된 픽쳐-그룹 길이가 선결정된 임계 길이를 초과하는지 여부를 결정하도록; 그리고
    계산된 픽쳐-그룹 길이가 선결정된 임계 길이를 초과하지 않으면, 상기 비디오 콘텐츠 스트림의 추가적 부분을 인코딩하여 추가적 인터-프레임을 생성하도록 구성되는, 장치.
  24. 제 23 항에 있어서,
    상기 버퍼는 인트라-프레임 및 대응하는 인터-프레임의 하나 이상의 이전에-인코딩된 그룹을 포함하고; 그리고
    계산된 픽쳐-그룹 길이가 선결정된 임계 길이를 초과하면, 상기 비디오 코덱은 더 나아가, 인트라-프레임 및 대응하는 인터-프레임의 상기 이전에-인코딩된 그룹을 폐기하도록 구성되는, 장치.
  25. ◈청구항 25은(는) 설정등록료 납부시 포기되었습니다.◈
    제 21 항에 있어서,
    상기 비디오 코덱은 더 나아가:
    버퍼링된 데이터의 양이 제 2 임계 값을 초과하는지 여부를 결정하도록 구성되고, 상기 제 2 임계 값은 제 1 임계 값보다 더 큰, 장치.
  26. ◈청구항 26은(는) 설정등록료 납부시 포기되었습니다.◈
    제 25 항에 있어서,
    상기 비디오 코덱은 더 나아가:
    버퍼링된 데이터의 상기 양이 상기 제 2 임계 값을 초과하면, 가상 인트라-프레임을 유지하고 상기 가상 인트라-프레임에 선행하는 인코딩된 비디오 콘텐츠를 폐기하도록 구성되는, 장치.
  27. ◈청구항 27은(는) 설정등록료 납부시 포기되었습니다.◈
    제 21 항에 있어서,
    상기 비디오 코덱은 더 나아가:
    트리거링 사건을 표시하는 정보를 수신하도록; 그리고
    수신된 정보에 기초하여, 상기 버퍼링된 데이터의 적어도 일부를 수신자에게 송신하기 위한 명령을 생성하도록 구성되는, 장치.
  28. ◈청구항 28은(는) 설정등록료 납부시 포기되었습니다.◈
    제 27 항에 있어서,
    상기 비디오 코덱은 더 나아가:
    상기 버퍼링된 데이터가 인트라-프레임 및 가상 인트라-프레임을 포함하는지 여부를 결정하도록;
    상기 버퍼링된 데이터가 상기 인트라-프레임 및 가상 인트라-프레임을 포함하는 경우, 상기 가상 인트라-프레임을 폐기하고 대응하는 인터-프레임을 유지하도록; 그리고
    상기 버퍼링된 데이터 부분을 상기 인트라-프레임에 기초하여 생성하도록 구성되는, 장치.
  29. ◈청구항 29은(는) 설정등록료 납부시 포기되었습니다.◈
    제 27 항에 있어서,
    상기 비디오 코덱은 더 나아가:
    버퍼링된 데이터가 상기 가상 인트라-프레임을 포함하고 상기 인트라-프레임을 포함하지 않는지 여부를 결정하도록;
    상기 버퍼링된 데이터가 상기 가상 인트라-프레임을 포함하고 상기 인트라-프레임을 포함하지 않는 경우, 상기 버퍼링된 데이터 부분을 상기 가상 인트라-프레임에 기초하여 생성하도록 구성되는, 장치.
  30. 제 21 항에 있어서,
    상기 비디오 코덱은 더 나아가:
    압축된 비디오 데이터의 적어도 하나의 프레임을 수신하도록;
    수신된 프레임을 디코딩하도록;
    상기 디코딩된 프레임이 인트라-프레임에 대응하는지 여부를 결정하도록; 그리고
    상기 디코딩된 프레임이 인트라-프레임에 대응하면 적어도 상기 디코딩된 프레임을 데이터 저장소 내에 저장하기 위한 명령을 생성하도록 구성되는, 장치.
  31. 제 30 항에 있어서,
    상기 비디오 코덱은 더 나아가:
    상기 디코딩된 프레임이 인터-프레임에 대응한다고 결정하도록;
    상기 디코딩된 프레임이 인터-프레임인 경우, 상기 수신된 데이터와 연관된 픽쳐-그룹 길이를 계산하도록;
    계산된 픽쳐-그룹 길이가 선결정된 임계 길이를 초과하는지 여부를 결정하도록; 그리고
    계산된 픽쳐-그룹 길이가 상기 선결정된 임계 길이를 초과하지 않는다면, 적어도 상기 디코딩된 인터-프레임을 상기 스토리지 디바이스 내에 저장하기 위한 명령을 생성하도록 구성되는, 장치.
  32. 제 31 항에 있어서,
    상기 비디오 코덱은 더 나아가:
    상기 계산된 픽쳐-그룹 길이가 상기 선결정된 임계 길이를 초과한다면, 추가적 인트라-프레임을 상기 디코딩된 인터-프레임 데이터에 기초하여 생성하도록; 그리고
    적어도 상기 추가적 인트라-프레임을 상기 스토리지 디바이스 내에 저장하기 위한 명령을 생성하도록 구성되는, 장치.
  33. ◈청구항 33은(는) 설정등록료 납부시 포기되었습니다.◈
    제 21 항에 있어서,
    압축된 비디오 콘텐츠는 비트 레이트의 대응하는 값과 연관되고; 그리고
    상기 비디오 코덱은 더 나아가, 상기 압축된 비디오 콘텐츠 내의 대응하는 시간적 포지션에서 적어도 하나의 스위칭 포인트를 확립하도록 구성되는, 장치.
  34. ◈청구항 34은(는) 설정등록료 납부시 포기되었습니다.◈
    제 33 항에 있어서,
    상기 스위칭 포인트는 압축된 비디오 콘텐츠의 수신자 또는 배포자 중 적어도 하나가 비트 레이트를 수정하도록 하는, 장치.
  35. ◈청구항 35은(는) 설정등록료 납부시 포기되었습니다.◈
    제 33 항에 있어서,
    상기 비디오 코덱은 더 나아가, 압축된 비디오 데이터 및 상기 스위칭 포인트와 연관되는 정보를 스토리지 디바이스 내에 저장하기 위한 명령을 생성하도록 구성되는, 장치.
  36. ◈청구항 36은(는) 설정등록료 납부시 포기되었습니다.◈
    제 35 항에 있어서,
    상기 비디오 코덱은 더 나아가:
    대응하는 시간적 포지션과 연관되는 인터-프레임을 식별하도록;
    식별된 인터-프레임을 디코딩하고 가상 인트라-프레임을 디코딩된 인터-프레임 데이터에 기초하여 계산하도록; 그리고
    스토리지 디바이스 내의 저장을 위하여 상기 시간적 포지션에서 상기 가상 인트라-프레임을 출력하도록 구성되는, 장치.
  37. ◈청구항 37은(는) 설정등록료 납부시 포기되었습니다.◈
    제 33 항에 있어서,
    상기 비디오 코덱은 더 나아가, 복수 개의 스위칭 포인트를 상기 압축된 비디오 콘텐츠 내의 대응하는 시간적 포지션에서 확립하도록 구성되는, 장치.
  38. ◈청구항 38은(는) 설정등록료 납부시 포기되었습니다.◈
    제 37 항에 있어서,
    상기 대응하는 시간적 포지션은 상기 압축된 비디오 콘텐츠 내에서 고정된 간격으로 배치되는, 장치.
  39. ◈청구항 39은(는) 설정등록료 납부시 포기되었습니다.◈
    제 33 항에 있어서,
    상기 비디오 코덱은 더 나아가:
    상기 스위칭 포인트를 생성하기 위한 요청을 수신하되, 상기 요청은 상기 압축된 비디오 콘텐츠 내의 시간적 포지션을 식별하는 정보를 포함하도록, 그리고
    상기 요청에 응답하여 상기 식별된 시간적 포지션에서 상기 스위칭 포인트를 확립하도록 구성되는, 장치.
  40. 유형의(tangible) 비 일시적 컴퓨터-판독가능 매체로서,
    적어도 하나의 프로세서에 의하여 실행될 때 상기 적어도 하나의 프로세서가 제 1 항의 방법을 수행하도록 하는 명령이 저장된, 컴퓨터-판독가능 매체.
  41. 삭제
  42. 삭제
  43. 삭제
  44. 삭제
  45. 삭제
  46. 삭제
  47. 삭제
  48. 삭제
  49. 삭제
  50. 삭제
  51. 삭제
  52. 삭제
  53. 삭제
  54. 삭제
  55. 삭제
  56. 삭제
  57. 삭제
  58. 삭제
KR1020157002089A 2012-06-28 2013-06-26 가상 인트라-프레임을 사용하여 비디오 콘텐츠를 인코딩하기 위한 시스템 및 방법 KR102077556B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201261665855P 2012-06-28 2012-06-28
US61/665,855 2012-06-28
PCT/EP2013/063364 WO2014001381A2 (en) 2012-06-28 2013-06-26 System and method for encoding video content using virtual intra-frames

Publications (2)

Publication Number Publication Date
KR20150040872A KR20150040872A (ko) 2015-04-15
KR102077556B1 true KR102077556B1 (ko) 2020-02-14

Family

ID=48782290

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020157002089A KR102077556B1 (ko) 2012-06-28 2013-06-26 가상 인트라-프레임을 사용하여 비디오 콘텐츠를 인코딩하기 위한 시스템 및 방법

Country Status (6)

Country Link
US (2) US9813732B2 (ko)
EP (1) EP2868107B1 (ko)
JP (1) JP6169172B2 (ko)
KR (1) KR102077556B1 (ko)
CN (2) CN108965883B (ko)
WO (1) WO2014001381A2 (ko)

Families Citing this family (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150189012A1 (en) * 2014-01-02 2015-07-02 Nvidia Corporation Wireless display synchronization for mobile devices using buffer locking
US9691181B2 (en) * 2014-02-24 2017-06-27 Sony Interactive Entertainment Inc. Methods and systems for social sharing head mounted display (HMD) content with a second screen
US20150295783A1 (en) * 2014-04-10 2015-10-15 Screenovate Technologies Ltd. Method for real-time multimedia interface management sensor data
US20150295973A1 (en) * 2014-04-10 2015-10-15 Screenovate Technologies Ltd. Method for real-time multimedia interface management
KR102264161B1 (ko) * 2014-08-21 2021-06-11 삼성전자주식회사 이미지 처리 장치, 이미지 처리 시스템, 이미지 처리 시스템의 동작방법 및 이미지 처리 시스템을 포함하는 시스템 온 칩
JP6239472B2 (ja) * 2014-09-19 2017-11-29 株式会社東芝 エンコード装置、デコード装置、ストリーミングシステム、および、ストリーミング方法
EP3021579B1 (en) * 2014-11-14 2016-10-12 Axis AB Method and encoder system for encoding video
EP3041233A1 (en) * 2014-12-31 2016-07-06 Thomson Licensing High frame rate-low frame rate transmission technique
CN105847825A (zh) * 2015-01-16 2016-08-10 杭州海康威视数字技术股份有限公司 视频编码码流的编码、索引存储和访问方法及相应装置
US10284877B2 (en) 2015-01-16 2019-05-07 Hewlett Packard Enterprise Development Lp Video encoder
CN105847722B (zh) 2015-01-16 2019-04-12 杭州海康威视数字技术股份有限公司 一种视频存储方法和装置、读取方法和装置以及存取系统
CN105847790A (zh) * 2015-01-16 2016-08-10 杭州海康威视数字技术股份有限公司 一种码流传输方法及装置
EP3070695B1 (en) * 2015-03-16 2017-06-14 Axis AB Method and system for generating an event video sequence, and camera comprising such system
CN105323637B (zh) * 2015-10-29 2018-08-24 无锡天脉聚源传媒科技有限公司 一种视频处理方法及装置
KR101742258B1 (ko) * 2016-02-29 2017-05-31 경희대학교 산학협력단 웹 기반 가상 데스크탑 프로토콜을 이용한 컨텐츠 제공 방법 및 장치
CN107193642A (zh) * 2016-03-14 2017-09-22 阿里巴巴集团控股有限公司 任务数据压缩切换方法、宜压缩程度评价方法及相关装置
WO2017218522A1 (en) * 2016-06-13 2017-12-21 Arris Enterprises Llc Reduction of startup time in remote hls clients
CN107592540B (zh) * 2016-07-07 2020-02-11 腾讯科技(深圳)有限公司 一种视频数据处理方法及装置
US10462336B2 (en) * 2017-03-15 2019-10-29 Microsoft Licensing Technology, LLC Low latency tearing without user perception
KR102497216B1 (ko) * 2017-05-10 2023-02-07 삼성전자 주식회사 슬라이스 기반의 압축을 수행하는 영상 처리 장치 및 영상 처리 방법
US10432970B1 (en) * 2018-06-14 2019-10-01 Telefonaktiebolaget Lm Ericsson (Publ) System and method for encoding 360° immersive video
JP7292901B2 (ja) * 2019-02-27 2023-06-19 キヤノン株式会社 送信装置、送信方法、及びプログラム
US11265599B2 (en) * 2019-06-11 2022-03-01 Nvidia Corporation Re-encoding predicted picture frames in live video stream applications
EP4189968A1 (en) * 2020-08-03 2023-06-07 Dolby Laboratories Licensing Corporation Dual stream dynamic gop access based on viewport change

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070174880A1 (en) * 2005-07-05 2007-07-26 Optibase Ltd. Method, apparatus, and system of fast channel hopping between encoded video streams
US20120014675A1 (en) * 2009-03-24 2012-01-19 Streamwide Method and Device for Storing a Portion of a Video Stream

Family Cites Families (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0695088B1 (en) 1994-07-29 2000-05-10 Sharp Kabushiki Kaisha Video storage type communication device
JP3321331B2 (ja) 1995-04-07 2002-09-03 シャープ株式会社 画像蓄積通信装置
US6167083A (en) 1997-04-04 2000-12-26 Avid Technology, Inc. Computer system and process for capture editing and playback of motion video compressed using interframe and intraframe techniques
US6483875B1 (en) 1997-06-19 2002-11-19 Sony Corporation Picture signal processing apparatus
EP0920216A1 (de) 1997-11-25 1999-06-02 Deutsche Thomson-Brandt Gmbh Verfahren und Vorrichtung zur Codierung und zur Decodierung einer Bildsequenz
DE19806913A1 (de) 1998-02-19 1999-08-26 Cit Alcatel Verfahren zum Generieren einer Einsprungstelle in einen Bilddatenstrom und Vorrichtung zur Durchführung des Verfahrens
US6731684B1 (en) 1998-09-29 2004-05-04 General Instrument Corporation Method and apparatus for detecting scene changes and adjusting picture coding type in a high definition television encoder
GB2353655B (en) 1999-08-26 2003-07-23 Sony Uk Ltd Signal processor
US7058130B2 (en) 2000-12-11 2006-06-06 Sony Corporation Scene change detection
JP3857057B2 (ja) 2001-02-05 2006-12-13 株式会社日立製作所 動画像データの記録再生方法および装置
US7376341B2 (en) 2001-07-12 2008-05-20 Thomson Licensing Modifying video signals by converting non-intra pictures
US6804301B2 (en) 2001-08-15 2004-10-12 General Instrument Corporation First pass encoding of I and P-frame complexity for compressed digital video
US20030163477A1 (en) * 2002-02-25 2003-08-28 Visharam Mohammed Zubair Method and apparatus for supporting advanced coding formats in media files
CN1650628B (zh) * 2002-02-25 2010-10-13 索尼电子有限公司 用于支持mp4中的avc的方法和设备
JP4355156B2 (ja) * 2002-04-16 2009-10-28 パナソニック株式会社 画像復号化方法及び画像復号化装置
US7555042B2 (en) 2003-01-08 2009-06-30 Samsung Electronics Co., Ltd. Method and apparatus for reverse play
JP4066852B2 (ja) 2003-03-04 2008-03-26 株式会社日立製作所 ビデオ符号化方式変換装置、変換方法、およびこれを用いたビデオ記録再生装置
KR100492567B1 (ko) 2003-05-13 2005-06-03 엘지전자 주식회사 이동통신 시스템의 http 기반 비디오 스트리밍 장치및 방법
US20040260827A1 (en) * 2003-06-19 2004-12-23 Nokia Corporation Stream switching based on gradual decoder refresh
US20060034522A1 (en) * 2004-08-10 2006-02-16 Nader Mohsenian Method and system for equalizing video quality using selective re-encoding
EP1638333A1 (en) * 2004-09-17 2006-03-22 Mitsubishi Electric Information Technology Centre Europe B.V. Rate adaptive video coding
US7746928B2 (en) * 2004-12-30 2010-06-29 General Instruments Corporation Method and apparatus for providing rate control
US7636395B2 (en) 2005-03-14 2009-12-22 Nokia Corporation Method and device for splicing video data in compressed domain
US20060239563A1 (en) 2005-04-25 2006-10-26 Nokia Corporation Method and device for compressed domain video editing
JP4534935B2 (ja) 2005-10-04 2010-09-01 株式会社日立製作所 トランスコーダ、記録装置及びトランスコード方法
KR101518358B1 (ko) * 2007-06-19 2015-05-08 밴트릭스 코오퍼레이션 비디오 코딩에서 프레임 복잡성, 버퍼 레벨 및 인트라 프레임들의 위치를 이용하는 버퍼 기반의 비율 제어
JP5267655B2 (ja) 2009-03-19 2013-08-21 富士通株式会社 画像符号化装置、画像符号化制御方法および画像符号化プログラム
US9313512B2 (en) * 2009-11-25 2016-04-12 Vudu, Inc. Multiple bit rate encoding by segments
US8681858B2 (en) * 2009-12-23 2014-03-25 General Instrument Corporation Rate control for two-pass encoder
US9137551B2 (en) * 2011-08-16 2015-09-15 Vantrix Corporation Dynamic bit rate adaptation over bandwidth varying connection
CN103959774B (zh) * 2011-11-18 2017-11-24 谷歌技术控股有限责任公司 用于高效视频编码的运动信息的有效存储
US9106887B1 (en) * 2014-03-13 2015-08-11 Wowza Media Systems, LLC Adjusting encoding parameters at a mobile device based on a change in available network bandwidth

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070174880A1 (en) * 2005-07-05 2007-07-26 Optibase Ltd. Method, apparatus, and system of fast channel hopping between encoded video streams
US20120014675A1 (en) * 2009-03-24 2012-01-19 Streamwide Method and Device for Storing a Portion of a Video Stream

Also Published As

Publication number Publication date
CN104641638A (zh) 2015-05-20
US20160050434A1 (en) 2016-02-18
CN104641638B (zh) 2018-08-03
CN108965883B (zh) 2022-08-30
WO2014001381A3 (en) 2014-03-06
KR20150040872A (ko) 2015-04-15
JP6169172B2 (ja) 2017-07-26
WO2014001381A2 (en) 2014-01-03
US20150156511A1 (en) 2015-06-04
EP2868107B1 (en) 2021-03-17
US9813732B2 (en) 2017-11-07
CN108965883A (zh) 2018-12-07
JP2015521825A (ja) 2015-07-30
EP2868107A2 (en) 2015-05-06
US10009630B2 (en) 2018-06-26

Similar Documents

Publication Publication Date Title
KR102077556B1 (ko) 가상 인트라-프레임을 사용하여 비디오 콘텐츠를 인코딩하기 위한 시스템 및 방법
US11108745B2 (en) Uploading and transcoding media files
US10972519B2 (en) Real-time video streaming to client video element
EP3863296B1 (en) Streaming frames of spatial elements to a client device
US20120195356A1 (en) Resource usage control for real time video encoding
JP5227875B2 (ja) 動画像符号化装置
US11856191B2 (en) Method and system for real-time content-adaptive transcoding of video content on mobile devices to save network bandwidth during video sharing
US20200374536A1 (en) Method and devices for encoding and streaming a video sequence over a plurality of network connections
US20070127437A1 (en) Medium signal transmission method, reception method, transmission/reception method, and device
CN112073737A (zh) 在直播视频流应用中重新编码预测的图像帧
EP2882193A1 (en) Uploading and transcoding media files
US11463651B2 (en) Video frame-based media stream bandwidth reduction
US20130007206A1 (en) Transmission apparatus, control method for transmission apparatus, and storage medium
KR20140070896A (ko) 비디오 스트리밍 방법 및 그 전자 장치
JP7346518B2 (ja) 画像処理デバイス、カメラ、およびビデオ画像のシーケンスをエンコードするための方法
WO2018123078A1 (ja) 監視カメラシステム
JP2006262205A (ja) エンコーダ及びコーデック方法並びにネットワーク伝送システム

Legal Events

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