CN117915020A - 用于视频裁剪的方法和装置 - Google Patents
用于视频裁剪的方法和装置 Download PDFInfo
- Publication number
- CN117915020A CN117915020A CN202311679849.1A CN202311679849A CN117915020A CN 117915020 A CN117915020 A CN 117915020A CN 202311679849 A CN202311679849 A CN 202311679849A CN 117915020 A CN117915020 A CN 117915020A
- Authority
- CN
- China
- Prior art keywords
- video
- clipping
- interface
- video frame
- user operation
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 190
- 230000008569 process Effects 0.000 claims abstract description 80
- 238000012545 processing Methods 0.000 claims abstract description 31
- 230000015654 memory Effects 0.000 claims description 143
- 238000009877 rendering Methods 0.000 claims description 116
- 238000005520 cutting process Methods 0.000 claims description 21
- 238000004590 computer program Methods 0.000 claims description 13
- 230000004044 response Effects 0.000 claims description 10
- 238000004458 analytical method Methods 0.000 claims description 4
- 238000010586 diagram Methods 0.000 description 29
- 230000006870 function Effects 0.000 description 28
- 230000002829 reductive effect Effects 0.000 description 16
- 238000004891 communication Methods 0.000 description 12
- 230000000903 blocking effect Effects 0.000 description 10
- 238000007726 management method Methods 0.000 description 9
- 230000003287 optical effect Effects 0.000 description 8
- 230000000694 effects Effects 0.000 description 7
- 238000004364 calculation method Methods 0.000 description 6
- 238000013500 data storage Methods 0.000 description 6
- 230000008878 coupling Effects 0.000 description 5
- 238000010168 coupling process Methods 0.000 description 5
- 238000005859 coupling reaction Methods 0.000 description 5
- 230000008859 change Effects 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 4
- 230000003993 interaction Effects 0.000 description 4
- 230000003068 static effect Effects 0.000 description 4
- 230000001960 triggered effect Effects 0.000 description 4
- 230000006835 compression Effects 0.000 description 3
- 238000007906 compression Methods 0.000 description 3
- 230000003111 delayed effect Effects 0.000 description 3
- 238000013461 design Methods 0.000 description 3
- 239000000835 fiber Substances 0.000 description 3
- 229920001621 AMOLED Polymers 0.000 description 2
- 230000003190 augmentative effect Effects 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 2
- 238000005538 encapsulation Methods 0.000 description 2
- 230000002452 interceptive effect Effects 0.000 description 2
- 239000004973 liquid crystal related substance Substances 0.000 description 2
- 239000002096 quantum dot Substances 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000000295 complement effect Effects 0.000 description 1
- 230000006837 decompression Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000007667 floating Methods 0.000 description 1
- 230000010365 information processing Effects 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 230000000670 limiting effect Effects 0.000 description 1
- 229910044991 metal oxide Inorganic materials 0.000 description 1
- 150000004706 metal oxides Chemical class 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000036961 partial effect Effects 0.000 description 1
- 230000011664 signaling Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000001356 surgical procedure Methods 0.000 description 1
- 230000026676 system process Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N5/00—Details of television systems
- H04N5/222—Studio circuitry; Studio devices; Studio equipment
- H04N5/262—Studio circuits, e.g. for mixing, switching-over, change of character of image, other special effects ; Cameras specially adapted for the electronic generation of special effects
- H04N5/2628—Alteration of picture size, shape, position or orientation, e.g. zooming, rotation, rolling, perspective, translation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/048—Interaction techniques based on graphical user interfaces [GUI]
- G06F3/0481—Interaction techniques based on graphical user interfaces [GUI] based on specific properties of the displayed interaction object or a metaphor-based environment, e.g. interaction with desktop elements like windows or icons, or assisted by a cursor's changing behaviour or appearance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/048—Interaction techniques based on graphical user interfaces [GUI]
- G06F3/0481—Interaction techniques based on graphical user interfaces [GUI] based on specific properties of the displayed interaction object or a metaphor-based environment, e.g. interaction with desktop elements like windows or icons, or assisted by a cursor's changing behaviour or appearance
- G06F3/04817—Interaction techniques based on graphical user interfaces [GUI] based on specific properties of the displayed interaction object or a metaphor-based environment, e.g. interaction with desktop elements like windows or icons, or assisted by a cursor's changing behaviour or appearance using icons
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/048—Interaction techniques based on graphical user interfaces [GUI]
- G06F3/0484—Interaction techniques based on graphical user interfaces [GUI] for the control of specific functions or operations, e.g. selecting or manipulating an object, an image or a displayed text element, setting a parameter value or selecting a range
- G06F3/04845—Interaction techniques based on graphical user interfaces [GUI] for the control of specific functions or operations, e.g. selecting or manipulating an object, an image or a displayed text element, setting a parameter value or selecting a range for image manipulation, e.g. dragging, rotation, expansion or change of colour
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/048—Interaction techniques based on graphical user interfaces [GUI]
- G06F3/0487—Interaction techniques based on graphical user interfaces [GUI] using specific features provided by the input device, e.g. functions controlled by the rotation of a mouse with dual sensing arrangements, or of the nature of the input device, e.g. tap gestures based on pressure sensed by a digitiser
- G06F3/0488—Interaction techniques based on graphical user interfaces [GUI] using specific features provided by the input device, e.g. functions controlled by the rotation of a mouse with dual sensing arrangements, or of the nature of the input device, e.g. tap gestures based on pressure sensed by a digitiser using a touch-screen or digitiser, e.g. input of commands through traced gestures
- G06F3/04883—Interaction techniques based on graphical user interfaces [GUI] using specific features provided by the input device, e.g. functions controlled by the rotation of a mouse with dual sensing arrangements, or of the nature of the input device, e.g. tap gestures based on pressure sensed by a digitiser using a touch-screen or digitiser, e.g. input of commands through traced gestures for inputting data by handwriting, e.g. gesture or text
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4488—Object-oriented
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/544—Buffers; Shared memory; Pipes
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/40—Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
- H04N21/43—Processing 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/44—Processing 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Human Computer Interaction (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Television Signal Processing For Recording (AREA)
Abstract
一种用于视频裁剪的方法和装置,涉及多媒体技术领域,该方法包括:检测到第一用户操作,第一用户操作用于触发对视频编辑应用的裁剪界面中的第一视频帧的裁剪操作;响应于第一用户操作,记录第一视频帧对应的第一显示区域的裁剪参数,裁剪参数对应于第一用户操作;调用GPU根据裁剪参数进行视频帧绘制,以得到裁剪后的第一视频帧的第一画面数据;根据第一画面数据显示更新的裁剪界面,更新的裁剪界面中包括裁剪后的第一视频帧。该方法可以减少在视频裁剪过程中视频画面出现的延迟和卡顿情况,给予用户更流畅的操作体验,提高了视频裁剪的处理效率。
Description
本申请为2022年09月23日提交的申请号为202211166928.8的专利申请“用于视频裁剪的方法和装置”的分案申请。
技术领域
本申请涉及多媒体技术领域,尤其涉及一种用于视频裁剪的方法和装置。
背景技术
随着互联网的普及和发展,视频逐渐成为主流的多媒体载体,各种视频编辑工具也随之不断进化和升级,提供诸如视频特效、视频滤镜等视频编辑功能。其中,视频裁剪是视频编辑的基础功能。视频裁剪可以指对视频画面进行移动、缩放、旋转、画面裁切等编辑操作,并通过视频播放窗口呈现已裁剪的视频画面效果。
但是,在视频编辑工具进行视频裁剪的操作的过程中,涉及到多种函数调用,例如,视频编解码模块、渲染工具的逻辑计算等,这使得视频裁剪过程中出现延时卡顿的现象,影响用户体验。
因此,业界青睐于研究处理效率更高、用户体验更好的视频裁剪的方法。
发明内容
本申请实施例提供一种用于视频裁剪的方法和装置,可以减少在视频裁剪过程中视频画面出现的延迟和卡顿情况,给予用户更流畅的操作体验,提高了视频裁剪的处理效率。
第一方面,本申请实施例提供一种用于视频裁剪的方法,应用于终端设备,该方法包括:检测到第一用户操作,所述第一用户操作用于触发对视频编辑应用的裁剪界面中的第一视频帧的裁剪操作;响应于所述第一用户操作,调用应用框架记录所述第一视频帧对应的第一显示区域的裁剪参数,所述裁剪参数对应于所述第一用户操作;调用图像处理单元GPU根据所述裁剪参数进行视频帧绘制,以得到裁剪后的第一视频帧的第一画面数据;根据所述第一画面数据显示更新的裁剪界面,所述更新的裁剪界面中包括所述裁剪后的第一视频帧。
这样,裁剪界面在响应用户的裁剪操作的过程中,不使用渲染模块对视频帧进行渲染,即不触发渲染线程,而是在调用应用框架和GPU进行视频帧绘制时记录和传递裁剪参数,以更新裁剪后视频帧的画面。这使得在显示裁剪界面时减少了多线程的时间片调度,从而使得裁剪界面的操作体验感更加流畅,改善了裁剪界面中的延时卡顿的现象。
另外,裁剪界面中不引入渲染工具,例如,OpenGl、EGL,这使得编辑界面和裁剪界面之间交互的信息变少,从而使两者的耦合度更少、更独立,提高了视频编辑应用的后台管理效率。
在一种可能的实现方式中,在响应所述第一用户操作的过程中,不使用渲染模块对所述第一视频帧进行渲染操作。
在一种可能的实现方式中,所述裁剪操作包括以下至少一项:旋转、移动、缩放、镜像、画面裁切。
在一种可能的实现方式中,所述裁剪参数包括以下至少一项:旋转角度、镜像参数、裁剪坐标。
在一种可能的实现方式中,所述响应于所述第一用户操作,记录所述第一视频帧对应的第一显示区域的裁剪参数,包括:所述视频编辑应用向所述应用框架发送第一指令,所述第一指令用于指示所述应用框架发起视频绘制过程,所述第一指令中包括第五指令,所述第五指令用于指示所述应用框架记录所述裁剪参数;所述应用框架记录所述裁剪参数。
在一种可能的实现方式中,所述调用GPU根据所述裁剪参数进行视频帧绘制,包括:所述GPU接收所述应用框架发送的第二指令,所述第二指令用于指示GPU进行视频帧绘制,所述第二指令中包括所述裁剪参数;所述GPU根据所述裁剪参数进行视频帧绘制,以得到所述第一画面数据;所述GPU将所述第一画面数据存入所述第一显示区域对应的第一共享内存中。
在一种可能的实现方式中,所述根据所述第一画面数据显示裁剪界面,包括:所述视频编辑应用向应用框架发送第三指令,所述第三指令用于指示应用框架将第一窗口视图对应的共享内存中的画面数据输出至屏幕显示,所述第一窗口视图为所述裁剪界面对应的窗口视图,所述第一窗口视图对应的共享内存中包括所述第一共享内存;所述应用框架向SurfaceFlinger发送第四指令,所述第四指令用于通知SurfaceFlinger输出共享内存中的画面数据;所述SurfaceFlinger将多个窗口视图对应的共享内存中的画面数据叠加混合成一个总画面数据,所述多个窗口视图包括所述第一窗口视图;所述SurfaceFlinger将所述总画面数据装填至屏幕的缓存区域,以显示所述裁剪界面。
在一种可能的实现方式中,在所述检测到第一用户操作之前,所述方法还包括:检测到第二用户操作,所述第二用户操作用于触发从所述视频编辑应用的编辑界面进入所述裁剪界面的操作;响应于所述第二用户操作,显示所述裁剪界面,其中,所述裁剪界面中包括所述第一视频帧,在响应所述第二用户操作的过程中,不使用渲染模块对第一视频帧进行渲染操作。
这样,进入裁剪界面的过程中,没有初始化渲染模块以及使用渲染模块对视频帧进行渲染的过程,即不触发渲染线程,在裁剪界面减少了多线程的时间片调度,从而使得裁剪界面的操作体验感更加流畅,改善了裁剪界面中的延时卡顿的现象。并且,在裁剪界面中不引入渲染工具,例如,OpenGL、EGL,这使得编辑界面和裁剪界面之间交互的信息变少,从而使两者的耦合度更少、更独立,提高了视频编辑应用的后台管理效率。
在一种可能的实现方式中,所述响应于所述第二用户操作,显示所述裁剪界面,包括:调用MediaCodec创建编解码器;根据所述编解码器对所述第一视频帧对应的视频数据进行解析,以获取YUV格式的第一视频帧;根据所述YUV格式的第一视频帧进行绘制,以得到所述第一视频帧对应的第二画面数据;根据所述第二画面数据,显示所述裁剪界面。
在一种可能的实现方式中,所述调用MediaCodec创建编码器以及解码器,包括:调用所述MediaCodec获取所述第一视频帧对应的视频文件路径,所述视频文件格式指示所述第一视频帧对应的视频数据的压缩存储方式;调用所述MediaCodec根据所述视频文件路径,创建所述编解码器。
在一种可能的实现方式中,所述调用所述MediaCodec获取所述第一视频帧对应的视频文件路径,包括:所述视频编辑应用向所述MediaCodec发送所述第一视频帧对应的视频文件路径;所述MediaCodec解析所述视频文件路径,以得到所述视频文件格式;所述MediaCodec向所述视频编辑应用发送所述视频文件格式。
在一种可能的实现方式中,所述调用所述MediaCodec根据所述视频文件路径,创建所述编解码器,包括:所述视频编辑应用向所述MediaCodec发送指示创建编解码器的第七指令,所述第七指令中包括所述视频文件格式;所述MediaCodec根据所述视频文件格式创建编解码器;所述MediaCodec向所述视频编辑应用发送指示编解码器创建成功的信息。
在一种可能的实现方式中,所述方法还包括:所述视频编辑应用向内存申请所述第一显示区域对应的第一共享内存,所述第一共享内存用于存储所述编解码器的输入数据或输出数据;所述内存向所述视频编辑应用发送共享内存创建成功的信息,所述共享内存创建成功的信息中包括所述第一共享内存的地址;所述视频编辑应用向所述MediaCodec发送所述第一共享内存的地址。
在一种可能的实现方式中,所述第一共享内存的地址承载于所述第一指令中。
在一种可能的实现方式中,根据所述编解码器对所述第一视频帧对应的视频数据进行解析,以获取YUV格式的第一视频帧,包括:所述视频编辑应用向所述MediaCodec发送解析视频的命令;所述MediaCodec通过所述编解码器对所述第一视频帧对应的视频数据进行解析,以获取YUV格式的第一视频帧;所述MediaCodec将所述YUV格式的第一视频帧存入所述第一显示区域对应的第一共享内存中;所述MediaCodec向所述视频编辑应用发送视频解析成功的信息。
在一种可能的实现方式中,所述根据所述YUV格式的第一视频帧进行绘制,以得到所述第一视频帧对应的第二画面数据,包括:所述视频编辑应用向所述应用框架发送第一指令,所述第一指令用于指示所述应用框架发起视频绘制过程;所述应用框架向所述GPU发送第六指令,所述第六指令用于指示GPU进行视频帧绘制;所述GPU进行视频帧的绘制,得到所述第二画面数据;所述GPU将所述第二画面数据存入所述第一显示区域对应的第一共享内存中。
在一种可能的实现方式中,根据所述第二画面数据,显示所述裁剪界面,包括:所述视频编辑应用向应用框架发送第三指令,所述第三指令用于指示应用框架将第一窗口视图对应的共享内存中的画面数据输出至屏幕显示,所述第一窗口视图为所述裁剪界面对应的窗口视图,所述第一窗口视图对应的共享内存中包括所述第一共享内存;所述应用框架向SurfaceFlinger发送第四指令,所述第四指令用于通知SurfaceFlinger输出共享内存中的画面数据;所述SurfaceFlinger将多个窗口视图对应的共享内存中的画面数据叠加混合成一个总画面数据,所述多个窗口视图包括所述第一窗口视图;所述SurfaceFlinger将所述总画面数据装填至屏幕的缓存区域,以显示所述裁剪界面。
在一种可能的实现方式中,在所述检测到第一用户操作之后,所述方法还包括:检测到第三用户操作,所述第三用户操作用于指示已完成所述裁剪界面的裁剪操作;响应于所述第三用户操作,显示编辑界面,其中,所述编辑界面中包括所述裁剪后的第一视频帧。
第二方面,提供了一种用于视频裁剪的方法,应用于终端设备,该方法包括:检测到第一用户操作,所述第一用户操作用于触发对视频编辑应用的裁剪界面中的第一视频帧的裁剪操作;响应于所述第一用户操作,显示更新的裁剪界面,所述更新的裁剪界面中包括所述裁剪后的第一视频帧,其中,在响应所述第一用户操作的过程中,不使用渲染模块对所述第一视频帧进行渲染操作。
在一种可能的实现方式中,所述响应于所述第一用户操作,显示更新的裁剪界面,包括:调用应用框架记录所述第一视频帧对应的第一显示区域的裁剪参数,所述裁剪参数用于指示所述第一用户操作导致的所述第一显示区域发生变化的参数;调用图像处理单元GPU根据所述裁剪参数进行视频帧绘制,以得到裁剪后的第一视频帧的第一画面数据;根据所述第一画面数据显示所述更新的裁剪界面。
在一种可能的实现方式中,在所述检测到第一用户操作之前,所述方法还包括:检测到第二用户操作,所述第二用户操作用于触发从所述视频编辑应用的编辑界面进入所述裁剪界面的操作;响应于所述第二用户操作,显示所述裁剪界面,其中,所述裁剪界面中包括所述第一视频帧,在响应所述第二用户操作的过程中,不使用渲染模块对所述第一视频帧进行渲染操作。
第三方面,本申请实施例提供一种电子设备,包括存储器、处理器以及存储在存储器中并可在处理器上运行的计算机程序,处理器执行计算机程序时,使得电子设备执行如第一方面或第一方面的任一种实现方式中描述的方法,或者执行如第二方面或第二方面的任一种实现方式中描述的方法。
第四方面,本申请实施例提供一种计算机可读存储介质,计算机可读存储介质存储有指令,当指令被执行时,使得计算机执行如第一方面或第一方面的任一种实现方式中描述的方法,或者执行如第二方面或第二方面的任一种实现方式中描述的方法。
第五方面,一种计算机程序产品,包括计算机程序,当计算机程序被运行时,使得计算机执行如第一方面或第一方面的任一种实现方式中描述的方法,或者执行如第二方面或第二方面的任一种实现方式中描述的方法。
应当理解的是,本申请的第二方面至第五方面,与本申请的第一方面的技术方案相对应,各方面及对应的可行实施方式所取得的有益效果相似,不再赘述。
附图说明
图1(a)-图1(g)是本申请一实施例的视频裁剪应用的交互界面示意图;
图2是本申请一实施例的裁剪界面400的进行镜像操作的示意图;
图3是本申请一实施例的裁剪界面400的进行放大操作的示意图;
图4是本申请一实施例的裁剪界面400的进行旋转操作的示意图;
图5是本申请一实施例的视频画面在进行裁剪操作时未出现卡顿的示意图;
图6是本申请一实施例的视频画面在进行裁剪操作时出现卡顿的示意图;
图7是本申请实施例的终端设备的软件结构框图;
图8是本申请一实施例的用于进入视频编辑应用的编辑页面的方法的内部实现流程的示意图;
图9是本申请一实施例的创建编解码器的内部流程的示意图;
图10是本申请一实施例的渲染模块的初始化的内部流程的示意图;
图11是本申请一实施例的视频解析方法的内部流程的示意图;
图12是本申请一实施例的视频帧的渲染方法的内部流程的示意图;
图13是本申请一实施例的视频帧的绘制和送显过程的内部流程的示意图;
图14是本申请一实施例的视频帧的用于视频裁剪的方法的流程示意图;
图15是本申请一实施例的进入裁剪界面的方法的流程示意图;
图16是本申请一实施例的裁剪界面的进行视频裁剪的方法的流程示意图;
图17是本申请一实施例的在裁剪界面的视频帧的绘制和送显过程的内部流程的示意图;
图18是本申请一实施例的裁剪界面返回编辑界面的方法的流程示意图;
图19是本申请一实施例的裁剪界面的示意图;
图20是本申请一实施例的视频帧的用于视频裁剪的方法的流程示意图;
图21为本申请实施例提供的一种终端设备的硬件结构示意图;
图22是本申请实施例提供的一种用于视频裁剪的装置的结构示意图;
图23为本申请实施例提供的另一种终端设备的硬件结构示意图。
具体实施方式
为了便于清楚描述本申请实施例的技术方案,在本申请的实施例中,采用了“第一”、“第二”等字样对功能和作用基本相同的相同项或相似项进行区分。例如,第一芯片和第二芯片仅仅是为了区分不同的芯片,并不对其先后顺序进行限定。本领域技术人员可以理解“第一”、“第二”等字样并不对数量和执行次序进行限定,并且“第一”、“第二”等字样也并不限定一定不同。
需要说明的是,本申请实施例中,“示例性的”或者“例如”等词用于表示作例子、例证或说明。本申请中被描述为“示例性的”或者“例如”的任何实施例或设计方案不应被解释为比其他实施例或设计方案更优选或更具优势。确切而言,使用“示例性的”或者“例如”等词旨在以具体方式呈现相关概念。
本申请实施例中,“至少一个”是指一个或者多个,“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B的情况,其中A,B可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系。“以下至少一项(个)”或其类似表达,是指的这些项中的任意组合,包括单项(个)或复数项(个)的任意组合。例如,a,b,或c中的至少一项(个),可以表示:a,b,c,a-b,a-c,b-c,或a-b-c,其中a,b,c可以是单个,也可以是多个。
本申请实施例提供的用于视频裁剪的方法,可以应用在具备显示功能的终端设备中。终端设备也可以称为终端(terminal)、用户设备(user equipment,UE)、移动台(mobilestation,MS)、移动终端(mobile terminal,MT)等。终端设备可以是手机(mobile phone)、智能电视、穿戴式设备、平板电脑(Pad)、带无线收发功能的电脑、虚拟现实(virtualreality,VR)终端设备、增强现实(augmented reality,AR)终端设备、工业控制(industrial control)中的无线终端、无人驾驶(self-driving)中的无线终端、远程手术(remote medical surgery)中的无线终端、智能电网(smart grid)中的无线终端、运输安全(transportation safety)中的无线终端、智慧城市(smart city)中的无线终端、智慧家庭(smart home)中的无线终端等等。本申请的实施例对终端设备所采用的具体技术和具体设备形态不做限定。
接下来将以终端设备为手机为例进行示例说明,该示例并不构成对本申请实施例的限定。
如前文所述,在视频编辑工具进行视频裁剪的操作的过程中,涉及到多种函数调用,例如,视频编解码、渲染等,这使得视频裁剪过程中可能出现延时卡顿的现象,影响用户体验。接下来将结合附图说明视频裁剪的过程。图1是本申请一实施例的视频裁剪的交互界面示意图。如图1所示,视频裁剪包括以下流程。
首先,图1(a)示出了终端设备中的视频库的界面,作为示例,视频库可以属于图库应用的一部分,视频库中可包括一个或多个视频的图标,用户可选择需要编辑的视频并通过点击进入该视频的显示界面200。相应地,在接收到用户点击视频的操作信息之后,终端设备展示视频的显示界面200。图1(b)是终端设备的视频的显示界面200。如图1(b)所示,该显示界面200包括视频播放按钮211、编辑按钮213等按钮。用户可通过点击编辑按钮213进入视频编辑应用的编辑界面300。相应地,在接收到用户点击编辑按钮213的操作信息之后,终端设备可展示编辑界面300。
需要说明的是,在本申请实施例中,视频编辑应用可以是视频库中配置的功能控件或插件,也可以是独立的应用程序,用户可通过点击视频的编辑按钮213进入视频应用的编辑界面300,也可以通过点击视频编辑应用的图标进入视频编辑应用的编辑界面300。
图1(c)是视频编辑界面的编辑界面300的示意图。如图1(c)所示,编辑界面300包括多种编辑视频的功能对应的按钮,例如,裁剪、滤镜、文字、特效、贴纸等按钮。在需要裁剪视频的情况下,用户可点击编辑界面300中的裁剪按钮310,以进入裁剪界面400。其中,裁剪界面400中可用于对视频画面进行移动、缩放、镜像、旋转、裁剪等编辑操作。
需要说明的是,在本申请实施例中,视频裁剪可以指用户在裁剪界面400中对视频画面进行的裁剪操作,上述裁剪操作使得视频画面的四个顶点的坐标改变,从而得到裁剪后的视频画面。上述裁剪操作包括但不限于:移动、缩放、旋转、镜像、画面裁切。
裁剪界面400可参考图1(d),裁剪界面400中可包括播放视频的显示区域308,还包括裁剪比例的按钮的显示区域311。裁剪比例是指裁剪后的视频帧的宽长比。例如,裁剪比例的按钮可以包括但不限于以下选项:自由、原比例、9:16、16:9、3:4。其中,自由是指不限制裁剪后的视频画面的宽长比;原比例是指裁剪后的视频画面与裁剪前的视频画面的比例相同。可选地,裁剪界面400中还包括旋转按钮301、旋转度数的按钮302以及镜像按钮303。旋转按钮301用于将视频画面旋转固定角度,例如,逆时针或顺时针旋转90°。旋转度数的按钮302可用于调整视频画面的具体旋转度数,镜像按钮303用于实现视频画面的镜像操作。
裁剪界面400中还包括裁剪框306,用户可通过调整调整裁剪框306的大小,以确定裁剪后的视频画面的大小。其中,通过调节裁剪框306以调整视频画面大小的操作即前文中所述的画面裁切。示例性地,用户可通过触摸操作调整裁剪框306的大小。继续参见图1中(d),用户可点击裁剪比例的按钮为“自由”,并进行画面裁切。“自由”表示可不限定裁剪框的比例的方式进行画面裁切。如图1(e)所示,用户可通过触摸操作调整裁剪框306的大小,相应地,终端设备在接收到用户的触摸操作信息之后,可根据触摸操作信息调整裁剪框306的大小并显示在裁剪界面400中,播放视频的显示区域308也随之变化。如图1(f)所示,用户在将裁剪框306大小调整到满意的情况下,可点击裁剪完成的按钮304(即图中的“√”)。相应地,终端设备在接收到用户发送裁剪完成的信息之后,可结束裁剪。
在用户点击裁剪完成的按钮304之后,终端设备可返回到编辑界面300,如图1(g)所示,此时编辑界面300中呈现裁剪后的视频画面。用户可以继续点击其它编辑的功能按钮进行编辑,或者也可以结束视频编辑操作。
可选地,在裁剪界面400中,用户可以对视频画面进行以下一项或多项操作,以实现裁剪功能:移动、缩放、旋转、镜像、画面裁切。例如,用户可通过旋转按钮301或旋转度数的按钮302对视频画面进行旋转操作,通过镜像按钮303对视频进行镜像操作,通过触摸手势移动、缩小或者放大视频画面。
作为示例,图2-图4是本申请一实施例的裁剪界面400的不同操作状态的示意图。其中,图2是对视频画面进行镜像的操作的示意图。如图2(a)所示,用户可点击编辑界面中的镜像按钮303,终端设备在接收到用户发送的点击镜像按钮303的操作信息之后,可呈现图2(b)所示的视频画面的镜像画面。
图3是对视频画面进行放大的操作的示意图。如图3(a)所示,用户可通过触摸显示屏的手势执行对画面进行放大的操作,终端设备在接收到用户发送的对视频画面进行放大的操作信息之后,可呈现图3(b)所示的视频的放大画面。
图4是对视频画面进行旋转的操作的示意图。如图4(a)所示,用户可点击旋转度数的按钮302,调整视频画面的旋转度数,以实现对画面进行旋转的操作,终端设备在接收到用户发送的对视频画面进行旋转的操作信息之后,可呈现图4(b)所示的视频的旋转画面。可选地,用户可通过点击旋转度数的按钮302实现视频画面的旋转操作,也可以通过手指在显示屏幕上移动,以实现视频画面旋转的操作。
在裁剪界面400中,用户在对视频画面进行移动、缩放、旋转或镜像时,视频画面会出现延迟或卡顿的现象。
其中,图5和图6分别是本申请一实施例的视频画面在进行裁剪操作时未卡顿的和出现卡顿的示意图。应理解,为了体现显示的视频画面帧之间的区别,图5和图6中的连续的视频画面帧的变化程度可能大于实际应用时的情形。
其中,图5中的(a)-(c)依次示出了未卡顿情况下对视频画面进行旋转操作时的连续帧的视频画面的变化。在未卡顿的情况下,在旋转过程中,视频帧之间可流畅的进行播放,不会出现卡顿现象。图6中的(a)-(c)依次示出了卡顿情况下对视频画面进行旋转操作时的连续帧的视频画面的变化。在卡顿的情况下,在旋转过程中,视频帧之间将出现丢帧现象,从而造成卡顿或延迟。
出现上述现象的原因之一是在裁剪界面400中,用户对视频画面执行移动、缩放、旋转或镜像操作时,视频编辑应用需要一直调用渲染模块对视频画面进行渲染操作,然后将渲染后的画面呈现在裁剪界面400上。由于执行渲染操作增加了数据计算与渲染耗时,因此导致视频画面出现延迟或卡顿的现象。
为了改善上述问题,本申请实施例提出了一种用于视频裁剪的方法和终端设备。该方法可以减少在视频裁剪过程中视频画面出现的延迟和卡顿情况,给予用户更流畅的操作体验,提高了视频裁剪的处理效率。
下面首先介绍本申请实施例涉及的终端设备的软件架构。图7是本申请实施例的终端设备的软件结构框图。
分层架构将终端设备的软件系统分成若干个层,每一层都有清晰的角色和分工。层与层之间通过软件接口通信。在一些实施例中,可以将Android系统分为四层,分别为应用程序层(applications)、应用程序框架层(application framework)、系统库和硬件层。应理解,图7中仅示出与本申请实施例的用于视频剪辑的方法相关的功能模块,在实践中,终端设备中可包括更多或更少的功能模块,或者部分功能模块也可以被其它功能模块替代。
应用程序层可以包括一系列应用程序包。如图7所示,应用程序层中包括视频编辑应用。视频编辑应用具备视频数据处理能力,能够为用户提供编辑视频的功能,包括裁剪、渲染等视频数据处理功能。作为示例,上述视频编辑应用可以包括Android系统中的VideoEditor。其中,本申请实施例中可利用视频编辑应用实现对视频的裁剪的方法。
可选地,应用程序层还可以包括其它应用程序,例如,相机,图库,日历,通话,蓝牙,音乐,视频,短信息等应用程序。
应用程序框架层为应用程序层的应用程序提供应用编程接口(applicationprogramming interface,API)和编程框架。应用程序框架层包括一些预先定义的函数。
如图7所示,应用程序框架层可以包括媒体框架和应用框架。
媒体框架中提供有多个编辑视频、音频的工具。其中,上述工具包括MediaCodec。MediaCodec是Android提供的用于对音视频进行编解码的模块。它包括编码器、解码器以及surface类型缓存。
MeidaCodec提供的编码器可将输入该编码器的一种格式的视频或音频通过压缩技术转换成另一种格式,而解码器用于执行编码的反向过程,将输入该解码器的一种格式的视频或音频通过解压缩技术转换成另一种格式。
MediaCodec还可以申请一块共享内存,该共享内存即硬件层中的surface内存(后续简称为surface)。Surface可用于缓存视频数据。例如,终端设备执行编辑操作,得到被渲染的视频图像帧后,终端设备可将上述图像帧输入surface缓存。然后,应用程序可从surface中获取渲染后的视频图像帧,用于存储或显示等。
媒体框架中还包括共享内存管理模块(Surface Flinger),SurfaceFlinger是媒体框架提供的一个服务功能模块,在系统进程中启动,管理终端设备屏幕上多个系统窗口的Surface数据。
共享内存管理模块用于将多个应用程序的应用窗口的视图的surface数据根据屏幕显示的层级顺序,叠加混合成一个视图surface数据,并放入缓存区域。屏幕在根据一定频率刷新画面的时候,可以将缓存区域的视图显示到屏幕上。
应用框架(FrameWork)作为Android的框架层,为应用层App提供封装众多可以调用的功能模块与API接口,应用框架中提供了一种窗口管理模块,其可以管理当前每个应用App的窗口处理事件和动作,以及和SurfaceFlinger进行数据通信;也可以处理应用App的工作事件或者方法调用,根据App的要求作出相应的响应。
系统库可以包括多个功能模块。如图7所示,系统库中可包括渲染模块,渲染模块可用于实现三维图形绘图,图像渲染,合成和图层处理等。作为示例而非限定,渲染模块包括但不限于以下至少一项:开放图形库(open graphics library,OpenGL)、开源计算机视觉库(open source computer vision library,OpenCV)、开放运算语言库(opencomputing language library,OpenCL)。
渲染模块提供有多个图像渲染函数,可用于绘制从简单的图形到复杂的三维景象。在本申请实施例中系统库提供的渲染模块可用于支持视频编辑应用执行图像编辑操作,例如,视频裁剪操作、添加滤镜等。
作为示例,系统库中还可以包括其它功能模块,例如,例如:状态监测服务,表面管理器(surface manager),媒体库(Media Libraries)等。
其中,硬件层包括内存(memory)、图形处理器(GPU)。内存可用于暂时存放中央处理器(central processing unit,CPU)中的运算数据,和与硬盘等外部存储器交换的数据。内存中还包括共享内存(surface)以及显存。终端设备运行视频编辑应用所需的存储空间可通过共享内存提供。
GPU是执行图像和图形相关运算工作的处理器。在本申请实施例中,终端设备利用渲染模块进行视频裁剪的过程可通过GPU完成。
显存(FrameBuffer),也被叫做帧缓存,是由GPU在内存中申请的一块存储空间。显存用于存放每一次GPU计算后的渲染画面数据。
下面以具体地实施例对本申请的技术方案以及本申请的技术方案如何解决上述技术问题进行详细说明。下面这几个具体的实施例可以独立实现,也可以相互结合,对于相同或相似的概念或过程可能在某些实施例中不再赘述。
下面首先结合附图介绍本申请实施例的用于视频裁剪的方法的内部实现逻辑。
示例性的,图8是本申请一实施例的用于进入视频编辑应用的编辑页面的方法的内部实现流程的示意图。例如,从图1(b)中的视频的显示界面200进入图1(c)的编辑界面300的实现过程。图8中以渲染模块为OpenGL,共享内存管理模块为SurfaceFlinger为例进行说明。如图8所示,该方法包括以下流程。
S501.接收用户发送的启动视频编辑应用的操作信息。
例如,参考图1(b),用户可以点击视频中的视频编辑按钮213,终端设备在获取用户的操作信息之后,开启视频编辑应用。或者,用户也可以点击终端设备显示界面中的视频编辑应用的图标,以进入视频编辑应用。
本申请实施例中以用户点击屏幕进行交互的方式为例进行描述,在实践中,用户也可以通过其它方式与终端设备进行交互,例如,通过语音控制或者按键输入等方式,本申请实施例对用户和终端设备之间的交互方式不作限定。
需要说明的是,视频编辑应用内部可包括多个功能模块。例如,可包括编辑界面(或者说,主界面)模块和裁剪界面模块。编辑界面模块负责与编辑界面相关的显示、操作等相关的功能,裁剪界面模块负责与裁剪界面相关的显示、操作等功能。编辑界面模块和裁剪界面模块之间可进行通信交互。
S502.视频编辑应用调用MediaCodec创建编解码器。
具体地,视频编辑应用可通过MediaCodec以及内存创建用于编辑页面的编码器以及解码器。
示例性地,图9中示出了本申请一实施例的创建编解码器的内部流程。图9中的视频编辑应用执行的操作可由编辑界面模块执行。如图9所示,该流程包括以下内容。
S5021.视频编辑应用向MediaCodec发送视频文件路径。
例如,当用户在图库应用点击视频中的视频编辑按钮时,图库应用向视频编辑应用发送待编辑的视频素材以及视频文件路径。视频编辑应用在接收到视频文件路径之后,可向MediaCodec发送视频文件路径。作为示例,上述视频文件路径可以表示为:/sdcard/dcim/camera/123.mp4。
S5022.MediaCodec解析视频文件路径,得到视频文件格式
其中,视频文件格式表示视频数据的压缩存储方式,或者说,表示视频帧数据如何编码压缩成一个视频的方式。作为示例,上述视频文件格式可以包括但不限于以下各项:MPEG4,AVI,MKV,RMVB等。作为具体示例,解析得到的视频文件格式可以为MPEG4格式。
S5023.MediaCodec向视频编辑应用返回视频文件格式。
示例性的,MediaCodec可以把解析得到的MPEG4格式发送给视频编辑应用。
S5024.视频编辑应用向内存发送申请第一共享内存的请求。
其中,该第一共享内存可以用于存储编解码器的输入数据和输出数据。一个共享内存可用于存储一个显示区域对应的数据。例如,如图1(d)所示,裁剪界面中包括多个显示区域,不同的显示区域对应裁剪界面中的不同的功能模块。例如,上述显示区域包括:裁剪界面中用于播放视频的显示区域308;裁剪比例按钮所在的显示区域311;旋转按钮301、和旋转度数的按钮302以及镜像按钮303所在的显示区域等。上述第一共享内存可对应于播放视频的显示区域308。在本申请中,显示区域308也被称为第一显示区域。
S5025.内存向视频编辑应用发送申请成功的信息,并携带第一共享内存的地址。
S5026.视频编辑应用向MediaCodec发送指示创建编解码器的第一指令,上述第一指令中携带视频文件格式以及第一共享内存的地址。
可选地,上述第一共享内存的地址也可以在其它信令中携带,本申请实施例对此不作限定。
S5027.MediaCodec根据视频文件格式,创建编解码器。
其中,编解码器可根据视频文件格式创建,作为示例,该编解码器能够识别视频封装和压缩格式,并将视频解析成视频流。MediaCodec可以根据视频文件格式创建解码器。
在创建编解码器之后,编解码器可以将相关的输入数据和输出数据存入第一共享内存中,例如,编辑码器可以将解码后的数据存入第一共享内存中。
S5028.MediaCodec创建编解码器成功,并向视频编辑应用返回创建成功的信息。
S503.视频编辑应用对渲染模块进行初始化。
具体地,视频编辑应用可通过渲染模块以及GPU实现渲染模块的初始化。
示例性地,图10中示出了本申请一实施例的渲染模块的初始化的内部流程。图10中的视频编辑应用执行的操作可由编辑界面模块执行。如图10所示,该流程包括以下内容。
S5031.视频编辑应用向渲染模块发送初始化渲染模块环境的命令。
S5032.渲染模块向GPU发送申请显存的请求,该显存用于接收视频画面。
例如,视频编辑应用可通过渲染模块向GPU发送申请显存的请求,该请求中可包括申请使用的显存的大小、视频帧的颜色格式等内容。
S5033.GPU分配显存,并向渲染模块发送申请显存成功的信息。
可选地,在显存申请成功之后,渲染模块可从GPU接收分配的显存的索引标识,该索引标识可映射到所申请的显存的地址。
S5034.渲染模块向视频编辑应用发送渲染模块初始化成功的信息。
S504.视频编辑应用对视频进行解析,以得到YUV格式的视频帧,并存入第一共享内存中。
YUV格式是指一种颜色空间的存储格式,简称为颜色格式。在实践中,MediaCodec输出的视频流通常为YUV格式。可选地,在其他的领域中,颜色空间的存储方式还可以包括其它格式,例如,RGB格式、HSV格式、LUV格式等,均可以用于存储颜色数据。本申请实施例中以YUV格式为例进行说明。
在视频解析的时候,解码器可根据视频文件格式(例如,MPEG4格式或MKV格式),将视频数据解析成YUV格式的视频流,根据时间点或者时间范围对YUV格式的视频流进行采样截取,便可以得到某一个时间点的YUV视频帧。
具体地,视频编辑应用可通过MediaCodec以及内存实现视频解析。
示例性地,图11中示出了本申请一实施例的视频解析方法的内部流程。图11中的视频编辑应用执行的操作可由编辑界面模块执行。如图11所示,该流程包括以下内容。
S5041.视频编辑应用向MediaCodec发送触发视频解析的命令。
S5042.MediaCodec对视频进行解析,得到YUV格式的视频帧。
具体地,MediaCodec通过解码器对视频进行解析,从而得到YUV格式的视频帧。
S5043.MediaCodec将YUV格式的视频帧存入到第一共享内存中。
S5044.内存返回存储成功信息。
S5045.MediaCodec向视频编辑应用发送解析YUV视频帧成功的信息。
S505.视频编辑应用对视频帧进行渲染操作。
在具体示例中,视频编辑应用可通过MediaCodec、内存、应用框架、渲染模块以及GPU实现视频帧的渲染。
示例性地,图12中示出了本申请一实施例的视频帧的渲染方法的内部流程。图12中的视频编辑应用执行的操作可由编辑界面模块执行。如图12所示,该流程包括以下内容。
S5051.视频编辑应用向渲染模块发送渲染视频帧的指令,该指令中包括当前视频帧完整画面的裁剪坐标。
其中,裁剪坐标可以指裁剪界面中的画面坐标。具体地,上述裁剪坐标可以指裁剪界面中的视频帧的画面的四个顶点的坐标。由于此时视频画面未开始裁剪,因此裁剪坐标是指完整画面的四个顶点的坐标。例如,以归一化的坐标为例,上述裁剪坐标可表示为:左上角坐标(0.0,1.0)、右上角坐标(1.0,1.0)、左下角坐标(0.0,0.0)、右下角坐标(1.0,0.0)。
S5052.渲染模块向内存发送读取视频帧的请求,该视频帧的颜色格式为YUV格式。
S5053.内存向渲染模块发送视频帧,该视频帧的颜色格式为YUV。
S5054.渲染模块将YUV格式的视频帧转换为RGB格式的视频帧。
示例性地,YUV格式的视频帧被转换为RGB格式的视频帧后,视频帧上的像素点是归一化后的RGB浮点(float)数据。
S5055.渲染模块根据裁剪坐标,准备绘制逻辑。
其中,准备绘制逻辑可以指渲染模块根据视频编辑界面发送的裁剪坐标,修改视频帧在视频编辑界面的绘制坐标。
S5056.渲染模块向GPU发送视频画面的渲染计算的指令。
S5057.GPU进行视频帧画面的渲染计算。
作为示例,上述渲染计算包括但不限于以下至少一项:滤镜、贴纸、特效、文字等。
S5058.GPU向渲染模块发送指示渲染完成的信息。
S5059.渲染模块指示GPU将RGB视频帧转换为YUV视频帧。
S50510.GPU执行将RGB视频帧转换为YUV视频帧的转换。
S50511.GPU向渲染模块发送视频格式转换成功的信息。
S50512.渲染模块向视频编辑应用发送视频帧渲染完成的通知。
S506.视频编辑应用将视频帧送至显示屏显示(简称为送显)。
可选地,在视频帧渲染完成之后,视频编辑应用可以调用GPU对视频帧进行绘制,然后送至显示屏显示。
具体地,视频编辑应用可通过调用应用框架、内存、SufaceFlinger、GPU实现绘制过程和送显过程。
示例性地,图13中示出了本申请一实施例的视频帧的绘制和送显过程的内部流程。图13中的视频编辑应用执行的操作可由编辑界面模块执行。如图13所示,该流程包括以下内容。
S5061.视频编辑应用向应用框架发送发送第一指令,第一指令用于指示所述应用框架发起视频绘制过程。
换句话说,视频编辑应用调用应用框架,以发起视频帧的绘制过程。
S5062.应用框架向所述GPU发送第六指令,所述第六指令用于指示GPU进行视频帧绘制。
换句话说,应用框架调用GPU发起视频帧的绘制过程。
S5063.GPU进行视频帧的绘制,以得到视频帧对应的第二画面数据。
S5064.GPU在视频帧绘制完成之后,将绘制的第二画面数据存入第一共享内存。
例如,参见图1(d),该第一共享内存对应于播放视频的显示区域308,该第一共享内存可用于存储变化的视频预览区域的画面数据。
S5065.GPU向应用框架发送第二画面数据存储成功信息,以指示第二画面数据以存入第共享内存中。
S5066.应用框架向视频编辑应用发送第二画面数据存储成功信息。
S5067.视频编辑应用向应用框架发送第三指令,第三指令用于指示应用框架将第一窗口视图对应的共享内存中的画面数据输出至屏幕显示。
其中,第一窗口视图为所述裁剪界面对应的整个窗口视图,上述第一窗口视图对应的共享内存用于存储编辑界面中的整体画面数据。其中,第一窗口视图对应的共享内存中包括上述第一共享内存。
S5068.应用框架向SurfaceFlinger发送第四指令,该第四指令用于通知SurfaceFlinger输出共享内存中的画面数据。
S5069.SurfaceFlinger将多个窗口视图对应的共享内存中的画面数据叠加混合成一个总画面数据。
其中,多个窗口视图可以指终端设备当前显示的多个应用程序的层级。每个窗口视图对应一个应用程序。多个窗口视图包括第一窗口视图。例如,以图1(d)为例,当前终端设备显示的多个应用程序包括桌面应用、图库应用、视频库应用中的编辑界面、视频库应用中的裁剪界面。其中,裁剪界面对应的窗口位于最上层级,上述多个应用程序对应的窗口视图需要进行叠加混合,最终呈现一个总的画面。
S50610.Surface Flinger将叠加后的总画面数据装填至屏幕的缓存区域。
从而,终端设备的屏幕可向用户展示视频画面。示例性地,屏幕驱动可以以一定的频率刷新屏幕,并从屏幕的缓存区域读取画面,用户在视觉上可以看到完成的视频画面。
其中,在S506部分,在接收到用户点击进入视频编辑的按钮的操作信息之后,终端设备的屏幕可向用户显示编辑界面(即主界面)。上述编辑界面可以是图1(c)中所示的编辑界面300。
在接收到用户点击进入编辑界面的操作信息之后,编辑界面中可呈现裁剪按钮,例如图1(c)所示的裁剪按钮310。用户可通过点击裁剪按钮310,进入裁剪界面400。
以上描述了终端设备进入编辑界面的过程,由上可见,在进入编辑界面的过程中,需使用渲染模块对显示的画面进行渲染操作,因此占用了较多的计算资源。本申请实施例提供了一种用于视频裁剪的方案,该方案在终端设备呈现裁剪界面的画面的过程中,可不使用渲染模块对视频帧进行渲染,即不触发渲染线程,在裁剪界面减少了多线程的时间片调度,从而使得裁剪界面的操作体验感更加流畅,改善了裁剪界面中的延时卡顿的现象。
接下来将结合图14至图18,描述本申请实施例的用于视频裁剪的方法。其中,图14描述了本申请实施例的用于视频裁剪的方法。图15描述了终端设备进入裁剪界面的过程,图16和图17描述了终端设备在裁剪界面中进行裁剪操作的过程。图18描述了终端设备从裁剪界面返回编辑界面的过程。
图14是本申请一实施例的用于视频裁剪的方法的示意图。如图14所示,该方法包括以下内容。
S601.检测到第一用户操作,第一用户操作用于触发对视频编辑应用的裁剪界面中的第一视频帧的裁剪操作。
可选地,述裁剪操作包括以下至少一项:旋转、移动、缩放、镜像、画面裁切。
可选地,S601中的第一用户操作中可以对应于图16的S801部分。
例如,第一用户操作可包括图1(d)中的裁剪操作,也可以包括图2-图4中显示的裁剪操作。
S602.响应于第一用户操作,记录第一视频帧对应的第一显示区域的裁剪参数,裁剪参数对应于第一用户操作。
可以理解为,裁剪参数用于指示第一用户操作导致的第一显示区域发生变化的参数。
可选地,裁剪参数包括以下至少一项:旋转角度、镜像参数、裁剪坐标。
可选地,S602部分的具体实现可参考图17中的S8021和S8022部分。
S603.调用CPU根据裁剪参数进行视频帧绘制,以得到裁剪后的第一视频帧的第一画面数据。
可选地,S603部分的具体实现可参考图17中的S8023至S8027部分。
S604.根据第一画面数据显示更新的裁剪界面,更新的裁剪界面中包括裁剪后的第一视频帧。
可选地,S604部分的具体实现可参考图17中的S8028-S80211部分。
在本申请实施例中,裁剪界面在响应用户的裁剪操作的过程中,不使用渲染模块对视频帧进行渲染,即不触发渲染线程,而是在调用应用框架和GPU进行视频帧绘制时记录和传递裁剪参数,以更新裁剪后视频帧的画面。这使得在显示裁剪界面时减少了多线程的时间片调度,从而使得裁剪界面的操作体验感更加流畅,改善了裁剪界面中的延时卡顿的现象。
另外,裁剪界面中不引入渲染工具,例如,OpenGl、EGL,这使得编辑界面和裁剪界面之间交互的信息变少,从而使两者的耦合度更少、更独立,提高了视频编辑应用的后台管理效率。
可选地,图14的方法还包括执行编辑界面进入所述裁剪界面的操作的过程,包括:检测到第二用户操作,所述第二用户操作用于触发从所述视频编辑应用的编辑界面进入所述裁剪界面的操作;响应于所述第二用户操作,显示所述裁剪界面,其中,所述裁剪界面中包括所述第一视频帧,在响应所述第二用户操作的过程中,不使用渲染模块对第一视频帧进行渲染操作。
可选地,第二用户操作可以指图15的S701中的用户点击进入裁剪界面的按钮的操作信息。
作为示例,第二用户操作可以指通过点击图1(c)所示的裁剪按钮310进入裁剪界面400。
在本申请实施例中,在响应用户的进入裁剪界面的过程中,可不使用渲染模块对视频帧进行渲染,即不触发渲染线程。这使得在显示裁剪界面时减少了多线程的时间片调度,从而使得裁剪界面的操作体验感更加流畅,改善了裁剪界面中的延时卡顿的现象。
其中,从编辑界面进入所述裁剪界面的具体过程可参考图15中的相关描述。
可选地,图14的方法还包括在从裁剪界面返回编辑界面的过程。例如,终端设备可执行以下步骤:检测到第三用户操作,所述第三用户操作用于指示已完成所述裁剪界面的裁剪操作;响应于所述第三用户操作,显示编辑界面,其中,所述编辑界面中包括所述裁剪后的第一视频帧。
其中,终端设备在裁剪界面中进行操作的过程可参考图18中的相关描述。
图15是本申请一实施例的进入裁剪界面的方法的流程示意图。如图15所示,该方法包括以下内容。
S701.接收用户点击进入裁剪界面的按钮的操作信息。
例如,上述进入裁剪界面的按钮可以指图1(c)所示的裁剪按钮310,通过点击裁剪按钮310可进入图1(d)所示的裁剪界面400。
可选地,S701中的接收用户点击进入裁剪界面的按钮的操作信息对应于上文中的第二用户操作。
S702.视频编辑应用的编辑界面模块向裁剪界面模块发送裁剪坐标。
应理解,由于此时视频画面未开始裁剪,因此裁剪坐标是指完整画面的四个顶点的坐标。例如,以归一化的坐标为例,上述裁剪坐标可表示为:左上角坐标(0.0,1.0)、右上角坐标(1.0,1.0)、左下角坐标(0.0,0.0)、右下角坐标(1.0,0.0)。
S703.裁剪界面模块创建编解码器。
其中,裁剪界面模块创建编解码器的过程与图7中的S502类似,具体过程可参考图9中的创建编解码器的方法,其区别在于执行主体由编辑界面模块替换为裁剪界面模块,为了简洁,此处不再赘述。
S704.裁剪界面模块进行视频解析。
其中,裁剪界面模块进行视频解析,以得到YUV格式的视频帧,并存入第一共享内存中。
其中,第一共享内存为图1(d)中的显示区域308(或者说第一显示区域)对应的共享内存。
其中,裁剪界面模块进行视频解析的过程与图8中的S504类似,只需将执行主体由编辑界面模块替换为裁剪界面模块,具体过程可参考图11中的进行视频解析的方法,为了简洁,此处不再赘述。
S705.裁剪界面模块将视频帧送至显示屏显示。
可选地,视频编辑应用可以调用GPU对视频帧进行绘制,然后送至显示屏显示。
具体地,视频编辑应用可通过调用应用框架、内存、SufaceFlinger、GPU实现绘制过程和送显过程。
其中,裁剪界面模块进行绘制和送显的过程与图8中的S506类似,只需将执行主体由编辑界面模块替换为裁剪界面模块,具体过程可参考图13中的视频帧的绘制和送显过程的方法,为了简洁,此处不再赘述。
在S705部分完成之后,终端设备可向用户呈现裁剪界面。上述裁剪界面例如可以是图1(d)所示的裁剪界面400。
与图8中打开编辑界面的过程相比,在图15的进入裁剪界面的过程中,没有初始化渲染模块以及使用渲染模块对视频帧进行渲染的过程,即不触发渲染线程,在裁剪界面减少了多线程的时间片调度,从而使得裁剪界面的操作体验感更加流畅,改善了裁剪界面中的延时卡顿的现象。并且,在裁剪界面中不引入渲染工具,例如,OpenGL、EGL,这使得编辑界面和裁剪界面之间交互的信息变少,从而使两者的耦合度更少、更独立,提高了视频编辑应用的后台管理效率。
需要说明的是,考虑到在裁剪界面执行的裁剪操作通常不使用和渲染线程相关的功能,例如,增加滤镜、特效、文字、贴纸等功能。因此,在裁剪界面显示视频帧的过程中省略渲染线程并不会影响裁剪界面正确显示视频画面,并且由于减少了渲染线程,可以改善裁剪界面中的延时卡顿现象,提高用户的操作体验。
图16是本申请一实施例的裁剪界面的进行视频裁剪的方法的流程示意图。如图16所示,该方法包括以下内容。
S801.接收用户在裁剪界面进行裁剪操作的操作信息。
例如,用户可以执行移动、缩放、旋转、镜像、画面裁切等操作。关于裁剪操作的具体示例可参考图1至图4相关的内容,为了简洁,此处不再赘述。
可选地,S801中的用户在裁剪界面进行裁剪操作的操作信息可对应于图14中的第一用户操作。
S802.在用户执行裁剪操作的过程中,将视频帧送至显示屏显示。
在用户执行裁剪操作的过程中,无需调用渲染模块对视频帧进行渲染。裁剪界面模块只需完成对视频帧的绘制和送显过程即可向用户呈现视频画面。
其中,在裁剪界面上,用户执行旋转、镜像、缩放、移动等裁剪操作,会导致视频帧相关的裁剪参数发生变化。裁剪参数可以指与用户的裁剪操作导致的视频帧所在显示区域发生变化的参数。例如,上述裁剪参数包括:旋转角度、镜像参数、裁剪坐标。在具体示例中,对视频帧进行旋转、镜像、缩放或画面裁切操作时,将会导致裁剪框内的视频画面的裁剪坐标发生变化,因此通过裁剪坐标这一项参数也可体现对视频画面进行旋转、镜像、缩放或画面裁切时的变化情况。
因此,裁剪界面模块可调用应用框架,记录当前视频帧对应的在裁剪过程中产生变化的裁剪参数,例如,记录旋转角度、镜像参数、裁剪坐标等。并在后续过程中利用上述记录的裁剪参数进行视频帧的绘制,并发送至显示屏显示。
例如,以记录裁剪坐标为例,假设用户通过拖动裁剪框对视频画面进行上半部分的画面裁切。应用框架可记录裁剪坐标,此时裁剪坐标可表示为左上角坐标(0.0,1.0)、右上角坐标(1.0,1.0)、左下角坐标(0.0,0.5)、右下角坐标(1.0,0.5)。
示例性地,图17中示出了本申请一实施例的在裁剪界面的视频帧的绘制和送显过程的内部流程。其中,图17与图13区别的地方在于:在S8021至S8024部分,裁剪界面模块调用应用框架时,记录当前视频帧对应的第一显示区域在裁剪过程中的变化的裁剪参数,上述记录的变化的裁剪参数可用于进行后续的视频帧的绘制过程。需要说明的是,由于终端设备在打开裁剪界面的过程中,省去了视频帧的运算和渲染操作,因此需要在绘制和送显的过程中根据变化的裁剪参数进行视频帧绘制,从而使得送显的视频帧为裁剪后的视频帧。
图17中的视频编辑应用执行的操作可由裁剪界面模块执行。如图17所示,该流程包括以下内容。
S8021.视频编辑应用向应用框架发送第一指令,第一指令用于指示所述应用框架发起视频绘制过程。其中,第一指令中还包括第五指令,第五指令用于指示所述应用框架记录所述裁剪参数。
换句话说,裁剪界面模块调用应用框架进行绘制,以发起视频帧的绘制过程。
S8022应用框架记录当前视频帧的变化的裁剪参数。
其中,该裁剪参数是指用户在裁剪界面的裁剪操作导致视频帧发生所在的第一显示区域发生变化的参数。例如,旋转角度、镜像参数、裁剪坐标等。
S8023.应用框架向GPU发送所述第二指令,所述第二指令用于指示GPU进行视频帧绘制,所述第二指令中包括所述裁剪参数。
换句话说,应用框架可调用GPU发起视频帧的绘制,并向GPU发送裁剪参数,裁剪参数包括旋转角度、镜像参数、裁剪坐标参数一个或多个。GPU可根据上述裁剪参数进行视频帧的绘制。
在一些示例中,所述裁剪参数也可以承载于其它类型的信息中,只要满足将裁剪参数发送至GPU的条件即可。
S8024.GPU根据裁剪参数进行视频帧的绘制,得到视频帧对应的第一画面数据。
S8025.GPU完成视频帧的绘制,并将绘制的第一画面数据存入第一共享内存中。
其中,参见图1(e),该第一共享内存对应于播放视频的显示区域308,该第一共享内存可用于存储变化的视频预览区域的画面数据。
S8026.GPU向应用框架发送第一画面数据存储成功信息,以指示第一画面数据已成功存入第一共享内存中。
S8027.应用框架向视频编辑应用发送第一画面数据存储成功信息。
S8028.视频编辑应用向应用框架发送第三指令,第三指令用于指示应用框架将第一窗口视图对应的共享内存中的画面数据输出至屏幕显示。
其中,第一窗口视图为所述裁剪界面对应的整个窗口视图,上述第一窗口视图对应的共享内存用于存储编辑界面中的整体画面数据。其中,第一窗口视图对应的共享内存中包括上述第一共享内存。
S8029.应用框架向SurfaceFlinger发送第四指令,该第四指令用于通知SurfaceFlinger输出共享内存中的画面数据。
S80210.SurfaceFlinger将多个窗口视图对应的共享内存中的画面数据叠加混合成一个总画面数据。
其中,多个窗口视图可以指终端设备当前显示的多个应用程序的层级。每个窗口视图对应一个应用程序。多个窗口视图包括第一窗口视图。例如,以图1(e)为例,当前终端设备显示的多个应用程序包括桌面应用、图库应用、视频库应用中的编辑界面、视频库应用中的裁剪界面。其中,裁剪界面对应的窗口位于最上层级,上述多个应用程序对应的窗口视图需要进行叠加混合,最终呈现一个总的画面。
S80211.Surface Flinger将叠加后的总画面数据装填至屏幕的缓存区域。
从而,终端设备的屏幕可向用户展示视频画面。示例性地,屏幕驱动可以以一定的频率刷新屏幕,并从屏幕的缓存区域读取画面,用户在视觉上可以看到完成的视频画面。
S803.接收用户指示裁剪完成的操作信息。
例如,裁剪完成的按钮可以指图1(d)中的按钮304。在用户点击裁剪完成的按钮304之后,视频编辑应用可以从裁剪界面返回至编辑界面。在返回编辑界面的内部流程可参考图18中的相关内容。
与图8中打开编辑界面的过程相比,图16与图17的方法在裁剪界面的操作过程中,没有使用渲染模块对视频帧进行渲染的过程,即不触发渲染线程,而是在调用应用框架和GPU进行视频帧绘制时记录和传递裁剪参数,以更新裁剪后视频帧的画面。这使得在裁剪界面减少了多线程的时间片调度,从而使得裁剪界面的操作体验感更加流畅,改善了裁剪界面中的延时卡顿的现象。并且,在裁剪界面中不引入渲染工具,例如,OpenGL、EGL,这使得编辑界面和裁剪界面之间交互的信息变少,从而使两者的耦合度更少、更独立,提高了视频编辑应用的后台管理效率。
图18是本申请一实施例的裁剪界面返回编辑界面的方法的流程示意图。如图18所示,该方法包括以下内容。
S901.接收用户指示裁剪完成的按钮的操作信息。
例如,上述裁剪完成的按钮可以指图1(f)中的按钮304。此时,视频编辑应用处于裁剪界面中。
可选地,S901中的用户指示裁剪完成的按钮的操作信息可对应于上文中的第三用户操作。
S902.视频编辑应用中的裁剪界面模块向编辑界面模块发送裁剪坐标。
例如,假设用户通过拖动裁剪框对视频画面进行上半部分的画面裁切。此时裁剪坐标可表示为:左上角坐标(0.0,1.0)、右上角坐标(1.0,1.0)、左下角坐标(0.0,0.5)、右下角坐标(1.0,0.5)。
作为示例,图19是本申请一实施例的裁剪界面的示意图。图19的(a)表示裁剪之前的裁剪界面,图19的(b)表示裁剪之后的裁剪界面。图19的(c)表示裁剪之前的裁剪界面的归一化坐标,图19的(d)表示裁剪之后的裁剪界面返回编辑界面的归一化坐标。
如图19中的(a)所示,外框代表手机屏幕的具体坐标。此时,作为示例,手机屏幕的四个角的像素坐标可依次表示为左上角坐标(0,2000)、右上角坐标(2000,2000)、左下角坐标(0,0)、右下角坐标(2000,0)。内框代表裁剪界面中的视频画面。由于还未开始执行裁剪操作,因此,负责裁剪的裁剪框(粗线)和视频画面是重合的。此时,裁剪框或者视频画面的像素坐标可表示为:左上角坐标(100,1600)、右上角坐标(1900,1600)、左下角坐标(100,400)、右下角坐标(1900,400)。参考图19的(c),此时裁剪框的归一化坐标表示为:左上角坐标(0.0,1.0)、右上角坐标(1.0,1.0)、左下角坐标(0.0,0.0)、右下角坐标(1.0,0.0)。
继续参考图19中的(b),用户修改裁剪框的范围,进行上半部分的画面裁切,此时裁剪框的像素坐标可表示为:左上角坐标(100,1600)、右上角坐标(1900,1600)、左下角坐标(100,1000)、右下角坐标(1900,1000)。参考图19的(d),裁剪界面可向编辑界面返回裁剪框的归一化坐标,归一化坐标可表示为:左上角坐标(0.0,1.0)、右上角坐标(1.0,1.0)、左下角坐标(0.0,0.5)、右下角坐标(1.0,0.5)。编辑界面可根据返回的裁剪框坐标生成视频画面。
S903.编辑界面模块进行视频解析。
其中,编辑界面模块进行视频解析的过程与图8中的S504类似,具体过程可参考图11中的视频解析的方法,为了简洁,此处不再赘述。
S904.编辑界面模块进行视频帧渲染。
其中,编辑界面模块进行视频帧渲染过程与图8中的S505类似,具体过程可参考图12中的视频帧渲染的方法,为了简洁,此处不再赘述。
需要说明的是,在视频帧渲染的过程中,需要根据裁剪坐标进行视频的渲染。例如,在图12中的S5051部分,裁剪坐标可更改为左上角坐标(0.0,1.0)、右上角坐标(1.0,1.0)、左下角坐标(0.0,0.5)、右下角坐标(1.0,0.5)。以及在图12中的S5055部分,渲染模块需要根据变化后的裁剪坐标准备绘制逻辑。
S905.编辑界面模块将视频帧送至显示屏显示。
可选地,在视频帧渲染完成之后,编辑界面模块可以调用GPU对视频帧进行绘制,然后送至显示屏显示。
其中,编辑界面模块进行绘制和送显的过程与图8中的S506类似,具体过程可参考图13中的视频帧的绘制和送显过程的方法,为了简洁,此处不再赘述。
在S905部分完成之后,终端设备向用户呈现编辑界面。编辑界面中显示有裁剪后的视频画面。例如,上述编辑界面可以是图1(c)中的编辑界面300。
如图18所示,在从裁剪界面返回到编辑界面的操作过程中,可使用渲染模块对视频帧进行渲染,以获取裁剪后的视频。
图20是本申请又一实施例的用于视频裁剪的方法的示意图。如图20所示,该方法包括以下内容。
S1101.检测到第一用户操作,第一用户操作用于触发对视频编辑应用的裁剪界面中的第一视频帧的裁剪操作。
可选地,S1101中的第一用户操作中可以对应于图16的S801部分。
例如,第一用户操作可包括图1(d)中的裁剪操作,也可以包括图2-图4中显示的裁剪操作。
S1102.响应于第一用户操作,显示更新的裁剪界面,更新的裁剪界面中包括裁剪后的第一视频帧,其中,在响应第一用户操作的过程中,不使用渲染模块对第一视频帧进行渲染操作。
这样,裁剪界面在响应用户的裁剪操作的过程中,不使用渲染模块对视频帧进行渲染,即不触发渲染线程,这使得在显示裁剪界面时减少了多线程的时间片调度,从而使得裁剪界面的操作体验感更加流畅,改善了裁剪界面中的延时卡顿的现象。
在一些示例中,在响应于第一用户操作,显示更新的裁剪界面,包括:调用应用框架记录第一视频帧对应的第一显示区域的裁剪参数,裁剪参数用于指示第一用户操作导致的第一显示区域发生变化的参数;调用图像处理单元GPU根据裁剪参数进行视频帧绘制,以得到裁剪后的第一视频帧的第一画面数据;根据第一画面数据显示更新的裁剪界面。
进一步地,上述根据第一用户操作显示更新的裁剪界面的具体实现可参考图16和图17中的相关内容,为了简洁,此处不再赘述。
这样,裁剪界面在响应用户的裁剪操作的过程中,不使用渲染模块对视频帧进行渲染,即不触发渲染线程,而是在调用应用框架和GPU进行视频帧绘制时记录和传递裁剪参数,以更新裁剪后视频帧的画面。这使得在显示裁剪界面时减少了多线程的时间片调度,从而使得裁剪界面的操作体验感更加流畅,改善了裁剪界面中的延时卡顿的现象。
可选地,在检测到第一用户操作之前,图20的方法还包括:检测到第二用户操作,第二用户操作用于触发从视频编辑应用的编辑界面进入裁剪界面的操作;响应于第二用户操作,显示裁剪界面,其中,裁剪界面中包括第一视频帧,在响应第二用户操作的过程中,不使用渲染模块对第一视频帧进行渲染操作。
可选地,第二用户操作可以指图15的S701中的用户点击进入裁剪界面的按钮的操作信息。
作为示例,第二用户操作可以指通过点击图1(c)所示的裁剪按钮310进入裁剪界面400。
进一步地,上述根据第二用户操作进入裁剪界面的具体实现可参考图15中的相关内容,为了简洁,此处不再赘述。
这样,进入裁剪界面的过程中,没有初始化渲染模块以及使用渲染模块对视频帧进行渲染的过程,即不触发渲染线程,在裁剪界面减少了多线程的时间片调度,从而使得裁剪界面的操作体验感更加流畅,改善了裁剪界面中的延时卡顿的现象。
上面结合图1-图20,对本申请实施例提供的方法进行了说明,下面对本申请实施例提供的执行上述方法的装置进行描述。
为了能够更好地理解本申请实施例,下面对本申请实施例的终端设备的结构进行介绍:
图21示出了终端设备100的硬件结构示意图。终端设备100可以包括处理器110,外部存储器接口120,内部存储器121,传感器模块180,按键190,马达151,指示器192,摄像头193,显示屏194。其中传感器模块180可以包括压力传感器180A,触摸传感器180K等。
可以理解的是,本申请实施例示意的结构并不构成对终端设备100的具体限定。在本申请另一些实施例中,终端设备100可以包括比图示更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。图示的部件可以以硬件,软件或软件和硬件的组合实现。
处理器110可以包括一个或多个处理单元,例如:处理器110可以包括应用处理器(application processor,AP),图形处理器(graphics processingunit,GPU),图像信号处理器(image signal processor,ISP),视频编解码器等。其中,不同的处理单元可以是独立的器件,也可以集成在一个或多个处理器中。
可以理解的是,本申请实施例示意的各模块间的接口连接关系,是示意性说明,并不构成对终端设备100的结构限定。在本申请另一些实施例中,终端设备100也可以采用上述实施例中不同的接口连接方式,或多种接口连接方式的组合。
终端设备100通过GPU,显示屏194,以及应用处理器等实现显示功能。GPU为图像处理的微处理器,连接显示屏194和应用处理器。GPU用于执行数学和几何计算,用于图形渲染。处理器110可包括一个或多个GPU,其执行程序指令以生成或改变显示信息。
显示屏194用于显示图像、显示视频和接收滑动操作等。显示屏194包括显示面板。显示面板可以采用液晶显示屏(liquid crystal display,LCD),有机发光二极管(organiclight-emittingdiode,OLED),有源矩阵有机发光二极体或主动矩阵有机发光二极体(active-matrixorganic light emitting diod,AMOLED),柔性发光二极管(flex light-emittingdiode,FLED),Miniled,MicroLed,Micro-oLed,量子点发光二极管(quantum dotlightemitting diodes,QLED)等。在一些实施例中,终端设备100可以包括1个或N个显示屏194,N为大于1的正整数。
终端设备100可以通过ISP,摄像头193,视频编解码器,GPU,显示屏194以及应用处理器等实现拍摄功能。
摄像头193用于捕获静态图像或视频。物体通过镜头生成光学图像投射到感光元件。感光元件可以是电荷耦合器件(charge coupled device,CCD)或互补金属氧化物半导体(complementary metal-oxide-semiconductor,CMOS)光电晶体管。感光元件把光信号转换成电信号,之后将电信号传递给ISP转换成数字图像信号。ISP将数字图像信号输出到DSP加工处理。DSP将数字图像信号转换成标准的RGB,YUV等格式的图像信号。在一些实施例中,终端设备100可以包括1个或N个摄像头193,N为大于1的正整数。
视频编解码器用于对数字视频压缩或解压缩。终端设备100可以支持一种或多种视频编解码器。这样,终端设备100可以播放或录制多种编码格式的视频,例如:动态图像专家组(moving picture experts group,MPEG)1,MPEG2,MPEG3,MPEG4等。
外部存储器接口120可以用于连接外部存储卡,例如Micro SD卡,实现扩展终端设备100的存储能力。外部存储卡通过外部存储器接口116与处理器110通信,实现数据存储功能。例如将音乐,视频等文件保存在外部存储卡中。
内部存储器121可以用于存储计算机可执行程序代码,可执行程序代码包括指令。内部存储器121可以包括存储程序区和存储数据区。其中,存储程序区可存储操作系统,至少一个功能所需的应用程序(比如声音播放功能,图像播放功能等)等。存储数据区可存储终端设备100使用过程中所创建的数据(比如音频数据,电话本等)等。
压力传感器180A用于感受压力信号,可以将压力信号转换成电信号。在一些实施例中,压力传感器180A可以设置于显示屏194。
触摸传感器180K,也称“触控器件”。触摸传感器180K可以设置于显示屏194,由触摸传感器180K与显示屏194组成触摸屏,也称“触控屏”。触摸传感器180K用于检测作用于其上或附近的触摸操作。触摸传感器可以将检测到的触摸操作传递给应用处理器,以确定触摸事件类型。可以通过显示屏194提供与触摸操作相关的视觉输出。在另一些实施例中,触摸传感器180K也可以设置于终端设备100的表面,与显示屏194所处的位置不同。
按键190包括开机键,音量键等。按键190可以是机械按键。也可以是触摸式按键。终端设备100可以接收按键输入,产生与终端设备100的用户设置以及功能控制有关的键信号输入。
马达191可以产生振动提示。马达191可以用于来电振动提示,也可以用于触摸振动反馈。例如,作用于不同应用程序(例如拍照,音频播放等)的触摸操作,可以对应不同的振动反馈效果。作用于显示屏194不同区域的触摸操作,
图22为本申请实施例提供的一种用于视频裁剪的装置的结构示意图,该用于视频裁剪的装置可以是本申请实施例中的终端设备,也可以是终端设备内的芯片或芯片系统。
如图22所示,用于视频裁剪的装置1500可以用于通信设备、电路、硬件组件或者芯片中,该用于视频裁剪的装置包括:显示单元1501、以及处理单元1502。其中,显示单元1501用于支持用于视频裁剪的装置1500执行的显示的步骤;处理单元1502用于支持用于视频裁剪的装置1500执行信息处理的步骤。
可能的实施例中,用于视频裁剪的装置还可以包括:存储单元1503。处理单元1502、存储单元1503通过线路相连。存储单元1503可以包括一个或者多个存储器,存储器可以是一个或者多个设备、电路中用于存储程序或者数据的器件。存储单元1503可以独立存在,通过通信线路与用于视频裁剪的装置具有的处理单元1502相连。存储单元1503也可以和处理单元1502集成在一起。
存储单元1503可以存储终端设备中的方法的计算机执行指令,以使处理单元1502执行上述实施例中的方法。存储单元1503可以是寄存器、缓存或者RAM等,存储单元1503可以和处理单元1502集成在一起。存储单元1503可以是只读存储器(read-only memory,ROM)或者可存储静态信息和指令的其他类型的静态存储设备,存储单元1503可以与处理单元1502相独立。
图23为本申请实施例提供的另一种终端设备的硬件结构示意图,如图23所示,该终端设备包括处理器1601,通信线路1604以及至少一个通信接口(图23中示例性的以通信接口1603为例进行说明)。
处理器1601可以是一个通用中央处理器(central processing unit,CPU),微处理器,特定应用集成电路(application-specific integrated circuit,ASIC),或一个或多个用于控制本申请方案程序执行的集成电路。
通信线路1604可包括在上述组件之间传送信息的电路。
通信接口1603,使用任何收发器一类的装置,用于与其他设备或通信网络通信,如以太网,无线局域网(wireless local area networks,WLAN)等。
可能的,该终端设备还可以包括存储器1602。
存储器1602可以是只读存储器(read-only memory,ROM)或可存储静态信息和指令的其他类型的静态存储设备,随机存取存储器(random access memory,RAM)或者可存储信息和指令的其他类型的动态存储设备,也可以是电可擦可编程只读存储器(electrically erasable programmable read-only memory,EEPROM)、只读光盘(compactdisc read-only memory,CD-ROM)或其他光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘存储介质或者其他磁存储设备、或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。存储器可以是独立存在,通过通信线路1604与处理器相连接。存储器也可以和处理器集成在一起。
其中,存储器1602用于存储执行本申请方案的计算机执行指令,并由处理器1601来控制执行。处理器1601用于执行存储器1602中存储的计算机执行指令,从而实现本申请实施例所提供的用于视频裁剪的方法。
可能的,本申请实施例中的计算机执行指令也可以称之为应用程序代码,本申请实施例对此不作具体限定。
在具体实现中,作为一种实施例,处理器1601可以包括一个或多个CPU,例如图23中的CPU0和CPU1。
在具体实现中,作为一种实施例,终端设备可以包括多个处理器,例如图23中的处理器1601和处理器1605。这些处理器中的每一个可以是一个单核(single-CPU)处理器,也可以是一个多核(multi-CPU)处理器。这里的处理器可以指一个或多个设备、电路、和/或用于处理数据(例如计算机程序指令)的处理核。
在上述实施例中,存储器存储的供处理器执行的指令可以以计算机程序产品的形式实现。其中,计算机程序产品可以是事先写入在存储器中,也可以是以软件形式下载并安装在存储器中。
计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行计算机程序指令时,全部或部分地产生按照本申请实施例的流程或功能。计算机可以是通用计算机、专用计算机、计算机网络或者其他可编程装置。计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一计算机可读存储介质传输,例如,计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(digital subscriber line,DSL)或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。计算机可读存储介质可以是计算机能够存储的任何可用介质或者是包括一个或多个可用介质集成的服务器、数据中心等数据存储设备。例如,可用介质可以包括磁性介质(例如,软盘、硬盘或磁带)、光介质(例如,数字通用光盘(digital versatiledisc,DVD))、或者半导体介质(例如,固态硬盘(solid state disk,SSD))等。
本申请实施例还提供了一种计算机可读存储介质。上述实施例中描述的方法可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。计算机可读介质可以包括计算机存储介质和通信介质,还可以包括任何可以将计算机程序从一个地方传送到另一个地方的介质。存储介质可以是可由计算机访问的任何目标介质。
作为一种可能的设计,计算机可读介质可以包括紧凑型光盘只读储存器(compactdisc read-only memory,CD-ROM)、RAM、ROM、EEPROM或其它光盘存储器;计算机可读介质可以包括磁盘存储器或其它磁盘存储设备。而且,任何连接线也可以被适当地称为计算机可读介质。例如,如果使用同轴电缆,光纤电缆,双绞线,DSL或无线技术(如红外,无线电和微波)从网站,服务器或其它远程源传输软件,则同轴电缆,光纤电缆,双绞线,DSL或诸如红外,无线电和微波之类的无线技术包括在介质的定义中。如本文所使用的磁盘和光盘包括光盘(CD),激光盘,光盘,数字通用光盘(digital versatiledisc,DVD),软盘和蓝光盘,其中磁盘通常以磁性方式再现数据,而光盘利用激光光学地再现数据。
上述的组合也应包括在计算机可读介质的范围内。以上,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。
Claims (20)
1.一种用于视频裁剪的方法,其特征在于,应用于电子设备,所述方法包括:
检测到第一用户操作,所述第一用户操作用于触发对视频编辑应用的裁剪界面中的第一视频帧的裁剪操作;
响应于所述第一用户操作,所述裁剪界面不使用渲染模块对所述第一视频帧进行渲染操作,获得所述第一用户操作对应的裁剪参数;
调用图像处理单元GPU根据所述裁剪参数进行视频帧绘制,以得到裁剪后的第一视频帧的第一画面数据;
根据所述第一画面数据显示更新的裁剪界面,所述更新的裁剪界面中包括所述裁剪后的第一视频帧。
2.如权利要求1所述的方法,其特征在于,所述裁剪操作包括以下至少一项:旋转、移动、缩放、镜像、画面裁切。
3.如权利要求1或2所述的方法,其特征在于,所述裁剪参数包括以下至少一项:旋转角度、镜像参数、裁剪坐标。
4.如权利要求1至3中任一项所述的方法,其特征在于,所述响应于所述第一用户操作,获得所述第一用户操作对应的裁剪参数,包括:
响应于所述第一用户操作,记录所述第一视频帧对应的第一显示区域的裁剪参数。
5.如权利要求4所述的方法,其特征在于,所述响应于所述第一用户操作,记录所述第一视频帧对应的第一显示区域的裁剪参数,包括:
所述视频编辑应用向应用框架发送第一指令,所述第一指令用于指示所述应用框架发起视频绘制过程,所述第一指令中包括第五指令,所述第五指令用于指示所述应用框架记录所述裁剪参数;
所述应用框架记录所述裁剪参数。
6.如权利要求5所述的方法,其特征在于,所述调用GPU根据所述裁剪参数进行视频帧绘制,包括:
所述GPU接收所述应用框架发送的第二指令,所述第二指令用于指示GPU进行视频帧绘制,所述第二指令中包括所述裁剪参数;
所述GPU根据所述裁剪参数进行视频帧绘制,以得到所述第一画面数据;
所述GPU将所述第一画面数据存入所述第一显示区域对应的第一共享内存中。
7.如权利要求6所述的方法,其特征在于,所述根据所述第一画面数据显示裁剪界面,包括:
所述视频编辑应用向应用框架发送第三指令,所述第三指令用于指示应用框架将第一窗口视图对应的共享内存中的画面数据输出至屏幕显示,所述第一窗口视图为所述裁剪界面对应的窗口视图,所述第一窗口视图对应的共享内存中包括所述第一共享内存;
所述应用框架向SurfaceFlinger发送第四指令,所述第四指令用于通知SurfaceFlinger输出共享内存中的画面数据;
所述SurfaceFlinger将多个窗口视图对应的共享内存中的画面数据叠加混合成一个总画面数据,所述多个窗口视图包括所述第一窗口视图;
所述SurfaceFlinger将所述总画面数据装填至屏幕的缓存区域,以显示所述裁剪界面。
8.如权利要求5至7中任一项所述的方法,其特征在于,在所述检测到第一用户操作之前,所述方法还包括:
检测到第二用户操作,所述第二用户操作用于触发从所述视频编辑应用的编辑界面进入所述裁剪界面的操作;
响应于所述第二用户操作,显示所述裁剪界面,其中,所述裁剪界面中包括所述第一视频帧,在响应所述第二用户操作的过程中,所述裁剪界面不使用渲染模块对所述第一视频帧进行渲染操作。
9.如权利要求8所述的方法,其特征在于,所述响应于所述第二用户操作,显示所述裁剪界面,包括:
调用MediaCodec创建编解码器;
根据所述编解码器对所述第一视频帧对应的视频数据进行解析,以获取YUV格式的第一视频帧;
根据所述YUV格式的第一视频帧进行绘制,以得到所述第一视频帧对应的第二画面数据;
根据所述第二画面数据,显示所述裁剪界面。
10.如权利要求9所述的方法,其特征在于,所述调用MediaCodec创建编码器以及解码器,包括:
所述视频编辑应用向所述MediaCodec发送所述第一视频帧对应的视频文件路径;
所述MediaCodec解析所述视频文件路径,以得到所述视频文件格式;
所述MediaCodec向所述视频编辑应用发送所述视频文件格式;
所述视频编辑应用向所述MediaCodec发送指示创建编解码器的第七指令,所述第七指令中包括所述视频文件格式;
所述MediaCodec根据所述视频文件格式创建编解码器。
11.如权利要求10所述的方法,其特征在于,所述方法还包括:
所述视频编辑应用向内存申请所述第一显示区域对应的第一共享内存,所述第一共享内存用于存储所述编解码器的输入数据或输出数据;
所述内存向所述视频编辑应用发送共享内存创建成功的信息,所述共享内存创建成功的信息中包括所述第一共享内存的地址;
所述视频编辑应用向所述MediaCodec发送所述第一共享内存的地址。
12.如权利要求9至11中任一项所述的方法,其特征在于,根据所述编解码器对所述第一视频帧对应的视频数据进行解析,以获取YUV格式的第一视频帧,包括:
所述视频编辑应用向所述MediaCodec发送解析视频的命令;
所述MediaCodec通过所述编解码器对所述第一视频帧对应的视频数据进行解析,以获取YUV格式的第一视频帧;
所述MediaCodec将所述YUV格式的第一视频帧存入所述第一显示区域对应的第一共享内存中;
所述MediaCodec向所述视频编辑应用发送视频解析成功的信息。
13.如权利要求12所述的方法,其特征在于,所述根据所述YUV格式的第一视频帧进行绘制,以得到所述第一视频帧对应的第二画面数据,包括:
所述视频编辑应用向所述应用框架发送第一指令,所述第一指令用于指示所述应用框架发起视频绘制过程;
所述应用框架向所述GPU发送第六指令,所述第六指令用于指示GPU进行视频帧绘制;
所述GPU进行视频帧的绘制,得到所述第二画面数据;
所述GPU将所述第二画面数据存入所述第一显示区域对应的第一共享内存中。
14.如权利要求13所述的方法,其特征在于,根据所述第二画面数据,显示所述裁剪界面,包括:
所述视频编辑应用向应用框架发送第三指令,所述第三指令用于指示应用框架将第一窗口视图对应的共享内存中的画面数据输出至屏幕显示,所述第一窗口视图为所述裁剪界面对应的窗口视图,所述第一窗口视图对应的共享内存中包括所述第一共享内存;
所述应用框架向SurfaceFlinger发送第四指令,所述第四指令用于通知SurfaceFlinger输出共享内存中的画面数据;
所述SurfaceFlinger将多个窗口视图对应的共享内存中的画面数据叠加混合成一个总画面数据,所述多个窗口视图包括所述第一窗口视图;
所述SurfaceFlinger将所述总画面数据装填至屏幕的缓存区域,以显示所述裁剪界面。
15.如权利要求13或14所述的方法,其特征在于,在所述检测到第一用户操作之后,所述方法还包括:
检测到第三用户操作,所述第三用户操作用于指示已完成所述裁剪界面的裁剪操作;
响应于所述第三用户操作,显示编辑界面,其中,所述编辑界面中包括所述裁剪后的第一视频帧。
16.一种用于视频裁剪的方法,其特征在于,应用于电子设备,所述方法包括:
检测到第一用户操作,所述第一用户操作用于触发对视频编辑应用的裁剪界面中的第一视频帧的裁剪操作;
响应于所述第一用户操作,显示更新的裁剪界面,所述更新的裁剪界面中包括所述裁剪后的第一视频帧,其中,在响应所述第一用户操作的过程中,所述裁剪界面不使用渲染模块对所述第一视频帧进行渲染操作。
17.如权利要求16所述的方法,其特征在于,所述响应于所述第一用户操作,显示更新的裁剪界面,包括:
调用应用框架记录所述第一视频帧对应的第一显示区域的裁剪参数,所述裁剪参数用于指示所述第一用户操作导致的所述第一显示区域发生变化的参数;
调用图像处理单元GPU根据所述裁剪参数进行视频帧绘制,以得到裁剪后的第一视频帧的第一画面数据;
根据所述第一画面数据显示所述更新的裁剪界面。
18.如权利要求16或17所述的方法,其特征在于,在所述检测到第一用户操作之前,所述方法还包括:
检测到第二用户操作,所述第二用户操作用于触发从所述视频编辑应用的编辑界面进入所述裁剪界面的操作;
响应于所述第二用户操作,显示所述裁剪界面,其中,所述裁剪界面中包括所述第一视频帧,在响应所述第二用户操作的过程中,所述裁剪界面不使用渲染模块对所述第一视频帧进行渲染操作。
19.一种电子设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时,使得所述电子设备执行如权利要求1-15中任一项所述的方法,或者执行如权利要求16-18中任一项所述的方法。
20.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时,使得计算机执行如权利要求1-15中任一项所述的方法,或者执行如权利要求16-18中任一项所述的方法。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2022106014375 | 2022-05-30 | ||
CN202210601437 | 2022-05-30 | ||
CN202211166928.8A CN116095250B (zh) | 2022-05-30 | 2022-09-23 | 用于视频裁剪的方法和装置 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211166928.8A Division CN116095250B (zh) | 2022-05-30 | 2022-09-23 | 用于视频裁剪的方法和装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117915020A true CN117915020A (zh) | 2024-04-19 |
Family
ID=86201294
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311679849.1A Pending CN117915020A (zh) | 2022-05-30 | 2022-09-23 | 用于视频裁剪的方法和装置 |
CN202211166928.8A Active CN116095250B (zh) | 2022-05-30 | 2022-09-23 | 用于视频裁剪的方法和装置 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211166928.8A Active CN116095250B (zh) | 2022-05-30 | 2022-09-23 | 用于视频裁剪的方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (2) | CN117915020A (zh) |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101065750A (zh) * | 2004-11-24 | 2007-10-31 | 皇家飞利浦电子股份有限公司 | 基于音频选择的视频剪辑记录和重放 |
US10269388B2 (en) * | 2007-08-21 | 2019-04-23 | Adobe Inc. | Clip-specific asset configuration |
CN103888840B (zh) * | 2014-03-27 | 2017-03-29 | 电子科技大学 | 一种视频移动终端实时拖动与缩放的方法及装置 |
CN105988688A (zh) * | 2016-01-22 | 2016-10-05 | 腾讯科技(深圳)有限公司 | 一种截图的方法及装置 |
CN105741233B (zh) * | 2016-01-27 | 2020-01-17 | 桂林长海发展有限责任公司 | 一种视频图像球面拼接方法及系统 |
US10768885B1 (en) * | 2019-04-23 | 2020-09-08 | Study Social Inc. | Video conference with shared whiteboard and recording |
CN110139148B (zh) * | 2019-05-22 | 2021-05-28 | 武汉瓯越网视有限公司 | 一种视频切换清晰度的方法及相关装置 |
CN111770288B (zh) * | 2020-06-23 | 2022-12-09 | Oppo广东移动通信有限公司 | 视频编辑方法、装置、终端及存储介质 |
CN113411664B (zh) * | 2020-12-04 | 2023-05-12 | 腾讯科技(深圳)有限公司 | 基于子应用的视频处理方法、装置和计算机设备 |
CN112954459A (zh) * | 2021-03-04 | 2021-06-11 | 网易(杭州)网络有限公司 | 一种视频数据的处理方法和装置 |
-
2022
- 2022-09-23 CN CN202311679849.1A patent/CN117915020A/zh active Pending
- 2022-09-23 CN CN202211166928.8A patent/CN116095250B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN116095250B (zh) | 2023-10-31 |
CN116095250A (zh) | 2023-05-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10986330B2 (en) | Method and system for 360 degree head-mounted display monitoring between software program modules using video or image texture sharing | |
KR102307163B1 (ko) | 크로스 플랫폼 렌더링 엔진 | |
US11403121B2 (en) | Streaming per-pixel transparency information using transparency-agnostic video codecs | |
US20220139352A1 (en) | Method and Device for Image Composition, Electronic Device and Storage Medium | |
KR101239029B1 (ko) | 그래픽스 처리 시스템의 오프-스크린 표면을 위한 멀티-버퍼 지원 | |
CN113244614B (zh) | 图像画面展示方法、装置、设备及存储介质 | |
US9485290B1 (en) | Method and system for controlling local display and remote virtual desktop from a mobile device | |
JP2003531445A (ja) | グラフィカルデータおよびデジタルドキュメント処理の視覚表示を生成するためのシステムおよび方法 | |
CN107179920B (zh) | 网络引擎启动方法及装置 | |
TW201706834A (zh) | 應用程式與虛擬機器通訊連接的系統與方法 | |
KR20220080007A (ko) | 증강 현실 기반 디스플레이 방법, 장치 및 저장 매체 | |
US10432681B1 (en) | Method and system for controlling local display and remote virtual desktop from a mobile device | |
CN116136784A (zh) | 数据处理方法、装置、存储介质及程序产品 | |
CN108335342B (zh) | 在web浏览器上进行多人绘画的方法、设备和计算机程序产品 | |
CN111679738A (zh) | 一种屏幕切换方法、装置、电子设备及存储介质 | |
KR101984825B1 (ko) | Api 정보를 이용한 클라우드 디스플레이 화면의 부호화 방법 및 그 장치 | |
CN111614906B (zh) | 一种图像预处理方法、装置、电子设备及存储介质 | |
CN116095250B (zh) | 用于视频裁剪的方法和装置 | |
KR20150083475A (ko) | 터치입력을 이용한 미디어 편집 방법 및 장치 | |
CN113271497B (zh) | 一种视频播放方法、智能终端、存储介质及程序产品 | |
CN112218003B (zh) | 一种桌面图像采集方法、装置及电子设备 | |
CN118694959A (zh) | 变分辨率云控视频压缩方法、系统、设备、介质及产品 | |
CN115167796A (zh) | 一种显示内容获取方法、装置、终端设备及介质 | |
CN116188736A (zh) | 一种3d虚拟场景的降级展示方法、装置以及设备 | |
CN116996629A (zh) | 多视频设备采集显示方法及其系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication |