CN113906764A - 可中断视频转码 - Google Patents

可中断视频转码 Download PDF

Info

Publication number
CN113906764A
CN113906764A CN201980097124.7A CN201980097124A CN113906764A CN 113906764 A CN113906764 A CN 113906764A CN 201980097124 A CN201980097124 A CN 201980097124A CN 113906764 A CN113906764 A CN 113906764A
Authority
CN
China
Prior art keywords
video
tracks
output
transcoded file
transcoding
Prior art date
Legal status (The legal status 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 status listed.)
Granted
Application number
CN201980097124.7A
Other languages
English (en)
Other versions
CN113906764B (zh
Inventor
过雅瑢
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Google LLC
Original Assignee
Google LLC
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 Google LLC filed Critical Google LLC
Priority to CN202310077743.8A priority Critical patent/CN116095336A/zh
Publication of CN113906764A publication Critical patent/CN113906764A/zh
Application granted granted Critical
Publication of CN113906764B publication Critical patent/CN113906764B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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/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
    • 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/231Content storage operation, e.g. caching movies for short term storage, replicating data over plural servers, prioritizing data for deletion
    • 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/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/234345Processing 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 the reformatting operation being performed only on part of the stream, e.g. a region of the image or a time segment
    • 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/234363Processing 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 altering the spatial resolution, e.g. for clients with a lower screen 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/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/234381Processing 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 altering the temporal resolution, e.g. decreasing the frame rate by frame skipping
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
    • H04N21/433Content storage operation, e.g. storage operation in response to a pause request, caching operations
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
    • H04N21/44Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs
    • H04N21/44016Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs involving splicing one content stream with another content stream, e.g. for substituting a video clip
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
    • H04N21/44Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs
    • H04N21/4402Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs involving reformatting operations of video signals for household redistribution, storage or real-time display
    • H04N21/440218Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs involving reformatting operations of video signals for household redistribution, storage or real-time display by transcoding between formats or standards, e.g. from MPEG-2 to MPEG-4
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
    • H04N21/44Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs
    • H04N21/4402Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs involving reformatting operations of video signals for household redistribution, storage or real-time display
    • H04N21/440245Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs involving reformatting operations of video signals for household redistribution, storage or real-time display the reformatting operation being performed only on part of the stream, e.g. a region of the image or a time segment
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
    • H04N21/44Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs
    • H04N21/4402Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs involving reformatting operations of video signals for household redistribution, storage or real-time display
    • H04N21/440263Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs involving reformatting operations of video signals for household redistribution, storage or real-time display by altering the spatial resolution, e.g. for displaying on a connected PDA
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
    • H04N21/44Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs
    • H04N21/4402Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs involving reformatting operations of video signals for household redistribution, storage or real-time display
    • H04N21/440281Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs involving reformatting operations of video signals for household redistribution, storage or real-time display by altering the temporal resolution, e.g. by frame skipping
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
    • H04N21/442Monitoring of processes or resources, e.g. detecting the failure of a recording device, monitoring the downstream bandwidth, the number of times a movie has been viewed, the storage space available from the internal hard disk
    • H04N21/44213Monitoring of end-user related data
    • H04N21/44218Detecting physical presence or behaviour of the user, e.g. using sensors to detect if the user is leaving the room or changes his face expression during a TV program
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/80Generation or processing of content or additional data by content creator independently of the distribution process; Content per se
    • H04N21/85Assembly of content; Generation of multimedia applications
    • H04N21/854Content authoring
    • H04N21/8547Content authoring involving timestamps for synchronizing content

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Business, Economics & Management (AREA)
  • Marketing (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Social Psychology (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Databases & Information Systems (AREA)
  • Television Signal Processing For Recording (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)

Abstract

本文描述的实施方式涉及对视频进行转码的方法、设备和计算机可读介质。在一些实施方式中,计算机实施的方法包括获得包括多个轨道的视频。该方法进一步包括确定对应于视频的部分转码文件是否可用。该方法进一步包括,如果部分转码文件可用,则获得与部分转码文件相关联的时间戳、对在与部分转码文件相关联的时间戳开始的视频的部分进行转码、以及将部分转码文件和视频的转码部分组合以生成输出视频。该方法进一步包括,如果部分转码文件不可用,则使用转码器从视频的开始对视频进行转码以获得多个输出轨道,以及组合多个输出轨道以获得输出视频。

Description

可中断视频转码
背景技术
用户使用诸如智能手机、平板电脑、计算机、可穿戴设备、相机等的各种设备来捕获视频。基于视频的长度、用于视频的编码类型、视频的分辨率和/或比特率等,视频文件的大小可以很大,例如,几兆字节或千兆字节。捕获的视频可以本地存储在设备上或服务器上,例如,存储在用户的图像或视频库中。例如,用户可以将视频存储在服务器上用于备份、与其他用户共享视频等。用户可以直接与其他用户共享视频,例如,经由消息传递或社交联网服务。
存储大型视频文件需要大量的存储空间。将大型视频文件传送到服务器需要大量的网络资源,例如,带宽。视频转码或压缩能够允许以较低分辨率、较低比特率等重新编码视频,使得存储视频所需的存储空间以及用于将视频传送到服务器或另一用户的用户设备的网络资源低于原始视频。
本文提供的背景技术描述是为了一般地呈现本公开的场境。目前命名的发明人的工作——就在此背景技术部分中对它进行描述来说,以及说明书的在提交时可能无法以其他方式作为现有技术的各方面均未被明确地或隐式地承认为针对本公开的现有技术。
发明内容
本文所述的实施方式涉及转码视频的方法、设备和计算机可读介质。
在一些实施方式中,计算机实施的方法包括获得包括多个轨道的视频。该方法可以进一步包括确定对应于视频的部分转码文件是否可用。响应于确定部分转码文件可用,该方法可以进一步包括获得与部分转码文件相关联的时间戳,利用转码器对视频的部分进行转码,其中视频的部分开始于与部分转码文件相关联的时间戳、以及将部分转码文件和视频的转码部分组合以生成输出视频。
响应于确定部分转码文件不可用,该方法可以进一步包括使用转码器对视频进行转码以获得多个输出轨道,其中从视频的开始执行转码,和组合多个输出轨道以获得输出视频。在一些实施方式中,输出视频可以具有比视频的分辨率低的分辨率或比视频的比特率低的比特率。
在一些实施方式中,该方法可以进一步包括在由转码器对视频进行转码期间接收中断,和响应于该中断,将转码器的输出保存为部分转码文件。在一些实施方式中,转码器的输出可以包括多个部分输出轨道,每个部分输出轨道对应于视频的多个轨道中的特定轨道。在这些实施方式中,该方法可以进一步包括,响应于中断,保存与部分转码文件相关联的配置设置。在一些实施方式中,配置设置可以包括多个部分输出轨道中的每个的格式。在一些实施方式中,配置设置可以包括比特率参数、宽度参数或高度参数。
在一些实施方式中,确定部分转码文件是否可用可以包括访问存储设备以确定部分转码文件是否存储在存储设备上。如果部分转码文件未存储在存储设备上,则确定部分转码文件不可用。如果部分转码文件存储在存储设备上,则该方法可以包括确定转码器的当前配置设置是否匹配与部分转码文件相关联的配置设置。如果当前配置设置匹配,则该方法可以包括确定部分转码文件可用。如果当前配置设置不匹配,则该方法可以包括确定部分转码文件不可用。在一些实施方式中,该方法可以包括从存储设备中删除部分转码文件。
在一些实施方式中,该方法可以进一步包括在由转码器对视频的部分进行转码期间接收中断,和响应于该中断,更新部分转码文件以包括转码器的部分输出。
在一些实施方式中,对视频进行转码可以包括对视频的多个轨道中的一个或多个进行解码,以获得对应原始数据,并且对用于多个轨道中的解码的一个或多个的原始数据进行编码,以获得多个输出轨道的对应输出轨道。在一些实施方式中,多个轨道可以包括至少一个音频轨道和至少一个视频轨道。在一些实施方式中,多个轨道可以进一步包括元数据轨道。
在一些实施方式中,至少一个视频轨道可以包括多个关键帧和多个非关键帧。每个关键帧和每个非关键帧可以与对应时间戳相关联。在一些实施方式中,与部分转码文件相关联的时间戳可以对应于多个关键帧中的特定关键帧。
在一些实施方式中,与部分转码文件相关联的时间戳可以包括多个时间值。每个时间值可以对应于多个轨道中的相应轨道。在这些实施方式中,对视频的部分进行转码可以包括对在多个时间值的相应时间值处开始的多个轨道中的每个进行解码,以获得对应原始数据,并且对多个轨道中的解码的一个或多个的原始数据进行编码,以获得多个输出轨道中的对应输出轨道。
一些实施方式包括计算设备,该计算设备包括处理器和耦合到处理器的存储器,具有被存储在其上的指令。当由处理器执行时,指令使处理器执行包括获得包括多个轨道的视频和确定与视频对应部分转码文件是否可用的操作。
响应于确定部分转码文件可用,处理器可以执行包括获得与部分转码文件相关联的时间戳、利用转码器对视频的部分进行转码以及将部分转码文件和视频的转码部分以生成输出视频的操作。视频部分可以在与部分转码文件相关联的时间戳开始。
响应于确定部分转码文件不可用,处理器可以执行包括使用转码器对视频进行转码以获得多个输出轨道以及组合多个输出轨道以获得输出视频的操作。可以从视频的开始执行转码;
在一些实施方式中,存储器上可以具有被存储在其上的进一步的指令,这些指令使处理器执行包括在由转码器对视频进行转码期间接收中断,和响应于该中断,将转码器的输出保存为部分转码文件的进一步的操作。
转码器的输出可以包括多个部分输出轨道。每个部分输出轨道可以对应于视频的多个轨道中的特定轨道。在一些实施方式中,操作可以进一步包括,响应于中断,保存与部分转码文件相关联的配置设置。在一些实施方式中,配置设置可以包括多个部分输出轨道中的每个的格式。在一些实施方式中,配置设置可以包括下述中的一个或多个:比特率参数、宽度参数或高度参数。
在一些实施方式中,存储器可以具有被存储在其上的进一步的指令,这些指令使处理器执行包括在由转码器对视频的部分进行转码期间接收中断,和响应于中断,更新部分转码的文件以包括转码器的部分输出的进一步的操作。
一些实施方式包括在其上存储有指令的非暂时性计算机可读介质,当由处理器执行时,这些指令使处理器执行包括获得包括多个轨道的视频和确定对应于视频的部分转码文件是否是可用的操作。
响应于确定部分转码文件可用,操作可以进一步包括获得与部分转码文件相关联的时间戳、利用转码器对视频的部分进行转码、以及将部分转码文件和视频的转码部分组合以生成输出视频。视频部分可以在与部分转码文件相关联的时间戳处开始。
响应于确定部分转码文件不可用,操作可以进一步包括使用转码器对视频进行转码以获得多个输出轨道,其中从视频的开始执行转码,和结合多个输出轨道以获得输出视频。
在一些实施方式中,非暂时性计算机可读介质可以包括存储在其上的进一步指令,这些指令使处理器执行进一步的操作,所述操作可以包括在由转码器对视频进行转码期间接收中断,和响应于该中断,将转码器的输出保存为部分转码文件。
在一些实施方式中,与部分转码文件相关联的时间戳可以包括多个时间值。每个时间值可以对应于多个轨道中的相应轨道。在这些实施方式中,对视频的部分进行转码的操作可以包括对从多个时间值的相应时间值处开始的多个轨道中的每个进行解码,以获得对应原始数据,和对多个轨道的解码后的一个或多个的原始数据进行编码,以获得多个输出轨道的对应输出轨道。
在一些实施方式中,计算机实施的方法包括获得包括多个轨道的视频。该方法进一步包括获得对应于视频的部分转码文件,其中时间戳与部分转码文件相关联。该方法进一步包括利用转码器对视频的部分进行转码,其中视频的部分在与部分转码文件相关联的时间戳处开始。该方法进一步包括组合部分转码文件和视频的转码部分以生成输出视频。在一些实施方式中,输出视频具有比视频的分辨率低的分辨率或比视频的比特率低的比特率中的至少一个。
在一些实施方式中,该方法可以进一步包括在由转码器对视频的部分进行转码期间接收中断,和响应于该中断,更新部分转码文件以包括转码器的部分输出。
在一些实施方式中,转码器的部分输出包括多个部分输出轨道。在一些实施方式中,每个部分输出轨道对应于视频的多个轨道中的相应轨道。在一些实施方式中,该方法可以进一步包括响应于中断保存与部分转码文件相关联的配置设置。在一些实施方式中,配置设置包括多个部分输出轨道中的每个的格式中的一种或多种,或者下述中的一种或多种:比特率参数、宽度参数或高度参数。
在一些实施方式中,多个轨道包括至少一个视频轨道,该视频轨道包括多个关键帧和多个非关键帧。在一些实施方式中,每个关键帧和每个非关键帧都与相应的时间戳相关联。在一些实施方式中,与部分转码文件相关联的时间戳对应于多个关键帧中的特定关键帧。
在一些实施方式中,时间戳包括多个时间值。在一些实施方式中,多个时间值中的每个时间值对应于多个轨道中的相应轨道。在一些实施方式中,对视频的部分进行转码可以包括对在多个时间值的相应时间值处开始的多个轨道中的每个进行解码,以获得对应原始数据,和对用于多个轨道中的解码的一个或多个的原始数据进行编码,以获得多个输出轨道中的对应输出轨道。
附图说明
图1是可以被用于本文所述的一个或多个实施方式的示例网络环境的框图。
图2是图示根据一些实施方式的要转码视频的示例方法的框图。
图3图示根据一些实施方式的转码视频的示例处理管线。
图4是可以被用于本文所述的一个或多个实施方式的示例设备的框图。
具体实施方式
视频转码或压缩是资源密集且缓慢的过程。对视频进行转码可能是计算上昂贵的操作,例如,就使用的处理容量、使用的内存和用于转码的能量而言。例如,在诸如智能手机或平板电脑的客户端设备上压缩诸如4K视频或高清(HD)视频的高质量视频可能耗费大量的时间,例如,等于视频长度、视频长度的两倍、或更长,具体取决于执行压缩的设备的配置。此外,因为压缩是计算上昂贵的操作,所以在用户积极使用客户端设备时执行压缩通常是不可行的,因为这样的操作可能影响客户端设备对用户任务的可用性和/或响应性。
避免这种情况的一种技术是在用户没有主动使用客户端设备的时间期间——例如,当客户端设备空闲时——执行视频压缩。但是,如果压缩被中断,例如,由于用户操作、由于操作系统中断等,则需要重新启动压缩,浪费计算资源。
此外,压缩视频所需的时间随着视频长度而增加,从而也增加在此类视频的压缩过程期间中断的可能性。例如,如果一定比例的压缩操作被中断,例如10%,则需要从头重新开始这种压缩。此外,在诸如智能手机、平板电脑、笔记本电脑等电池受限的设备上,这种浪费的计算也会浪费其中在设备上可用的量有限的能量。
鉴于这些问题中的一些问题,构思了本文描述的实施方式。根据此处描述的实施方式,描述了视频转码技术,其使得视频转码操作能够从转码操作被中断的点恢复。部分转码文件在中断时保存,并且在后续转码操作期间被使用,从而消除或减少计算资源和能量的浪费。所描述的实施方式可以处理任何类型的视频,包括具有单个轨道的视频、具有多个轨道的视频等。
图1图示可以在本文描述的一些实施方式中使用的示例网络环境100的框图。在一些实施方式中,网络环境100包括一个或多个服务器系统,例如,图1的示例中的服务器系统102和第二服务器系统140。例如,服务器系统102和140可以与网络130进行通信。服务器系统102可以包括服务器设备104和数据库106或者其他存储设备。在一些实施方式中,服务器设备104可以提供图像应用156b。第二服务器系统140可以包括第二服务器设备142,其被配置成提供一个或多个应用,例如应用A 144、应用B 146和应用C 148。在图1和其余附图中,在例如“156a”的引用数字的后面的字母表示对具有该特定引用数字的元件的引用。文本中没有后面字母的引用数字,例如“156”,表示对携带该引用数字的元件的实施例的一般引用。
网络环境100还可以包括一个或多个客户端设备,例如,客户端设备120、122、124和126,这些客户端设备可经由网络130与彼此和/或与服务器系统102和/或第二服务器系统140进行通信。网络130可以是任何类型的通信网络,包括因特网、局域网(LAN)、无线网络、交换机或集线器连接等中的一个或多个。在一些实施方式中,网络130可以包括设备之间的对等通信,例如使用对等无线协议(例如,
Figure BDA0003388924940000081
Wi-Fi Direct等)等。两个客户端设备120和122之间的对等通信的一个示例通过箭头132被示出。
为了便于图示,图1示出用于服务器系统102、服务器设备104以及数据库106、第二服务器系统140以及第二服务器设备142的一个框,并且示出用于客户端设备120、122、124和126的四个框。服务器框102、104、106、140以及142可以表示多个系统、服务器设备、和网络数据库,并且可按照与所示不同的配置提供这些框。例如,服务器系统102和/或第二服务器系统140可以表示可经由网络130与其他服务器系统进行通信的多个服务器系统。在一些实施方式中,例如,服务器系统102和/或第二服务器系统140可以包括云托管服务器。在一些示例中,数据库106和/或其他存储设备可以被设置在与服务器设备104分离的服务器系统框中并且可经由网络130与服务器设备104和其他服务器系统进行通信。
而且,可以存在任何数目的客户端设备。每个客户端设备可以是任何类型的电子设备,例如,台式计算机、膝上型计算机、便携式或移动设备、手机、智能手机、平板计算机、电视、TV机顶盒或娱乐设备、可穿戴设备(例如,显示眼镜或护目镜、腕表、头戴式耳机、臂章、珠宝等)、个人数字助理(PDA)、媒体播放器、游戏设备等。一些客户端设备还可以具有类似于数据库106或者其他存储的本地数据库。在一些实施方式中,网络环境100可以不具有所示的所有组件并且/或者可以具有包括其他类型的元件来代替本文描述的那些元件或者除了本文描述的那些元件之外还包括其他类型的元件的其他元件。
在各种实施方式中,终端用户U1、U2、U3和U4可以使用对应客户端设备120、122、124和126来与服务器系统102和/或彼此进行通信。在一些示例中,用户U1、U2、U3和U4可以经由在对应客户端设备和/或服务器系统102或者第二服务器系统140运行的应用和/或经由在服务器系统102或者第二服务器系统140上实现的其他类型的网络服务彼此交互。例如,对应客户端设备120、122、124和126可以向且从一个或多个服务器系统(例如,系统102、第二服务器系统140)传达数据。
在一些实施方式中,服务器系统102和/或第二服务器系统140可以向客户端设备提供适当的数据,使得每个客户端设备可接收上传到服务器系统102或者第二服务器系统140和/或网络服务的通信内容或共享内容。在一些示例中,用户U1至U4可经由音频或视频会议、音频、视频或文本聊天、或其他通信模式或应用交互。
由服务器系统102或者第二服务器系统140实现的网络服务可以包括允许用户进行各种通信、形成链路和关联、上传并发布诸如图像、文本、视频、音频和其他类型的内容的共享内容、和/或执行其他功能的系统。例如,客户端设备可显示接收到的数据,诸如发送或流式传输到客户端设备并且经由服务器和/或网络服务从不同的客户端设备(或者直接地从不同的客户端设备)起源或者从服务器系统和/或网络服务起源的内容帖子。在一些实施方式中,客户端设备可例如使用如上所述的客户端设备之间的对等通信来直接地彼此通信。在一些实施方式中,“用户”可以包括一个或多个程序或虚拟实体,以及与系统或网络对接的人。
在一些实施方式中,客户端设备120、122、124和/或126中的任一个可提供一个或多个应用。例如,如图1中所示,客户端设备120可以提供应用156a和一个或者多个其他应用154。客户端设备122至126还可以提供类似的应用。可以使用客户端设备120的硬件和/或软件来实现图像应用156a。在不同的实施方式中,图像应用156a可以是独立的客户端应用,例如,在客户端设备120至124中的任何一个上执行,或者可以与在服务器系统102上设置的图像应用156b协同工作。图像应用156a和图像应用156b可以提供与图像和/或视频有关的各种功能。例如,这样的功能可以包括以下一项或多项:使用照相捕获图像或视频、分析图像或视频以关联一个或多个标签、修改图像或视频、将图像或视频存储在库或数据库中等。
在一些实施方式中,图像应用156可以使用户能够管理存储图像和/或视频的库或数据库。例如,用户可以使用客户端设备(例如,客户端设备120至126中的任何一个)上的图像应用156a的备份功能性,以将客户端设备上的本地图像或视频备份到服务器设备,例如服务器设备104。例如,用户可以手动选择一个或多个要备份的图像或视频,或者指定标识要备份的图像或视频的备份设置。将图像或视频备份到服务器设备可以包括例如与服务器设备104上的图像应用156b协作,将图像或视频传送到服务器以由服务器存储。
在一些实施方式中,可以在将视频传送到服务器用于备份之前压缩视频以减小视频的文件大小。例如,这样的压缩可以包括对视频进行转码以减少视频的比特率、视频的分辨率或视频的帧速率中的一个或多个。转码还可以包括改变视频的文件格式。减少视频的文件大小减少用于将视频从客户端设备传送到服务器的网络量。此外,与以原始格式存储视频相比,较小的文件大小减少在服务器处存储视频所需的存储空间量。在一些实施方式中,图像应用156可以实现支持例如响应于接收到的中断暂停转码操作的视频转码,并在稍后恢复转码操作。
在一些实施方式中,客户端设备120可以包括一个或者多个其他应用154。例如,其他应用154是提供各种类型的功能性的应用,例如,日历、地址簿、电子邮件、web浏览器、购物、运输(例如,出租车、火车、机票预订等)、娱乐(例如,音乐播放器、视频播放器、游戏应用等)、社交网络(例如,消息传递或聊天、音频/视频通话、共享图像/视频等)等等。在一些实施方式中,其他应用154中的一个或多个可以是在客户端设备120上执行的独立应用程序。在一些实施方式中,其他应用程序154中的一个或多个可以访问服务器系统,例如,服务器系统102和/或第二服务器系统140,其提供数据和/或其他应用154的功能。例如,示出为由第二服务器系统140提供的应用144、146和148中的任何一个可以向一个或多个其他应用154提供数据和/或命令。在一些实施方式中,服务器应用程序144-148可以是由客户端设备例如经由网络浏览器或其他客户端程序访问的独立的应用。
客户端设备120、122、124和/或126上的用户界面可使得能够显示用户内容和其他内容,包括图像、视频、数据、和其他内容以及通信、隐私设定、通知、和其他数据。可使用客户端设备上的软件、服务器设备上的软件、和/或客户端软件和在服务器设备104和/或第二服务器设备142上执行的服务器软件的组合——例如,与服务器系统102和/或第二服务器设备142通信的应用软件或客户端软件——来显示这样的用户界面。用户界面可由客户端设备或服务器设备的显示设备——例如,触摸屏或其他显示屏幕、投影仪等——来显示。在一些实施方式中,在服务器系统上运行的应用可与客户端设备进行通信,以在客户端设备处接收用户输入并且在客户端设备处输出诸如可视数据、音频数据等的数据。
本文描述的特征的其他实施方式可使用任何类型的系统和/或服务。例如,代替社交联网服务或者除了社交联网服务之外,还可使用其他联网服务(例如,连接到因特网)。任何类型的电子设备可利用本文描述的特征。一些实施方式可在与计算机网络断开连接或者间歇地连接到计算机网络的一个或多个客户端或服务器设备上提供本文描述的一个或多个特征。在一些示例中,包括或者连接到显示设备的客户端设备可以显示例如先前通过通信网络接收的、存储在客户端设备本地的存储设备上的内容帖子。
本文所指的图像可以包括具有像素的数字图像,所述像素具有一个或多个像素值(例如,颜色值、亮度值等)。图像可以是静态图像(例如,静态照片、具有单帧的图像等)、动态图像(例如,动画、动画的GIF、其中一部分图像包括运动而其他部分是静态的电影摄影等)或视频(例如,可能包括音频的一系列图像或图像帧)。尽管本文档的其余部分将图像称为静态图像,但可以理解,本文所述的技术适用于动态图像、视频等。例如,本文所述的实施方式可以与静态图像(例如,照片或其他图像)、视频或动态图像一起使用。
图2是图示根据一些实施方式的转码视频的示例方法200的流程图。在一些实施方式中,方法200可以例如在如图1中所示的服务器系统102上实施。在一些实施方式中,方法200的一些或全部可以在如图1中所示的一个或多个客户端设备120、122、124、126、一个或多个服务器设备、和/或在服务器设备和客户端设备两者上实施。在所描述的示例中,实施系统包括一个或多个数字处理器或处理电路(“处理器”),以及一个或多个存储设备(例如,数据库106或其他存储器)。在一些实施方式中,一个或多个服务器和/或客户端的不同组件可以进行方法200的不同框或其他部分。在一些示例中,第一设备被描述为执行方法200的框。一些实施方式可以具有可以将结果或数据发送到第一设备的一个或多个其他设备(例如,其他客户端设备或服务器设备)执行的方法200的一个或多个框。
在一些实施方式中,方法200或方法的部分可以由系统自动发起。在一些实施方式中,实施系统是第一设备。例如,该方法(或其部分)可以周期性地被执行,或者基于一个或多个特定事件或条件来执行,例如,客户端设备进入空闲状态、未备份的阈值数量的视频、新视频正在被捕获或存储在客户端设备上、自从方法200的最后一次执行以来预定的时间段已期满、和/或在方法读取的设置中可以指定的发生的一个或多个其他条件。
方法200可以始于框202。在框202,获得视频。例如,视频可以是由客户端设备120-126中的任一个捕获或以其他方式获得的视频。在一些实施方式中,视频可以包括多个轨道。例如,多个轨道可以包括一个或多个音频轨道和/或一个或多个视频轨道。一个或多个音频轨道可以包括例如单个音频轨道(单声道)、两个音频轨道(立体声)、两个以上的音频轨道(例如,对于环绕声,每种语言一个轨道等),或任何其他数量的音频轨道。一个或多个视频轨道可以包括例如单个视频轨道、两个视频轨道(例如,对于三维视频)等。在一些实施方式中,视频还可以包括一个或多个元数据轨道。例如,元数据轨道可以包括一种或多种语言的文本标题、有关视频的信息,例如,捕获位置、捕获时间、MIME格式等。
视频轨道可以包括多个帧,包括多个关键帧和多个非关键帧。每个视频帧可以与相应的时间戳相关联。多个帧可以基于相应的时间戳按序列排列。在一些实施方式中,关键(key)帧可以包括不需要其他视频帧来解码的内编码帧(intra-coded frame)(I帧)。在一些实施方式中,非关键(non-key)帧可以包括预测帧(P帧)。解码P帧可能需要来自一个或多个先前帧的数据。在一些实施方式中,非关键帧可以包括双向预测帧(B帧)。解码B帧可能需要来自一个或多个先前帧和一个或多个后续帧的数据。可以基于相关联的时间戳来执行帧的解码。
在一些实施方式中,视频可以是未压缩或使用无损压缩来压缩的高质量视频。高质量视频可能具有高比特率和高分辨率。例如,使用智能手机或其他设备捕获的高质量视频可以是4K视频,例如,具有4096个像素的水平像素分辨率;高清晰度(HD)视频,例如,具有1080个像素的水平像素分辨率等。比特率可以对应于视频的颜色信息,例如,24位颜色、16位颜色等。高质量视频可以需要大量的存储空间,例如,一分钟的4K视频可能需要数百兆的存储空间(例如,300MB或更多),一分钟的高清视频可能需要一百多兆的存储空间。此外,通过网络传送高质量视频,例如,用于存储在服务器(例如,服务器设备104)上可能需要大量的网络资源。
音频轨道可以包括多个音频样本或音频帧。每个音频样本或音频帧可以与对应时间戳相关联。在一些实施方式中,视频中的音频轨道和视频轨道的帧可以被同步。例如,每个音频帧可以对应于视频的特定帧,例如,特定的关键帧(或其他帧),使得两者都与相同的时间戳相关联。在实施方式中,音频轨道和视频轨道可以相互独立,使得与视频帧相关联的时间戳可以不同于与音频帧相关联的时间戳。例如,如果视频中的视频轨道具有每秒30帧(fps)的帧速率,则每秒可能存在30个时间戳,而同一视频的音频轨道可能具有每秒更少(例如,1、2、5等)的时间戳。
在一些实施方式中,元数据轨道也可以与时间戳相关联。例如,字幕或文本元数据可能与时间戳相关联。与元数据轨道相关联的时间戳可以与视频轨道的时间戳同步,或者可以是独立的。
在一些实施方式中,对视频进行转码可以包括例如将视频转换为不同的比特率和/或分辨率。在一些实施方式中,转码可以包括改变视频的帧速率。例如,当在客户端设备上实现方法200例如以压缩视频以使用较少量的存储空间、在将视频备份到服务器之前压缩视频时,转码可以包括减少比特率、减少视频的分辨率、减少视频的帧率等中的一个或者多个,使得转码后获得的输出视频具有比视频更小的文件大小。在不同的实施方式中,可以选择转码参数以面向特定压缩比(例如,4:1)、特定目标分辨率(例如,将4K视频改变为HD视频等)等。在一些实施方式中,转码可以改变视频的文件类型,例如,将视频转换为与存储视频的原始文件类型不同的文件类型。
在一些示例中,对视频进行转码可以仅包括格式转换,而基本上不改变视频的质量。例如,可以执行这样的转码以将视频转换为在各种设备上支持回放的标准格式、将视频转换为适合通过网络流式传输的格式等。在一些示例中,转码可以包括增加视频的分辨率,例如,通过上采样,或以其他方式将视频转换为更高质量。在一些实施方式中,转码可以包括调整视频的其他属性,例如,将16:9纵横比的视频转换为4:3或方形纵横比、旋转视频等。
在一些实施方式中,转码可以包括将视频的音频轨道转换成不同的格式,将多个音频轨道合并到较少数量的音频轨道或从多个音频轨道中选择较少数量的音频轨道,例如,合并立体声音频轨道以获得单声道音频轨的道等。在一些实施方式中,对音频轨道进行转码可以包括将音频轨道转换为不同的格式。
在一些实施方式中,可以获得多个视频,例如高质量视频,以用于转码。当获得多个视频时,可以在转码之前对视频进行排序。例如,可以对视频进行排序,使得部分转码文件可用的视频在部分转码文件不可用的视频之前被处理。例如,部分转码文件可以存储在实现方法200的设备的本地存储设备上。
在一些实施方式中,可以基于创建时间、上次修改时间或与视频相关联的其他参数来对视频进行排序。在一些实施方式中,例如,当方法200的输出视频从客户端设备发送到服务器设备进行备份时,视频可以从备份队列获得并且可以具有与备份队列相同的排序顺序。在一些实施方式中,可以基于视频的文件大小、基于用户选择等来对视频进行排序。例如,如果用户选择用于备份的特定视频,则可以按照排序顺序首先放置视频。在不同的实施方式中,可以使用文件大小、部分转码文件的可用性、创建时间、最后修改时间、用户选择等的各种组合来对多个视频进行排序。
在一些实施方式中,可以基于指配给视频的得分对视频进行排序。例如,得分可以由经过训练的机器学习模型被指配。例如,得分可以指示视频的重要性。机器学习模型可以基于对视频和/或视频元数据的分析来确定视频的得分。如果用户允许,视频的分析可以包括确定视频中是否描绘了一个或多个人或对象、对象的类型、视频中人或对象的运动性质、视频中描绘的位置、视频是稳定还是有抖动等。
在一些实施方式中,方法200可以被执行多次,例如,对于从排序的多个视频中选择的每个视频执行一次。框202之后可以是框204。
在框204,确定对应于视频的部分转码文件是否可用。例如,可以访问存储设备(例如,实现方法200的计算设备的本地存储设备)以确定部分转码文件是否存储在存储设备上。如果部分转码文件未存储在存储设备上,则确定部分转码文件不可用。
如果部分转码文件存储在存储设备上,则可以确定与部分转码文件相关联的配置设置。例如,配置设置可以作为元数据存储在部分转码文件内、作为单独的配置文件或在数据库中。例如,配置设置可以包括部分转码文件中的一个或多个轨道的格式,例如,MIME(多用途互联网邮件扩展)格式。该格式可以是标准格式,例如,高级视频编码(AVC)格式、高效视频编码(HEVC)格式等。在另一个示例中,配置设置可以包括在部分转码文件由转码器生成时用作转码器配置的比特率参数、宽度参数或高度参数。在一些实施方式中,配置设置可以包括比特率模式参数。
可以将与部分转码文件相关联的配置设置与将用于对视频进行转码的转码器的当前配置设置进行比较以确定配置设置是否匹配。如果配置设置匹配,则确定部分转码文件可用。
如果配置设置不匹配,则确定部分转码文件不可用。在这种情况下,即使部分转码文件存在,部分转码文件被识别为使用不同的转码器设置进行编码,使得无法与来自于转码器的进一步输出组合,并且因此,部分转码文件可能无法用于生成输出视频。在一些实施方式中,如果配置设置不匹配,则可以从存储设备中删除部分转码文件。如果单独存储与部分转码文件相关联的配置文件,也可以删除这样的配置文件。
如果确定部分转码文件可用,则框204之后可以是框220。如果确定部分转码文件不可用,则框204之后可以是框206。
在框220中,部分转码文件被检索并提供给多路复用器。例如,部分转码文件可以包括多个转码轨道,每个轨道对应于视频的多个轨道中的相应轨道。多路复用器可以将多个转码轨道组合成单个输出文件。例如,输出文件可以是MPEG-4视频文件。
在一些实施方式中,时间戳可以与部分转码文件相关联并且可以被检索。时间戳可以对应于包括在部分转码文件中的视频的视频轨道的最后帧,例如,特定关键帧。例如,当部分转码文件包括对应于视频的开始(例如,在时间0秒)到中间点(例如,在时间t秒)的数据时,时间戳可以指示中间点t。在一些实施方式中,单个时间戳可以与部分转码文件相关联。
在一些实施方式中,时间戳可以包括多个时间值。例如,多个时间值中的每个可以对应于多个轨道中的相应轨道。在一些实施方式中,一个或多个轨道,例如,元数据轨道,可以不与时间戳相关联——例如,如果轨道的数据不是用于视频的顺序回放的数据。在这些实施方式中,可以检索多个时间值。框220之后可以是框206。
在框206中,视频被转码。在一些实施方式中,转码可以在两个阶段中执行——解码器阶段之后是编码器阶段。在解码器阶段,视频可以被解码,例如,从存储的格式转换为适合于编码器阶段的格式。例如,如果使用特定编解码器对视频进行编码,则解码器级可以将视频解码为原始或未压缩的数据流。在一些实施方式中,解码可以包括解压缩视频。在一些实施方式中,解码器级可以包括多个解码器。例如,视频解码器可用于对视频的一个或多个视频轨道进行解码,并且经解码的音频可用于对视频的一个或多个音频轨道进行解码。在一些实施方式中,视频的音频轨道可能不被解码,例如,如果目标音频格式与视频中的音频轨道的格式相同,或者如果音频轨道采用多路复用器支持的格式。解码器级的输出可以提供给编码器级。
在编码器阶段,视频的原始或未压缩数据流可以被编码为编码器的目标格式,例如,如在编码器的配置设置中指定的。在一些实施方式中,编码可以包括压缩视频。压缩可以包括降低视频的比特率、降低视频的分辨率、降低视频的帧率等中的一个或多个。在一些实施方式中,对视频的音频部分进行编码可以包括将音频编码为目标音频格式而质量没有变化(或最小变化)。
基于部分转码文件是否可用,可以对整个视频或视频的部分执行视频转码。例如,如果部分转码文件不可用,则可以从视频的开始对视频进行转码,例如,从0秒到视频的结尾。
如果部分转码文件可用,则视频的部分可以被转码。例如,被转码的视频部分可以在与部分转码文件相关联的时间戳处开始。选择性地对先前未转码并存储在部分转码文件中的视频部分进行转码减少转码的计算负担,例如,因为仅需要将视频部分加载到存储器中以进行解码并随后编码到目标格式。
在一些实施方式中,当时间戳包括多个时间值、每个时间值对应于视频中的多个轨道中的相应轨道时,可以为每个轨道单独执行转码。在这些实施方式中,可以从多个时间值中的相应时间值开始对多个轨道中的每个进行解码以获得对应原始数据。然后可以对原始数据进行编码以获得相应的输出轨道。框206之后可以是框208。
在块208中,可以确定在转码期间是否接收到中断。例如,当方法200在客户端设备上实现时,当客户端设备的用户激活客户端设备时,例如,解锁智能电话、提供话音或触摸输入或以其他方式访问客户端设备时,可以接收到中断。中断也可以作为系统事件被接收,例如,当客户端设备醒来以访问网络、显示通知等时。如果接收到中断,则框208之后可以是框210。如果没有接收到中断,框208之后可以是框212。
在框210中,保存部分转码文件。例如,如果在转码期间到达视频结束之前接收到中断,则可以将已完成转码的视频部分存储为部分转码文件。在一些实施方式中,可以使用预定方案来选择部分转码文件的文件名和存储位置。例如,可以选择文件名以包括视频的视频文件的文件名(例如,“video1.extension”),附有指示该文件是对应于视频(例如,“video1_partial”)的部分转码文件的短语(例如,“partial”)。当为视频存储多个部分转码文件时,可以使用序列号,例如“video1_partial_1”、“video1_partial_2”等。文件名和存储位置可以被利用以确定部分转码文件是否可用,例如,如上文参考框204所述。在一些实施方式中,数据库可存储视频的文件名和对应部分转码后文件的文件名。
在接收到中断时转码器的输出可以包括多个部分输出轨道。每个部分输出轨道可以对应于视频的特定轨道。例如,部分转码文件可以是标准格式的视频文件,例如,转码的目标格式,诸如MP4格式。在一些实施方式中,如果在视频转码期间接收到多个中断,则可以保存多个部分转码文件,例如,每个部分转码文件对应于在先前中断(或视频的开始)与当前中断之间转码的视频的特定部分。在这些实施方式中,每个部分转码文件可以具有相应相关联的时间戳,并且可以在接下来处理视频时依次处理,例如,从框202开始。
在一些实施方式中,在第一次中断之后获得的部分转码文件(例如,包括时间0到tl的数据)可以被更新以添加转码的部分输出,例如,直到下一个中断(例如,从时间t1到t2,其中0<t1<t2)的视频的后续转码部分以及对应时间戳(t2)。在实施方式中,当接下来处理视频时,例如,从框202开始,转码可以在时间戳t2开始。在一些实施方式中,时间戳可以作为元数据存储在部分转码文件中、单独文件中或数据库中。在框210存储的部分转码文件可以在方法200的后续迭代中被处理,例如,在框202的下一次执行时。
如果在框208确定转码未被中断,则框208之后可以是框212。在框212,确定转码是否完成,例如,是否到达视频的结尾。如果转码未完成,则框212之后是框206以继续对视频进行编码。如果转码完成,则框212之后是框214。
在框214中,转码的输出数据被提供给多路复用器并且从多路复用器获得输出视频。多路复用器可以将多个转码轨道组合成单个输出文件。此外,当对视频的部分(例如,从与部分转码文件相关联的时间戳开始的部分)执行转码时,多路复用器将转码输出数据与部分转码文件组合。多路复用器的输出是目标视频格式的输出视频文件。例如,输出文件可以是MPEG-4视频文件。框214之后可以是框216。
在框216中,输出视频被保存到例如实现方法200的设备的存储设备中。例如,如果方法200在客户端设备120-126上实现,则输出视频被保存到客户端设备的本地存储设备。在一些实施方式中,输出视频可以具有比视频的分辨率更低的分辨率和/或比视频的比特率更低的比特率。框216之后可以是框218。
在框218中,可以删除部分转码文件。因为部分转码文件用于在中断后恢复转码,所以一旦获得输出视频,可以从存储设备中删除部分转码文件以回收存储空间。如果单独存储与部分转码文件相关联的配置文件,也可以删除这样的配置文件。
方法200的各种框可以被组合、拆分成多个框或并行执行。例如,框204-220可以并行执行,使得同时处理多个视频以获得对应输出视频。在另一示例中,框220可以与框206并行执行,使得在多路复用器处理部分转码文件的同时,并行获得附加转码视频。此外,可以在框206中并行处理视频的多个轨道。
在一些实施方式中,方法200的一个或多个框可以在实现方法200的设备的中央处理单元(CPU)或图形处理单元(GPU)或加速器上执行。例如,框206可以在可以适合视频解码和编码的GPU或加速器上执行,而其他框方法200可以在CPU上执行。
虽然上述讨论涉及尺寸小于输入视频的输出视频,但是将会理解,可以执行方法200以对视频进行转码以用于其他目的,例如,执行格式转换而不压缩、重定向视频到不同的纵横比、将视频从较低的分辨率或比特率上转换为较高的分辨率或比特率、修剪视频、旋转视频、对视频应用滤波器、向视频添加轨道、从视频中去除轨道等。
方法200或其部分可以使用附加输入重复任意次数。例如,可以重复方法200,直到处理在框202中获得的所有视频以获得对应输出视频。
图3图示根据一些实施方式的对视频进行转码的示例处理管线300。处理管线300可以包括提取器306、转码器308和多路复用器310。在一些实施方式中,当部分转码文件可用时,获得转码的处理可以在两个阶段中执行。
在第一阶段,部分转码文件302作为输入提供给多路复用器310。部分转码文件302可以包括多个轨道,每个轨道对应于视频304的特定轨道。例如,当在视频304被整体处理之前中断转码时部分转码文件302可以作为转码器308的部分输出获得。多路复用器310可以组合来自部分转码文件302的多个轨道以获得输出视频312。例如,多路复用器310可以将从部分转码文件302获得的个别编码轨道打包到文件容器,例如,MP4文件。部分转码文件302被提供给多路复用器310而不执行任何转码操作。在这个阶段,输出视频312可以包括视频304的开始直到与部分转码文件302相关联的时间戳的轨道。
在第二阶段,视频304作为输入提供给提取器306。提取器306可以从与部分转码文件302相关联的时间戳开始提取视频304的轨道。在一些实施方式中,提取器306可以获得与从时间戳之前最近的关键帧开始的视频304的视频轨道相关联的帧,例如,与和部分转码文件302相关联的时间戳相匹配的时间戳相关联的关键帧,或者如果时间戳不匹配,则是紧接在前的关键帧。提取器306可以继续提取帧,例如,按顺序,直到到达视频304的结尾。类似地,提取器306可以提取视频304的其他轨道的帧,例如,其他视频轨道、音频轨道、元数据轨道等。提取器306可以将获得的帧提供给转码器308。
转码器308可以包括解码器级和编码器级。转码器308可以对提取器306提供的帧进行解码并且将解码的帧编码为目标格式,例如,如在转码器308的配置设置中指定的。转码器308可以生成对应于视频304的每个轨道的多个输出帧。转码器308可以为由提取器306提供的视频的一个或多个轨道生成输出帧。转码器308可以将视频304的多个轨道的输出帧提供给多路复用器310。多路复用器310可以组合来自转码器输出的多个轨道以获得输出视频312。例如,多路复用器310可以将从转码器308获得的个别编码轨道打包到文件容器,例如MP4文件。
在一些实施方式中,处理管线300的不同操作可以依序执行,例如,第一阶段可以在第二阶段被发起之前完成。例如,在这些实施方式中,多路复用器310可以首先将从部分转码文件302获得的单独编码轨道打包到文件容器中,并且然后将从转码器308获得的个别编码轨道添加到文件容器中。
在一些实施方式中,例如,当转码器308和/或多路复用器310具有足够的缓冲器容量时,第一阶段和第二阶段可以并行执行。例如,多路复用器310可以在转码器308执行转码的同时处理从部分转码文件302获得的个别编码轨道,其中转码器308的输出被排队或缓冲以免受多路复用器310的处理。因此多路复用器310以帧的连续顺序处理视频。在一些实施方式中,当处理管线300被中断时,中断时的输出视频312可以替代部分转码文件302。
在一些实施方式中,提取器306可以支持在对应时间值(恢复点)提取视频304的轨迹,如与部分转码文件302相关联的时间戳所指示的。在这些实施方式中,从相应时间值开始提取每个轨迹并被提供给转码器308。此外,可以选取每个轨道的时间值,使得时间值对应于该轨道的关键帧,使得提取器306提取的帧可以被转码器308成功解码。例如,当视频304包括包含I帧、P帧和B帧的视频轨道时,部分转码文件302的时间值可对应于I帧。
在一些实施方式中,提取器306可以支持从单个时间戳开始提取轨道,使得视频304的所有轨道在相同的起点——例如,与部分转码文件302相关联的时间戳——被提取。在一些情况下,时间戳可能与一个或多个轨道的关键帧不对应。在这些实施方式中,为了确保提取的轨道可以被转码器308解码,输出视频312在关键帧中写入关键帧块,使得如果处理管线300被中断,则输出视频312(用作部分转码文件302或替换先前的部分转码文件302)在对应于跨多个轨道的关键帧的时间结束。例如,多路复用器310可以缓冲来自不同轨道的转码帧,直到到达跨不同轨道同步的关键帧。在这些实施方式中,如果转码器308已经生成附加的帧,则多路复用器310丢弃这些帧。这些实施方式也可能是有益的,因为部分转码文件可以以支持相同长度的多个轨道的任何格式存储。
处理管线300在输出视频312的生成中利用例如在中断的转码操作期间生成的部分转码文件302。部分转码文件的重用减少计算成本,例如,因为先前转码的帧被存储并且重用,而不是在接收中断时被丢弃。以这种方式减少计算成本可以实现更低的处理器使用率和更低的能量使用率。当处理管线300在由电池供电的设备上执行时,处理管线300可以实现改进的电池寿命。处理管线300还可以改进转码的速度,因为视频304的先前处理的部分不需要由提取器306和转码器308再次处理。
图4是可以用于实现本文描述的一个或多个特征的示例设备500的框图。在一个示例中,设备400可以用于实现客户端设备,例如,图1中所示的客户端设备115中的任一个。替换地,设备400可实现服务器设备,例如,服务器101。在一些实施方式中,设备400可以是用于实现客户端设备、服务器设备、或客户端和服务器设备两者。设备400可以是如上所述的任何适合的计算机系统、服务器、或其他电子或硬件设备。
可以在可在任何类型的计算设备上执行的独立程序、在web浏览器上运行的程序、在移动计算设备(例如,手机、智能电话、平板计算机、可穿戴设备(腕表、臂章、珠宝、头饰、虚拟现实护目镜或眼镜、增强现实护目镜或眼镜、头戴式显示器等)、膝上型计算机等)上运行的移动应用(“app”)中运行本文描述的一种或多种方法。在一个示例中,可使用客户端/服务器架构,例如,移动计算设备(作为客户端设备)向服务器设备发送用户输入数据并且从服务器接收最终输出数据以进行输出(例如,以进行显示)。在另一示例中,可在移动计算设备上的移动app(和/或其他apps)内进行所有计算。在另一示例中,可在移动计算设备和一个或多个服务器设备之间拆分计算。
在一些实施方式中,设备400包括处理器402、存储器404和输入/输出(I/O)接口406。处理器402可以是用于执行程序代码并且控制设备400的基本操作的一个或多个处理器和/或处理电路。“处理器”包括处理数据、信号或其他信息的任何适合的硬件系统、机制、或组件。处理器可以包括具有带一个或多个核心(例如,在单个核心、双核心、或多核心配置中)的通用中央处理单元(CPU)、多个处理单元(例如,在多处理器配置中)、图形处理单元(GPU)、现场可编程门阵列(FPGA)、专用集成电路(ASIC)、复杂可编程逻辑器件(CPLD)、用于实现功能性的专用电路、用于实现基于神经网络模型的处理的专用处理器、神经电路、针对矩阵计算(例如,矩阵乘法)而优化的处理器的系统、或其他系统。在一些实施方式中,处理器402可以包括实现神经网络处理的一个或多个协处理器。在一些实施方式中,处理器402可以是处理数据以产生概率输出的处理器,例如,由处理器402产生的输出可以是不精确的或者可以在距预期输出的范围内是准确的。处理不必限于特定地理位置或者具有时间限制。例如,处理器可以“实时地”、“离线”、在“批处理模式”等下执行其功能。可以通过不同的(或相同的)处理系统来在不同的时间并在不同的位置处执行处理的多个部分。计算机可以是与存储器通信的任何处理器。
存储器404通常被设置在设备400中以供由处理器402访问,并且可以是适合于存储由处理器执行的指令并被定位为与处理器402分开和/或与其集成在一起的任何适合的处理器可读存储介质,诸如随机存取存储器(RAM)、只读存储器(ROM)、电可擦除只读存储器(EEPROM)、闪速存储器等。存储器404可存储由处理器402在服务器设备400上操作的软件,包括操作系统408、应用412、和应用数据414。应用412可以包括例如图像应用、数据显示引擎、web托管引擎、图像显示引擎、通知引擎、社交网络引擎等等的应用。在一些实施方式中,应用412可以各自包括使得处理器402能够进行本文描述的功能——例如,图2的方法中的一些或全部——的指令。
其他应用412可以包括例如图像应用、媒体显示应用、通信应用、web托管引擎或应用、映射应用、媒体共享应用等等。本文公开的一种或多种方法可在若干环境和平台中操作,例如,作为可在任何类型的计算设备上运行的独立计算机程序、作为具有web页面的web应用、作为在移动计算设备上运行的移动应用(“app”)等。
存储器404中的软件中的任一个可替换地被存储在任何其他适合的存储位置或计算机可读介质上。此外,存储器404(和/或其他连接的存储设备)可存储一个或多个消息、一个或多个分类法、电子百科全书、词典、同义词库、知识库、消息数据、语法、用户偏好、和/或本文描述的特征中使用的其他指令和数据。存储器404和任何其他类型的存储装置(磁盘、光盘、磁带、或其他有形介质)可被认为是“存储装置”或“存储设备”。
I/O接口406可提供用于使得能够将服务器设备400与其他系统和设备对接的功能。对接设备可作为设备400的一部分被包括或者可以是分开的并与设备400进行通信。例如,网络通信设备、存储设备(例如,存储器和/或数据库106)、和输入/输出设备可经由I/O接口406通信。在一些实施方式中,I/O接口可连接到接口设备,诸如输入设备(键盘、指向设备、触摸屏、麦克风、相机、扫描仪、传感器等)和/或输出设备(显示设备、扬声器设备、打印机、电机等)。
可连接到I/O接口406的对接设备的一些示例可包括一个或多个显示设备420,所述显示设备420可用于显示内容,例如,图像、视频、和/或如本文所描述的输出应用的用户界面。显示设备420可经由本地连接(例如,显示总线)和/或经由联网连接来连接到设备400并且可以是任何适合的显示设备。显示设备420可包括任何适合的显示设备,诸如LCD、LED、或等离子体显示屏幕、CRT、电视、监视器、触摸屏、3-D显示屏幕、或其他视觉显示设备。例如,显示设备420可以是在移动设备上设置的平板显示屏幕、在护目镜或头戴式耳机设备中设置的多个显示屏幕、或用于计算机设备的监视器屏幕。
I/O接口406可与其他输入和输出设备对接。一些示例包括可捕获图像的一个或多个相机。一些实施方式可提供用于捕获声音(例如,作为捕获的图像、话音命令等的一部分)的麦克风、用于输出声音的音频扬声器设备、或其他输入和输出设备。
为了便于图示,图4示出了用于处理器402、存储器404、I/O接口406、和软件框408和412中的每个的一个框。这些框可以表示一个或多个处理器或处理电路、操作系统、存储器、I/O接口、应用、和/或软件模块。在其他实施方式中,设备400可以不具有所示的所有组件并且/或者代替本文所示的那些元件或者除了本文所示的那些元件之外还可以具有包括其他类型的元件的其他元件。虽然一些组件被描述为进行如本文的一些实施方式中所描述的框和操作,但是环境100、设备400、类似的系统的组件中的任何适合的组件或组合、或与这样的系统相关联的任何适合的一个或多个处理器可以执行所描述的框和操作。
本文描述的方法可通过可在计算机上执行的计算机程序指令或代码来实现。例如,代码可由一个或多个数字处理器(例如,微处理器或其他处理电路)实现并且可被存储在包括非暂时性计算机可读介质(例如,存储介质)的计算机程序产品上,所述非暂时性计算机可读介质诸如磁、光学、电磁、或半导体存储介质,包括半导体或固态存储器、磁带、可移动计算机磁盘、随机存取存储器(RAM)、只读存储器(ROM)、闪速存储器、硬磁盘、光盘、固态存储器驱动器等。程序指令还可被包含在电子信号中并作为电子信号被提供,例如以从服务器(例如,分布式系统和/或云计算系统)递送的软件即服务(SaaS)的形式提供。替换地,一种或多种方法可用硬件(逻辑门等)或者用硬件和软件的组合加以实现。示例硬件可以是可编程处理器(例如,现场可编程门阵列(FPGA)、复杂可编程逻辑器件)、通用处理器、图形处理器、专用集成电路(ASIC)等。可将一种或多种方法作为在系统上运行的应用的一部分或组件、或者作为与其他应用和操作系统相结合地运行的应用或软件来执行。
尽管已相对于说明书的特定实施方式描述了说明书,但是这些特定实施方式仅仅是说明性的,而不是限制性的。示例中图示的概念可以被应用于其他示例和实施方式。
在这里讨论的某些实施方式可以收集或使用关于用户的个人信息的情况下(例如,用户数据、关于用户的社交网络的信息、用户位所和在该位所的时间、用户的生物特征信息、用户的活动和人口统计信息),为用户提供一个或多个机会以控制是否收集信息、是否存储个人信息、是否使用个人信息以及如何收集、存储和使用有关用户的信息。即,本文所讨论的系统和方法特别是在接收到来自相关用户要这样做的显式授权后收集、存储和/或使用用户个人信息。例如,向用户提供对程序或特征是否收集关于该特定用户或与程序或特征相关的其他用户的用户信息的控制。向要为其收集个人信息的每个用户呈现一个或多个选项,以允许控制与该用户有关的信息收集,以提供关于是否收集信息以及信息的哪些部分要被收集的许可或授权。例如,可以通过通信网络向用户提供一个或多个这样的控制选项。另外,在存储或使用某些数据之前,可以以一种或多种方式处理某些数据,使得移除个人可标识信息。作为一个示例,可以处理用户的身份,使得不能确定个人可标识信息。作为另一示例,用户的地理位所可以被概括为更大的区域,使得不能确定用户的特定位所。
注意的是,如将为本领域的技术人员所知的那样,可以将本公开中描述的功能框、操作、特征、方法、设备和系统集成或者划分到系统、设备和功能框的不同组合中。可以使用任何适合的编程语言和编程技术来实现特定实施方式的例行程序。可以采用不同的编程技术,例如过程的或面向对象的。例行程序可以在单个处理设备或多个处理器上执行。尽管可以以特定顺序呈现步骤、操作或计算,但是可以在不同的特定实施方式中改变该顺序。在一些实施方式中,可以同时执行在本说明书中示出为有顺序的多个步骤或操作。

Claims (26)

1.一种对视频进行转码的计算机实施的方法,所述方法包括:
获得所述视频,其中,所述视频包括多个轨道;
确定对应于所述视频的部分转码文件是否可用;
响应于确定所述部分转码文件可用,
获得与所述部分转码文件相关联的时间戳;
利用转码器对所述视频的部分进行转码,其中所述视频的所述部分开始于与所述部分转码文件相关联的所述时间戳;以及
将所述部分转码文件和所述视频的转码部分组合以生成输出视频;以及
响应于确定所述部分转码文件不可用,
使用所述转码器对所述视频进行转码以获得多个输出轨道,其中,所述转码是从所述视频的开始执行的,和
组合所述多个输出轨道以获得所述输出视频。
2.根据权利要求1所述的计算机实现的方法,其中,所述输出视频具有下述中的至少一个:比所述视频的分辨率低的分辨率或比所述视频的比特率低的比特率。
3.根据权利要求1所述的计算机实现的方法,进一步包括:
在由所述转码器对所述视频进行转码期间接收中断;和
响应于所述中断,将所述转码器的输出保存为所述部分转码文件。
4.根据权利要求3所述的计算机实现的方法,其中,所述转码器的输出包括多个部分输出轨道,每个部分输出轨道对应于所述视频的多个轨道中的特定轨道,所述方法进一步包括,响应于所述中断,保存与所述部分转码文件相关联的配置设置,其中,所述配置设置包括下述中的一个或者多个:
所述多个部分输出轨道中的每个的格式,或者
下述中的一个或者多个:比特率参数、宽度参数或高度参数。
5.根据权利要求1所述的计算机实现的方法,其中,确定所述部分转码文件是否可用包括:
访问存储设备以确定所述部分转码文件是否存储在所述存储设备上;
如果所述部分转码文件未存储在所述存储设备上,则确定所述部分转码文件不可用;以及
如果所述部分转码文件存储在所述存储设备上,
则确定所述转码器的当前配置设置是否匹配与所述部分转码文件相关联的配置设置;
如果确定所述当前配置设置匹配,则确定所述部分转码文件可用;以及
如果确定所述当前配置设置不匹配,则确定所述部分转码文件不可用;以及
从所述存储设备中删除所述部分转码文件。
6.根据权利要求1所述的计算机实现的方法,进一步包括:
在由所述转码器对所述视频的所述部分进行转码期间接收中断;和
响应于所述中断,更新所述部分转码文件以包括所述转码器的部分输出。
7.根据权利要求1所述的计算机实现的方法,其中,对所述视频进行转码包括:
对所述视频的多个轨道中的一个或多个轨道进行解码,以获得对应原始数据;和
对用于所述多个轨道中的解码的一个或多个轨道的原始数据进行编码,以获得所述多个输出轨道的对应输出轨道。
8.根据权利要求7所述的计算机实现的方法,其中,所述多个轨道包括至少一个音频轨道和至少一个视频轨道。
9.根据权利要求8所述的计算机实现的方法,其中,所述多个轨道进一步包括元数据轨道。
10.根据权利要求8所述的计算机实现的方法,其中,所述至少一个视频轨道包括多个关键帧和多个非关键帧,每个关键帧和每个非关键帧与对应时间戳相关联,并且其中,与所述部分转码文件相关联的时间戳对应于所述多个关键帧中的特定关键帧。
11.根据权利要求1所述的计算机实现的方法,其中
所述时间戳包括多个时间值,每个时间值对应于所述多个轨道中的相应轨道,并且
其中,对所述视频的部分进行转码包括:
对在所述多个时间值中的相应时间值处开始的所述多个轨道中的每个轨道进行解码,以获得对应原始数据;和
对用于所述多个轨道中的解码的一个或多个轨道的原始数据进行编码,以获得所述多个输出轨道中的对应输出轨道。
12.一种计算设备,包括:
处理器;和
存储器,所述存储器耦合到所述处理器,具有被存储在其上的指令,所述指令当由所述处理器执行时,使所述处理器执行包括下述的操作:
获得视频,其中,所述视频包括多个轨道;
确定对应于所述视频的部分转码文件是否可用;
响应于确定所述部分转码文件可用,
获得与所述部分转码文件相关联的时间戳;
利用转码器对所述视频的部分进行转码,其中,所述视频的所述部分开始于与所述部分转码文件相关联的所述时间戳;以及
将所述部分转码文件和所述视频的转码部分组合以生成输出视频;以及
响应于确定所述部分转码文件不可用,
使用所述转码器对所述视频进行转码以获得多个输出轨道,其中,所述转码是从所述视频的开始执行的,和
组合所述多个输出轨道以获得所述输出视频。
13.根据权利要求12所述的计算设备,其中,所述存储器具有被存储在其上的进一步指令,所述指令使所述处理器执行包括下述的进一步的操作:
在由所述转码器对所述视频进行转码期间接收中断;和
响应于所述中断,将所述转码器的输出保存为所述部分转码文件。
14.根据权利要求13所述的计算设备,其中,所述转码器的输出包括多个部分输出轨道,每个部分输出轨道对应于所述视频的多个轨道中的特定轨道,并且其中,所述操作进一步包括,响应于所述中断,保存与所述部分转码文件相关联的配置设置,其中,所述配置设置包括下述中的一个或者多个:
所述多个部分输出轨道中的每个的格式,或者
下述中的一个或者多个:比特率参数、宽度参数或高度参数。
15.根据权利要求12所述的计算设备,其中,确定所述部分转码文件是否可用包括:
访问存储设备以确定所述部分转码文件是否存储在所述存储设备上;
如果所述部分转码文件未存储在所述存储设备上,则确定所述部分转码文件不可用;以及
如果所述部分转码文件存储在所述存储设备上,
则确定所述转码器的当前配置设置是否匹配与所述部分转码文件相关联的配置设置;
如果确定所述当前配置设置匹配,则确定所述部分转码文件可用;以及
如果确定所述当前配置设置不匹配,则确定所述部分转码文件不可用。
16.根据权利要求12所述的计算设备,其中,所述存储器具有被存储在其上的进一步的指令,所述指令使所述处理器执行包括下述的进一步的操作:
在由所述转码器对所述视频的所述部分进行转码期间接收中断;和
响应于所述中断,更新所述部分转码文件以包括所述转码器的部分输出。
17.根据权利要求12所述的计算设备,所述时间戳包括多个时间值,每个时间值对应于所述多个轨道中的相应轨道,并且
其中,对所述视频的部分进行转码包括:
对在所述多个时间值中的相应时间值处开始的所述多个轨道中的每个轨道进行解码,以获得对应原始数据;和
对用于所述多个轨道中的解码的一个或多个轨道的原始数据进行编码,以获得所述多个输出轨道中的对应输出轨道。
18.一种非暂时性计算机可读介质,具有存储在其上的指令,所述指令当由处理器执行时,使所述处理器执行包括下述的操作:
获得视频,其中,所述视频包括多个轨道;
确定对应于所述视频的部分转码文件是否可用;
响应于确定所述部分转码文件可用,
获得与所述部分转码文件相关联的时间戳;
利用转码器对所述视频的部分进行转码,其中,所述视频的所述部分开始于与所述部分转码文件相关联的所述时间戳;以及
将所述部分转码文件和所述视频的转码部分组合以生成输出视频;以及
响应于确定所述部分转码文件不可用,
使用所述转码器对所述视频进行转码以获得多个输出轨道,其中,所述转码是从所述视频的开始执行的,和
组合所述多个输出轨道以获得所述输出视频。
19.根据权利要求18所述的非暂时性计算机可读介质,具有被存储在其上的进一步指令,所述指令使所述处理器执行包括下述的进一步的操作:
在由所述转码器对所述视频进行转码期间接收中断;和
响应于所述中断,将所述转码器的输出保存为所述部分转码文件。
20.根据权利要求18所述的非暂时性计算机可读介质,其中,所述时间戳包括多个时间值,每个时间值对应于所述多个轨道中的相应轨道,并且其中,对所述视频的部分进行转码包括:
对在所述多个时间值中的相应时间值处开始的所述多个轨道中的每个轨道进行解码,以获得对应原始数据;和
对用于所述多个轨道中的解码的一个或多个轨道的原始数据进行编码,以获得所述多个输出轨道中的对应输出轨道。
21.一种对视频进行转码的计算机实施的方法,所述方法包括:
获得视频,其中,所述视频包括多个轨道;
获得对应于所述视频的部分转码文件,其中,时间戳与所述部分转码文件相关联;
利用转码器对所述视频的部分进行转码,其中,所述视频的所述部分开始于与所述部分转码文件相关联的所述时间戳;以及
将所述部分转码文件和所述视频的转码部分组合以生成输出视频。
22.根据权利要求21所述的计算机实现的方法,其中,所述输出视频具有下述中的至少一个:比所述视频的分辨率低的分辨率或比所述视频的比特率低的比特率。
23.根据权利要求21所述的计算机实现的方法,进一步包括:
在由所述转码器对所述视频的所述部分进行转码期间接收中断;和
响应于所述中断,更新所述部分转码文件以包括所述转码器的部分输出。
24.根据权利要求23所述的计算机实现的方法,其中,所述转码器的部分输出包括多个部分输出轨道,每个部分输出轨道对应于所述视频的多个轨道中的相应轨道,所述方法进一步包括,响应于所述中断,保存与所述部分转码文件相关联的配置设置,其中,所述配置设置包括下述中的一个或者多个:
所述多个部分输出轨道中的每个的格式,或者
下述中的一个或者多个:比特率参数、宽度参数或高度参数。
25.根据权利要求21所述的计算机实现的方法,其中,所述多个轨道包括至少一个视频轨道,所述视频轨道包括多个关键帧和多个非关键帧,每个关键帧和每个非关键帧与对应时间戳相关联,并且其中,与所述部分转码文件相关联的时间戳对应于所述多个关键帧中的特定关键帧。
26.根据权利要求21所述的计算机实现的方法,其中,所述时间戳包括多个时间值,每个时间值对应于所述多个轨道中的相应轨道,并且其中,对所述视频的部分进行转码包括:
对在所述多个时间值中的相应时间值处开始的所述多个轨道中的每个轨道进行解码,以获得对应原始数据;和
对用于所述多个轨道中的解码的一个或多个轨道的原始数据进行编码,以获得所述多个输出轨道中的对应输出轨道。
CN201980097124.7A 2019-09-23 2019-09-23 用于转码视频的方法、设备和计算机可读介质 Active CN113906764B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310077743.8A CN116095336A (zh) 2019-09-23 2019-09-23 用于转码视频的方法、设备和计算机可读介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2019/052516 WO2021061098A1 (en) 2019-09-23 2019-09-23 Interruptible video transcoding

Related Child Applications (1)

Application Number Title Priority Date Filing Date
CN202310077743.8A Division CN116095336A (zh) 2019-09-23 2019-09-23 用于转码视频的方法、设备和计算机可读介质

Publications (2)

Publication Number Publication Date
CN113906764A true CN113906764A (zh) 2022-01-07
CN113906764B CN113906764B (zh) 2023-01-31

Family

ID=68165734

Family Applications (2)

Application Number Title Priority Date Filing Date
CN201980097124.7A Active CN113906764B (zh) 2019-09-23 2019-09-23 用于转码视频的方法、设备和计算机可读介质
CN202310077743.8A Pending CN116095336A (zh) 2019-09-23 2019-09-23 用于转码视频的方法、设备和计算机可读介质

Family Applications After (1)

Application Number Title Priority Date Filing Date
CN202310077743.8A Pending CN116095336A (zh) 2019-09-23 2019-09-23 用于转码视频的方法、设备和计算机可读介质

Country Status (6)

Country Link
US (2) US11290756B2 (zh)
EP (1) EP3818719B1 (zh)
JP (2) JP7151004B2 (zh)
KR (2) KR102612528B1 (zh)
CN (2) CN113906764B (zh)
WO (1) WO2021061098A1 (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11743478B2 (en) * 2021-06-15 2023-08-29 International Business Machines Corporation Video stream transcoding with reduced latency and memory transfer
CN113473143B (zh) * 2021-06-30 2022-12-16 中央广播电视总台 一种第三代音视频标准(avs3)转码支持断点续转的方法
CN113873176B (zh) * 2021-10-27 2024-03-08 北京奇艺世纪科技有限公司 一种媒体文件合并方法及装置
CN114630177A (zh) * 2022-03-25 2022-06-14 阿里巴巴(中国)有限公司 一种视频转码方法及其相关装置

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101459848A (zh) * 2008-12-26 2009-06-17 西安交通大学 一种分布式多格式数字视频转码结构设计方法
US7595743B1 (en) * 2005-10-26 2009-09-29 Lsi Corporation System and method for reducing storage requirements for content adaptive binary arithmetic coding
CN103733632A (zh) * 2011-08-16 2014-04-16 万特里克斯公司 带宽变化连接上的动态比特率调节
US8855189B1 (en) * 2010-04-12 2014-10-07 UV Networks, Inc. Multi-stream transcoding system with cache memory management
CN108174226A (zh) * 2017-12-19 2018-06-15 平安科技(深圳)有限公司 直播视频的转码装置、方法及计算机可读存储介质
CN108632643A (zh) * 2017-03-20 2018-10-09 天脉聚源(北京)科技有限公司 一种视频文件转码的方法和系统
CN110213598A (zh) * 2018-05-31 2019-09-06 腾讯科技(深圳)有限公司 一种视频转码系统、方法及相关产品

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001094935A (ja) * 1999-09-22 2001-04-06 Nec Corp トランスコーダ及び録画再生システム並びにそれに用いる録画再生方法
US7409094B2 (en) * 2001-05-04 2008-08-05 Hewlett-Packard Development Company, L.P. Methods and systems for packetizing encoded data
US7676590B2 (en) 2004-05-03 2010-03-09 Microsoft Corporation Background transcoding
JP2006135705A (ja) * 2004-11-08 2006-05-25 Hitachi Ltd 記録再生方法及び記録再生装置
JP4551370B2 (ja) * 2006-07-18 2010-09-29 株式会社日立製作所 記録再生装置及び記録再生方法
US8693553B2 (en) * 2007-12-28 2014-04-08 Nokia Corporation Methods, apparatuses, and computer program products for adaptive synchronized decoding of digital video
KR101272876B1 (ko) * 2009-11-24 2013-06-14 한국전자통신연구원 미디어 스트리밍 서버와 이 서버의 미디어 데이터 관리 방법
US9691430B2 (en) * 2010-04-01 2017-06-27 Microsoft Technology Licensing, Llc Opportunistic frame caching
JP5703532B2 (ja) 2011-03-29 2015-04-22 オンキヨー株式会社 トランスコード装置
US9271003B2 (en) * 2011-04-15 2016-02-23 Opera Software Ireland Limited Real-time audio or video transcoding
EP2697968A4 (en) 2011-04-15 2014-12-10 Opera Software Ireland Ltd REAL TIME VIDEO ENHANCER
US10182219B2 (en) * 2013-04-25 2019-01-15 Time Warner Cable Enterprises Llc Space efficiency and management of content
US9319753B2 (en) 2013-05-09 2016-04-19 Broadcom Corporation Seamless trick-mode with decreased latency for live transcode streaming
US8955027B1 (en) 2013-11-21 2015-02-10 Google Inc. Transcoding media streams using subchunking
FI20165114A (fi) * 2016-02-17 2017-08-18 Nokia Technologies Oy Laitteisto, menetelmä ja tietokoneohjelma videokoodausta ja videokoodauksen purkua varten

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7595743B1 (en) * 2005-10-26 2009-09-29 Lsi Corporation System and method for reducing storage requirements for content adaptive binary arithmetic coding
CN101459848A (zh) * 2008-12-26 2009-06-17 西安交通大学 一种分布式多格式数字视频转码结构设计方法
US8855189B1 (en) * 2010-04-12 2014-10-07 UV Networks, Inc. Multi-stream transcoding system with cache memory management
CN103733632A (zh) * 2011-08-16 2014-04-16 万特里克斯公司 带宽变化连接上的动态比特率调节
CN108632643A (zh) * 2017-03-20 2018-10-09 天脉聚源(北京)科技有限公司 一种视频文件转码的方法和系统
CN108174226A (zh) * 2017-12-19 2018-06-15 平安科技(深圳)有限公司 直播视频的转码装置、方法及计算机可读存储介质
CN110213598A (zh) * 2018-05-31 2019-09-06 腾讯科技(深圳)有限公司 一种视频转码系统、方法及相关产品

Also Published As

Publication number Publication date
JP2022539299A (ja) 2022-09-08
JP7151004B2 (ja) 2022-10-11
CN116095336A (zh) 2023-05-09
EP3818719A1 (en) 2021-05-12
EP3818719B1 (en) 2024-05-01
JP2022188147A (ja) 2022-12-20
CN113906764B (zh) 2023-01-31
KR102612528B1 (ko) 2023-12-12
KR20230171479A (ko) 2023-12-20
US20220191564A1 (en) 2022-06-16
WO2021061098A1 (en) 2021-04-01
US20210250626A1 (en) 2021-08-12
US11800160B2 (en) 2023-10-24
KR20220006546A (ko) 2022-01-17
US11290756B2 (en) 2022-03-29

Similar Documents

Publication Publication Date Title
CN113906764B (zh) 用于转码视频的方法、设备和计算机可读介质
US20190342241A1 (en) Systems and methods for manipulating and/or concatenating videos
US9894393B2 (en) Video encoding for reduced streaming latency
US11265599B2 (en) Re-encoding predicted picture frames in live video stream applications
US11528523B2 (en) Method and system to share a snapshot extracted from a video transmission
CN113965751B (zh) 屏幕内容编码方法、装置、设备及存储介质
US9877056B1 (en) Compressed media with still images selected from a video stream
US20220236782A1 (en) System and method for intelligent multi-application and power management for multimedia collaboration applications
CN111343503B (zh) 视频的转码方法、装置、电子设备及存储介质
CN114222156A (zh) 视频剪辑方法、装置、计算机设备和存储介质
CN113225585A (zh) 一种视频清晰度的切换方法、装置、电子设备以及存储介质
WO2023207513A1 (zh) 视频处理方法、装置及电子设备
US11388455B2 (en) Method and apparatus for morphing multiple video streams into single video stream
US11350058B1 (en) System and method for intelligent contextual session management for videoconferencing applications
WO2023029986A1 (zh) 多媒体资源处理方法、装置、电子设备以及可读存储介质
CN115695850A (zh) 视频数据处理方法、装置、电子设备和介质
CN117880570A (zh) 一种数据传输方法及装置
CN113973224A (zh) 媒体信息的传输方法、计算设备及存储介质
CN113676777A (zh) 数据处理方法及装置
WO2018222974A1 (en) Method and apparatus for morphing multiple video streams into single video stream

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant