Real-time video editing

By performing a swipe gesture in the camera device view user interface to rewind video frames and set a new starting point, the problem of uninteresting frames in video recording is solved, enabling real-time video editing, reducing the waste of storage and processing resources, and improving the user experience.

CN116349220BActive Publication Date: 2026-04-07SNAP INC
View PDF 2 Cites 0 Cited by

Patent Information

Authority / Receiving Office
CN · China
Patent Type
Patents(China)
Current Assignee / Owner
Filing Date
2021-09-24
Publication Date
2026-04-07

AI Technical Summary

Technical Problem

In existing technologies, users may capture frames that are not of interest for a period of time after video recording begins, resulting in a waste of video file storage space and processing resources, and making it impossible to edit in real time during the recording process.

Method used

It provides real-time video editing capabilities, allowing users to rewind video frame sequences by performing swipe gestures in the camera device view user interface, set a new video start point at the end of recording, discard uninteresting frames, and generate new video files.

Benefits of technology

It reduces the storage space and processing resource requirements of video files, allows users to edit in real time during video recording, and improves the user experience.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN116349220B_ABST
    Figure CN116349220B_ABST
Patent Text Reader

Abstract

Examples of the present disclosure improve the functionality of electronic software and systems by enhancing the user experience of using a camera of a client device. The technical problem of generating a video having a starting point that is chronologically later than a start time of an associated recording session is addressed by providing a live video editing function. In some examples, the live video editing function is in the form of a live video editor provided by a messaging system for exchanging data over a network.
Need to check novelty before this filing date? Find Prior Art

Description

[0001] CLAIM OF PRIORITY

[0002] This application claims the benefit of priority of U.S. Provisional Application Serial No. 63 / 198,145, filed September 30, 2020, and U.S. Patent Application Serial No. 17 / 448,435, filed September 22, 2021, each of which is incorporated herein by reference in its entirety. BACKGROUND

[0003] Input / output, I / O, components of client devices often include one or more cameras (with still imaging / video and video recording capabilities). Camera applications provided with some mobile devices, such as smartphones, can include a feature that allows setting a timer with respect to a video recording session. For example, a user can set a timer for recording to start after 5 seconds, which would provide the user time to walk away from the smartphone to an area to be captured in the video. Without using such a timer feature, the user can simply press the record button and walk to the area being captured by the digital image sensor of the camera. The resulting recorded video can then include the first few seconds where the user is not in the frame. In another example, where the user is recording a sporting event, some exciting action can only occur a time period after recording starts. In both of these examples, the first portion of the recording (where the user is not in the frame or when nothing exciting has yet occurred in the sporting event) can be of less or no interest to the user. BRIEF DESCRIPTION OF DRAWINGS

[0004] In the drawings, like reference numerals can describe similar parts throughout the several views. A highest order digit or digits in reference numerals can refer to the figure number in which that element was first introduced. Some non-limiting examples are illustrated in the drawings, in which:

[0005] Figure 1 is a diagrammatic representation of a networked environment in which the present disclosure can be deployed according to some examples.

[0006] Figure 2 is a diagrammatic representation of a messaging system having both client-side and server-side functionality according to some examples.

[0007] Figure 3 is a diagrammatic representation of a data structure as maintained in a database according to some examples.

[0008] Figure 4 is a diagrammatic representation of a message according to some examples.

[0009] Figure 5 is a flowchart for access restriction processing according to some examples.

[0010] Figure 6 is a flowchart illustrating a method for real-time video editing according to some examples.

[0011] Figure 7 is a graphical representation of a camera view user interface displaying an output of a digital image sensor of a camera device according to some examples.

[0012] Figure 8 is a graphical representation of a swipe gesture pointing to a camera view user interface according to some examples.

[0013] Figure 9 is a graphical representation of a rewind action mimic in a camera view user interface according to some examples.

[0014] Figure 10 is a graphical representation of a machine in the form of a computer system within which a set of instructions can be executed for causing the machine to perform any one or more of the methods discussed herein, according to some examples. DETAILED DESCRIPTION

[0015] Examples of the present disclosure improve the functionality of electronic software and systems by enhancing the user’s experience of using a camera of a client device. Examples of the present disclosure also improve the functionality of electronic software and systems by reducing the amount of storage space and processing resources associated with generating a video file based on a sequence of frames captured in the course of a video recording. In some examples, the reduction in the amount of storage space and processing resources required to create a video file is due to discarding some of the recorded video frames prior to creating and storing the video file.

[0016] To start and stop a video recording, a user can activate a capture button disposed in a user interface (UI) of an associated camera application. For example, a camera of a client device, such as a smartphone, captures an output of a digital image sensor of the camera and, at the end of a recording session, the system generates a video file (also referred to simply as a video) using the frames captured during the video recording process. The resulting video can then be saved and stored for future viewing. However, at times a user can wish to view already recorded frames while the recording is still in progress. Furthermore, as mentioned above, depending on the environment surrounding the recording session, the recorded video can include a portion of frames at the beginning of the video that are of little or no value to the user.

[0017] Technical problems of generating videos having a starting point that is chronologically later than a start time of an associated recording session are addressed by providing real-time video editing functionality. In some examples, the real-time video editing functionality is in the form of a real-time video editor provided by a messaging system for exchanging data over a network, which is further described below with reference to Figures 1 to 5

[0018] The use of the real-time video editor can be described as follows. A user starts a video recording process by activating a capture button disposed in a camera view user interface (UI) of an associated camera application, and at a later time but while the video recording is still in progress, determines that a first portion of the video is not of interest to the user. The user can then perform a predetermined gesture directed to the camera view UI, such as a swipe gesture from left to right, which causes the camera view UI to display the captured frames to be displayed in reverse order, thereby mimicking or visualizing a process of rewinding the video. When the gesture stops, the visualization of the rewinding process stops, and the user is presented with one or more frames corresponding to a position in the sequence of frames to which the video was rewound. The user can then be presented with a pop-up message requesting that the video file to be created upon stopping of the video recording process should not start with the first frame in the original sequence of frames (the first frame recorded at the start of the recording process), but rather with the one or more frames to which the video was rewound and which are currently displayed in the camera view UI. Examples of operation of the real-time video editor are further described below with reference to Figure 6 Examples of operation of the real-time video editor are further described below with reference to

[0019] Networking computing environment

[0020] Figure 1 is a block diagram illustrating an example messaging system 100 for exchanging data (e.g., messages and associated content) over a network. The messaging system 100 includes multiple instances of client devices 102, each of which hosts several applications including a messaging client 104. Each messaging client 104 is communicatively coupled to other instances of the messaging client 104 and to a messaging server system 108 via a network 106 (e.g., the Internet).

[0021] The messaging client 104 is able to communicate and exchange data with another messaging client 104 and the messaging server system 108 via the network 106. The data exchanged between the messaging clients 104 and between the messaging clients 104 and the messaging server system 108 includes functionality (e.g., commands to activate functionality) as well as payload data (e.g., text, audio, video, or other multimedia data).​

[0022] The messaging server system 108 hosts a number of applications and systems that implement various functionalities "in the cloud" including, without limitation, the functionality to host and manage the creation and sharing of media content, such as photos, videos, and live streams. The messaging server system 108 includes a content server 110, a web server 124, an application server 112, a social network server 126, and a database server 118, among other things. The content server 110 implements functionality for media hosting and management, including the storage and retrieval of media content, and the creation and management of a media gallery. The web server 124 provides web-based interfaces to the messaging server system 108 for use by client devices 102. The application server 112 provides server-side functionality via an application program interface (API) to the messaging server system 108, and can include a messaging server application 114 that hosts chat functionality and a social network server 126 that hosts a social network functionality. The database server 118 hosts a relational database management system (RDBMS) that stores data used by the messaging server system 108.

[0023] The messaging server system 108 supports a variety of services and operations that are provided to the messaging server system 108 by the messaging server system 108. Such operations include, without limitation, sending of data, receiving of data, and processing of data generated by the messaging server system 108. As examples, the data can include message content, client device information, geolocation information, media augmentations and overlays, message content persistence conditions, social network information, live event information, and images and video captured using the front-facing camera of an associated client device using a viewfinder ring flash. The exchange of data within the messaging server system 100 is activated and controlled by functionality available via a user interface (UI) of the messaging server system 100. For example, the messaging server system 100 can present a camera view UI that displays the output of a digital image sensor of a camera provided with the client device 102, a camera view UI that displays the output of a digital sensor of a camera, and a shutter user selectable element that can be activated to start a video recording process. Some examples of the camera view UI are further described below with reference to FIGS. 3-5. Figures 7 to 9 Further examples of the camera view UI are further described below with reference to FIGS. 3-5.

[0024] Turning now specifically to the messaging server system 108, an application program interface (API) server 110 is coupled to, and provides a programmatic interface to, an application server 112. The application server 112 is communicatively coupled to a database server 118, which facilitates access to a database 120 that stores data associated with messages processed by the application server 112. Similarly, a web server 124 is coupled to the application server 112, and provides web-based interfaces to the application server 112. To this end, the web server 124 processes incoming network requests using the Hypertext Transfer Protocol (HTTP) and several related protocols.

[0025] The application program interface (API) server 110 receives and sends message data, such as command and message payloads, between the client device 102 and the application servers 112. Specifically, the application program interface (API) server 110 provides a set of interfaces, such as routines and protocols, that the messaging client 104 can call or query to activate functionality of the application servers 112. The application program interface (API) server 110 exposes various functions supported by the application servers 112, including: account registration; login functionality; sending messages from a particular messaging client 104 to another messaging client 104 via the application servers 112; sending media files, such as images or videos, from the messaging client 104 to the messaging server 114 for possible access by another messaging client 104; setting of media data collections, such as stories; retrieving a friend list of a user of the client device 102; retrieving such collections; retrieving messages and content; adding and deleting entities, such as friends, in an entity graph, such as a social graph; locating friends in a social graph; and opening application events, such as related to the messaging client 104.

[0026] The application servers 112 host a number of server applications and subsystems, including, for example, the messaging server 114, the image processing server 116, and the social network server 122. The messaging server 114 implements a number of message processing technologies and functions, particularly with respect to aggregation and other processing of content, such as textual and multimedia content, included in messages received from multiple instances of the messaging client 104. As will be described in further detail, textual and media content from multiple sources can be aggregated into collections of content, such as stories or galleries. These collections are then made available to the messaging client 104. In some examples, the collections can include videos generated using a live video editor. Other processor and memory intensive processing of data can also be performed by the messaging server 114 on the server side, given the hardware requirements for such processing.

[0027] The application servers 112 also include the image processing server 116, which is dedicated to performing various image processing operations, typically with respect to images or videos within the payloads of messages sent from or received at the messaging server 114. Some of the various image processing operations can be performed by various AR components, which can be hosted or supported by the image processing server 116. In some examples, the image processing server 116 is configured to provide the functionality of the live video editor described herein.

[0028] The social networking server 122 supports various social networking functions and services and makes these functions and services available to the messaging server 114. To this end, the social networking server 122 maintains and accesses an entity graph 306 (as shown in Figure 3 FIG. 3) within the database 120. Examples of functions and services supported by the social networking server 122 include identifying other users in the messaging system 100 that have a “friend” relationship with a particular user or that the particular user is “following,” as well as identifying interests and other entities of a particular user.

[0029] System Architecture

[0030] Figure 2 is a block diagram illustrating additional details regarding the messaging system 100, in accordance with some examples. In particular, the messaging system 100 is shown to include the messaging client 104 and the application server 112. The messaging system 100 includes several subsystems that are supported on the client side by the messaging client 104 and on the server side by the application server 112. These subsystems include, for example, a ephemeral timer system 202, a collection management system 204, an augmentation system 206, and a live video editor 208.

[0031] The live video editor 208 is configured to facilitate changing the starting point of a video recording while the recording process is in progress, as described in further detail below with reference to Figures 6 to 9 FIG. 4.

[0032] The ephemeral timer system 202 is responsible for enforcing temporary or time-limited access to content by the messaging client 104 and the messaging server 114. The ephemeral timer system 202 includes several timers that selectively enable access (e.g., for presentation and display) of messages and associated content via the messaging client 104 based on the duration and display parameters associated with a message or a collection of messages (e.g., a story). Additional details regarding the operation of the ephemeral timer system 202 are provided below.

[0033] The collection management system 204 is responsible for managing collections or sets of media (e.g., collections of text, images, video, and audio data). Collections of content (e.g., messages, including images, videos, text, and audio) can be organized into “event galleries” or “event stories.” Such collections can be made available for a specified time period, such as the duration of an event related to the content. For example, content related to a concert can be made available as a “story” for the duration of a concert. In other examples, collections may include content generated using one or more AR components. In some examples, a real-time video editor is used to generate media content items in the collection. The collection management system 204 may also be responsible for publishing icons that notify the user interface of the messaging client 104 of the existence of a specific collection.

[0034] Furthermore, the collection management system 204 also includes a curation interface 212 that allows collection managers to manage and curate specific collections of content. For example, curation interface 212 enables event organizers to curate collections of content related to a specific event (e.g., removing inappropriate content or redundant messages). Additionally, the collection management system 204 employs machine vision (or image recognition technology) and content rules to automatically curate content collections. In some examples, compensation may be paid to users for including user-generated content in a collection. In such cases, the collection management system 204 operates to automatically pay users for using their content.

[0035] Enhancement system 206 provides various functions that enable users to enhance (e.g., annotate or otherwise modify or edit) media content that may be associated with a message. For example, enhancement system 206 provides functions related to generating and publishing media overlays for messages processed by messaging system 100. Media overlays may be stored in database 120 and accessed through database server 118.

[0036] Enhancement system 206 provides various functionalities that enable users to enhance (e.g., annotate or otherwise modify or edit) media content associated with a message. For example, enhancement system 206 provides functionalities related to generating and publishing media overlays for messages processed by messaging system 100. Enhancement system 206 can operable to provide media overlays or enhancements (e.g., image filters) to messaging client 104 based on the geolocation of client device 102. In another example, enhancement system 206 can operable to provide media overlays to messaging client 104 based on other information such as the social network information of the user of client device 102. Media overlays can include audio and visual content as well as visual effects. Examples of audio and visual content include images, text, logos, animations, and sound effects. Examples of visual effects include color overlays.

[0037] Audio and visual content or visual effects can be applied to media content items (e.g., photos) at client device 102. In another example, media overlays include location identifier overlays (e.g., Venice Beach), names of live events, or business names (e.g., beach cafes). In yet another example, enhancement system 206 uses the geolocation of client device 102 to identify media overlays that include the name of a business at the geolocation of client device 102. Media overlays may include additional tags associated with the business. Media overlays can be stored in database 120 and accessed via database server 120.

[0038] In some examples, augmentation system 206 is configured to provide access to AR components, which can be implemented using a programming language suitable for application development, such as JavaScript or Java, and identified by a corresponding AR component identifier in a message transceiver server system. AR components may include or reference various image processing operations corresponding to image modification, filtering, media overlay, transformation, etc. These image processing operations can provide an interactive experience of a real-world environment, where computer-generated perceptual information such as objects, surfaces, backgrounds, and lighting captured by digital image sensors or camera devices is enhanced. In this case, the AR component includes a set of data, parameters, and other assets required to apply a selected augmented reality experience to an image or video feed.

[0039] In some implementations, the AR component includes a module configured to modify or transform image data presented within a graphical user interface (GUI) of a client device in a certain way. For example, complex additions or transformations can be performed on content images using AR component data, such as adding rabbit ears to a person's head in a video clip, adding floating hearts with a background color to a video clip, changing the proportions of features within a person in a video clip, or many other such transformations. This includes both real-time modifications and modifications to stored content, such as video clips from a gallery that can be modified using AR component modifications while the image is captured using a camera device associated with the client device and then displayed on the client device's screen.

[0040] Various augmented reality capabilities that can be provided by AR components include detecting objects (e.g., faces, hands, bodies, cats, dogs, surfaces, objects, etc.), tracking these objects as they leave, enter, and move around the field of view in a video frame, and modifying or transforming them while tracking them. In various implementations, different methods can be used to achieve such transformations. For example, some implementations may involve generating a 3D mesh model of one or more objects and using transformations and animated textures of the model within the video to achieve the transformation. In other implementations, tracking points on the object can be used to place an image or texture at the tracked location; this image or texture can be two-dimensional or three-dimensional. In still other implementations, neural network analysis of video frames can be used to place images, models, or textures within content (e.g., frames of images or videos). Therefore, AR component data refers both to the images, models, and textures used to create transformations within content and to the additional modeling and analysis information required to achieve such transformations using object detection, tracking, and placement.

[0041] Data Architecture

[0042] Figure 3 This is a schematic diagram illustrating a data structure 300 that can be stored in a database 120 of a message transceiver server system 108, according to certain examples. Although the contents of the database 120 are shown to include several tables, it should be understood that the data can be stored in other types of data structures (e.g., as an object-oriented database).

[0043] Database 120 includes message data stored in message table 302. For any given message, this message data includes at least message sender data, message receiver (or recipient) data, and a payload. The message payload may include content generated using the viewfinder ring flash. See below for reference. Figure 4 Further details describe information that can be included in the message and is contained within the message data stored in message table 302.

[0044] Entity table 304 stores entity data and (for example, links to entity diagram 306 and profile data 308). Entities for which records are maintained within entity table 304 can include individuals, company entities, organizations, objects, locations, events, etc. Regardless of entity type, any entity whose data is stored in message transceiver server system 108 can be an identifiable entity. Each entity is provided with a unique identifier and an entity type identifier (not shown).

[0045] Entity graph 306 stores information about relationships and associations between entities. For example, such relationships can be social, professional (e.g., working in the same company or organization), interest-based, or activity-based. Referring to the functionality provided by the AR component, entity graph 306 stores information that can be used to determine an additional profile representing the user controlling the associated client device, in cases where the AR component is configured to allow modification of the target media content object using a user's portrait image other than the portrait image of the user controlling the associated client device. As mentioned above, the user's portrait image can be stored in a user profile representing the user in the messaging system.

[0046] Profile data 308 stores various types of profile data about a specific entity. Based on privacy settings specified by the specific entity, profile data 308 can be selectively used and presented to other users of messaging system 100. In the case of an individual, profile data 308 includes, for example, a username, phone number, address, settings (e.g., notification and privacy settings), and a user-selected visual representation (or a set of such visual representations). A specific user can then selectively include one or more of these visual representations within the content of messages transmitted via messaging system 100 and on a map interface displayed to other users by messaging client 104. The set of visual representations may include “status visual representations,” which present a graphical representation of a status or activity that a user can choose to communicate at a specific time.

[0047] Database 120 also stores augmented data in augmentation table 310. The augmented data is associated with and applied to videos (whose data is stored in video table 314) and images (whose data is stored in image table 316). In some examples, the augmented data is used by various AR components, including AR components. An example of augmented data is an augmented reality (AR) tool that can be used in AR components to achieve image transformation. Image transformation includes real-time modifications to an image as it is captured using the digital image sensor of client device 102 (e.g., video frames). The modified image, along with the modifications, is displayed on the screen of client device 102.

[0048] Story table 312 stores data about messages and collections of associated image, video, or audio data, compiled into collections (e.g., stories or galleries). The creation of a specific collection can be initiated by a specific user (e.g., each user maintaining records in entity table 304). A user can create a "personal story" in the form of a collection of content that has already been created and sent / broadcast by that user. For this purpose, the user interface of messaging client 104 may include user-selectable icons that allow the sending user to add specific content to his or her personal story. In some examples, story table 312 stores one or more images or videos created using a viewfinder ring flash.

[0049] As mentioned above, video table 314 stores video data, which in one example is associated with a message whose records are maintained within message table 302. In some examples, video table 314 stores one or more videos created using a real-time video editor. Similarly, image table 316 stores image data that may be associated with messages whose message data is stored in entity table 304. Entity table 304 can associate various enhancements from enhancement table 310 with various images and videos stored in image table 316 and video table 314.

[0050] Data communication architecture

[0051] Figure 4 This is a schematic diagram illustrating the structure of message 400 according to some examples. Message 400 is generated by messaging client 104 for transmission to another messaging client 104 or messaging server 114. The content of a particular message 400 is used to populate message table 302 stored in database 120, which is accessible by messaging server 114. Similarly, the content of message 400 is stored in memory as “in transit” or “in flight” data of client device 102 or application server 112. In some examples, the content of message 400 includes images or videos created using AR components. Message 400 is shown as including the following example components:

[0052] • Message Identifier 402: A unique identifier that identifies message 400.

[0053] • Message text payload 404: The text to be generated by the user via the user interface of the client device 102 and included in message 400.

[0054] • Message image payload 406: Image data captured by the camera component of the client device 102 or retrieved from the memory component of the client device 102 and included in the message 400. The image data of the message 400 used for sending or receiving may be stored in the image table 316.

[0055] • Message video payload 408: Video data captured by the camera device component or retrieved from the memory component of the client device 102 and included in message 400. The video data used to send or receive message 400 may be stored in video table 314. The video data may include content generated using a real-time video editor.

[0056] • Message audio payload 410: Audio data captured by the microphone or retrieved from the memory component of the client device 102 and included in message 400.

[0057] • Message enhancement data 412: Represents enhancement data (e.g., filters, stickers, or other annotations or enhancements) to be applied to the message image payload 406, message video payload 408, and message audio payload 410 of message 400. Enhancement data for sending or receiving message 400 can be stored in enhancement table 310.

[0058] • Message duration parameter 414: A parameter value in seconds indicating the amount of time, in which the content of the message (e.g., message image payload 406, message video payload 408, message audio payload 410) will be presented to the user or made accessible to the user via the message sending and receiving client 104.

[0059] • Message geolocation parameter 416: Geolocation data (e.g., latitude and longitude coordinates) associated with the content payload of the message. The payload may include multiple message geolocation parameter 416 values, each of which is associated with a content item included in the content (e.g., a specific image within the message image payload 406, or a specific video within the message video payload 408).

[0060] • Message Story Identifier 418: An identifier value that identifies one or more sets of content (e.g., “Stories” identified in Story Table 312) associated with a specific content item in the message image payload 406 of message 400. For example, the identifier value can be used to associate multiple images within the message image payload 406 with multiple sets of content, respectively.

[0061] • Message Tag 420: Each message 400 can be labeled with multiple tags, each of which indicates the subject of the content included in the message payload. For example, in the case where a specific image depicts an animal (e.g., a lion) is included in the message image payload 406, a tag value indicating the relevant animal can be included within the message tag 420. The tag values ​​can be generated manually based on user input, or automatically using, for example, image recognition.

[0062] • Message sender identifier 422: An identifier (e.g., a message sending system identifier, email address, or device identifier) ​​that indicates the user of the client device 102 on which message 400 is generated and from which message 400 is sent.

[0063] • Message receiver identifier 424: An identifier (e.g., message sending and receiving system identifier, email address, or device identifier) ​​indicating the user of the client device 102 to which message 400 is addressed.

[0064] The content (e.g., values) of various components of message 400 can be pointers to locations of stored content data values ​​in tables. For example, image values ​​in message image payload 406 can be pointers to locations (or addresses of locations) within image table 316. Similarly, values ​​in message video payload 408 can point to data stored in video table 314, values ​​stored in message enhancement 412 can point to data stored in enhancement table 310, values ​​stored in message story identifier 418 can point to data stored in story table 312, and values ​​stored in message sender identifier 422 and message receiver identifier 424 can point to user records stored in entity table 304.

[0065] Time-based access restriction architecture

[0066] Figure 5 This is a schematic diagram illustrating access restriction processing 500, according to which access to content (e.g., a short message 502 and the multimedia payload of associated data) or a collection of content (e.g., a short message group 504) can be time-restricted (e.g., brief). In some examples, the content of short message 502 includes images or videos created using a viewfinder ring flash.

[0067] A brief message 502 is shown as associated with a message duration parameter 506, the value of which determines the amount of time the brief message 502 will be displayed by the message sending and receiving client 104 to the receiving user. In one example, depending on the amount of time specified by the sending user using the message duration parameter 506, the receiving user may view the brief message 502 for up to 10 seconds. In some examples, the brief message 502 may include video created using a real-time video editor.

[0068] The message duration parameter 506 and the message receiver identifier 424 are shown as inputs to a message timer 512, which is responsible for determining the amount of time for which the brief message 502 is shown to a specific receiving user identified by the message receiver identifier 424. Specifically, the brief message 502 is shown to the relevant receiving user only for the period of time determined by the value of the message duration parameter 506. The message timer 512 is shown as providing an output to a more generalized brief timer system 202, which is responsible for the overall timing of displaying content (e.g., the brief message 502) to the receiving user.

[0069] exist Figure 5 The short message 502 is shown as being included within a short message group 504 (e.g., a collection of messages in a personal story or event story). The short message group 504 has an associated group duration parameter 508, the value of which determines the duration for which the short message group 504 is presented and accessible to a user of the messaging system 100. For example, the group duration parameter 508 could be the duration of a concert, where the short message group 504 is a collection of content related to that concert. Alternatively, the user (owner user or curator user) can specify the value of the group duration parameter 508 when setting up and creating the short message group 504.

[0070] Additionally, each short message 502 within a short message group 504 has an associated group participation parameter 510, the value of which determines the duration for which the short message 502 will be accessible within the context of the short message group 504. Therefore, a particular short message group 504 can "expire" and become inaccessible within its context before the short message group 504 itself expires according to the group duration parameter 508. The group duration parameter 508, the group participation parameter 510, and the message receiver identifier 424 each provide input to a group timer 514, which first operationally determines whether a particular short message 502 of the short message group 504 will be displayed to a specific receiving user, and if so, determines for how long. Note that the short message group 504 also knows the identity of the specific receiving user due to the message receiver identifier 424.

[0071] Therefore, the group timer 514 operationally controls the total usage period of the associated ephemeral message group 504 and the individual ephemeral messages 502 included within the ephemeral message group 504. In one example, each ephemeral message 502 within the ephemeral message group 504 remains viewable and accessible for the period specified by the group duration parameter 508. In another example, within the context of the ephemeral message group 504, a particular ephemeral message 502 may expire based on the group participation parameter 510. Note that even within the context of the ephemeral message group 504, the message duration parameter 506 can still determine the duration for which a particular ephemeral message 502 is displayed to the receiving user. Therefore, the message duration parameter 506 determines the duration for which a particular ephemeral message 502 is displayed to the receiving user, regardless of whether the receiving user views the ephemeral message 502 within or outside the context of the ephemeral message group 504.

[0072] Furthermore, the short-lived timer system 202 can operationally remove a specific short-lived message 502 from the short-lived message group 504 based on determining that the specific short-lived message 502 has exceeded its associated group participation parameter 510. When the sending user has established a group participation parameter 510 for 24 hours from the date of publication, the short-lived timer system 202 will remove the relevant short-lived message 502 from the short-lived message group 504 after the specified 24 hours. The short-lived timer system 202 also operates to remove the short-lived message group 504 when the group participation parameter 510 for each short-lived message 502 within the short-lived message group 504 has expired, or when the short-lived message group 504 itself has expired according to the group duration parameter 508.

[0073] In certain use cases, the creator of a specific ephemeral message group 504 can specify an indefinite group duration parameter 508. In this case, the expiration of the group participation parameter 510 of the last remaining ephemeral message 502 within the ephemeral message group 504 will determine when the ephemeral message group 504 itself expires. In this case, adding a new ephemeral message 502 with a new group participation parameter 510 to the ephemeral message group 504 effectively extends the lifetime of the ephemeral message group 504 to a value equal to the group participation parameter 510.

[0074] In response to the short-lived timer system 202 determining that a short-lived message group 504 has expired (e.g., is no longer accessible), the short-lived timer system 202 communicates with the messaging system 100 (and, in particular, the messaging client 104) to cause the markers (e.g., icons) associated with the relevant short-lived message group 504 to no longer be displayed in the user interface of the messaging client 104. Similarly, when the short-lived timer system 202 determines that the message duration parameter 506 of a particular short-lived message 502 has expired, the short-lived timer system 202 causes the messaging client 104 to no longer display the markers (e.g., icons or text labels) associated with the short-lived message 502.

[0075] Processing flow and user interface

[0076] Figure 6 This is a flowchart illustrating a method 600 for real-time video editing according to some examples. While some operations of processing 600 can be described as being performed by certain devices, in different examples, different devices or combinations of devices can perform these operations. For example, the operations described below can be performed by client device 102 or by a combination of client device 102 and server-side computing devices (e.g., message transceiver server system 108).

[0077] Method 600 begins at operation 610, wherein video recording processing is initiated by the camera device of the client device. This video recording processing generates a sequence of frames during its execution, each frame in the sequence being associated with a timestamp. The resulting video is not finalized until the video recording processing concludes, at which point the resulting video is finalized (e.g., encoded in a desired format and saved for future access). In some examples, video recording processing begins in response to the activation of a user-selectable shutter element in the camera device view user interface (UI) displayed on the client device. Figure 7 An example of a camera device view UI is shown in the image. Figure 7 This is a graphical representation 700 of the camera device view UI, displaying the output of the camera device's digital image sensor. The output of the camera device's digital sensor is shown in area 710, which in this example shows a sky with clouds. Figure 7 The camera device view UI shown also includes a user-selectable shutter element 720. In some examples, the camera device view UI is derived from the above reference. Figures 1 to 5 The described message sending and receiving system provides data exchange over a network.

[0078] At operation 620, while video recording processing is in progress, the real-time video editor detects gestures pointing towards the camera device's view UI. These gestures could be, for example, a left-to-right swipe gesture, such as... Figure 8 As shown.Figure 8 This is a graphical representation 800 of a left-to-right swipe gesture pointing to the camera device view UI, which displays the output of the camera device's digital image sensor in area 820. Figure 8 In the figure, the stylized image of the right-pointing curved arrow and the hand with directional fingers, identified by reference numeral 810, is not part of the camera device view UI, but rather a visualization of a left-to-right swipe gesture.

[0079] In response to a detected gesture, the real-time video editor causes the captured frames to be displayed in reverse order (descending order based on the corresponding timestamps of the frames) in a manner that mimics video rewind. The captured frames are continuously displayed in reverse order until the gesture stops; at the point where the gesture stops, the currently displayed frame is considered to be the new starting point for the video produced by the video recording processing. For the purposes of this description, the frame displayed in the camera device view UI when the swipe gesture stops is referred to as the new first frame.

[0080] At operation 630, in response to the detection of a gesture, the real-time video editor causes a new first frame to be displayed, where the new first frame is selected based on the duration of the gesture. For example, if the gesture is short, the captured frame sequence is only rewound a few frames. If the gesture is longer, the frame sequence is rewound further. In some examples, in addition to or instead of duration, the real-time video editor may use other characteristics of the gesture, such as speed, acceleration, etc. The timestamp of the new first frame indicates a point in time prior to when the gesture was detected.

[0081] Figure 9 It is a graphical representation 900 that mimics the rewind action in some example camera device view user interface. Figure 9 In the image, the stylized image of a right-pointing curved arrow and a hand with directional fingers, identified by reference numeral 910, is not part of the camera device's view UI, but rather a visualization of a left-to-right swipe gesture. Figure 8 compared to, Figure 9 The stylized image of the hand in the image features a finger pointing to the right, which is a visualization of the end of the gesture's duration. Furthermore, Figure 7 It is a visualization of one frame from the earlier frames of the video recording. Figure 7 In the middle of the time, the output of the digital sensor of the camera device in area 710 showed an open sky with clouds, while Figure 8 In the image, the corresponding area 820 shows two aircraft, a visualization of events that a user might expect and hope to capture in a video. Figure 9In the image, frame 920 shows an airplane, while frames 930 and 940 show only clouds. This is a visualization of the event of interest that occurred simultaneously with the capture of frame 940—the arrival of the first airplane in the sky. The real-time video editing method described in this paper allows users to “rewind” the video in real time while the recording session is still in progress and to set a new starting point for the video, for example, starting with frame 940.

[0082] In some examples, after a new first frame from the frame sequence is displayed in the camera device view UI and while video recording processing is still in progress, the live video editor receives a selection or confirmation from the user to identify the new first frame as the new starting point for video recording processing. This selection can be presented as a user-selectable element overlaid on the new first frame displayed in the camera device view UI. To make the new first frame the new starting point for the video produced by the video recording process, the live video editor can be configured to discard frames with timestamps indicating times prior to the new first frame (in other words, to start with the new first frame).

[0083] At operation 640, in response to ending or stopping video recording processing, the real-time video editor generates a video file using frames captured during video recording processing that begin with a new first frame, excluding frames with a timestamp indicating a time earlier than the timestamp of the new first frame. Video recording processing can be ended by further activating the shutter user-selectable element in the camera device view UI.

[0084] Machine architecture

[0085] Figure 10This is a schematic representation of machine 1000, within which instructions 1008 (e.g., software, programs, applications, applets, or other executable code) can be executed to cause machine 1000 to perform any or more of the methods discussed herein. For example, instructions 1008 can cause machine 1000 to perform any or more of the methods described herein. Instructions 1008 transform the general, non-programmed machine 1000 into a specific machine 1000 programmed to perform the described and illustrated functions in the described manner. Machine 1000 can operate as a standalone device or can be coupled (e.g., networked) to other machines. In a networked deployment, machine 1000 can operate as a server machine or a client machine in a server-client network environment, or as a peer machine in a peer-to-peer (or distributed) network environment. Machine 1000 may include, but is not limited to: server computers, client computers, personal computers (PCs), tablet computers, laptop computers, netbooks, set-top boxes (STBs), personal digital assistants (PDAs), entertainment media systems, cellular phones, smartphones, mobile devices, wearable devices (e.g., smartwatches), smart home devices (e.g., smart appliances), other smart devices, web devices, network routers, network switches, network bridges, or any machine capable of sequentially or otherwise executing instructions 1008 specifying actions to be taken by machine 1000. Furthermore, although only a single machine 1000 is shown, the term "machine" should also be considered to include a collection of machines that individually or jointly execute instructions 1008 to perform any or more of the methods discussed herein. For example, machine 1000 may include client device 102 or any of a plurality of server devices forming part of message transceiver server system 108. In some examples, machine 1000 may also include both client and server systems, wherein certain operations of a particular method or algorithm are performed on the server side and certain operations of a particular method or algorithm are performed on the client side.

[0086] Machine 1000 may include processor 1002, memory 1004, and input / output I / O components 1038, which may be configured to communicate with each other via bus 1040. In the example, processor 1002 (e.g., a central processing unit (CPU), a reduced instruction set computing (RISC) processor, a complex instruction set computing (CISC) processor, a graphics processing unit (GPU), a digital signal processor (DSP), an application-specific integrated circuit (ASIC), a radio frequency integrated circuit (RFIC), another processor, or any suitable combination thereof) may include, for example, processor 1006 and processor 1010 that execute instruction 1008. The term "processor" is intended to include multi-core processors, which may include two or more independent processors (sometimes referred to as "cores") capable of executing instructions simultaneously. Although Figure 10 Multiple processors 1002 are shown, but machine 1000 may include a single processor with a single core, a single processor with multiple cores (e.g., a multi-core processor), multiple processors with a single core, multiple processors with multiple cores, or any combination thereof.

[0087] Memory 1004 includes main memory 1012, static memory 1014, and storage cells 1016, all of which are accessible by processor 1002 via bus 1040. Main memory 1004, static memory 1014, and storage cells 1016 store instructions 1008 embodying any one or more of the methods or functions described herein. Instructions 1008 may also reside wholly or partially in main memory 1012, in static memory 1014, in machine-readable medium 1018 within storage cells 1016, within at least one processor in processor 1002 (e.g., within the processor's cache memory), or in any suitable combination thereof during execution by machine 1000.

[0088] I / O component 1038 may include various components for receiving input, providing output, generating output, sending information, exchanging information, capturing measurement results, etc. The specific I / O component 1038 included in a particular machine will depend on the type of machine. For example, a portable machine such as a mobile phone may include a touch input device or other such input mechanism, while a headless server machine may not include such a touch input device. It should be understood that I / O component 1038 may include... Figure 10Many other components are not shown. In various examples, I / O component 1038 may include user output component 1024 and user input component 1026. User output component 1024 may include visual components (e.g., displays such as plasma display panels (PDPs), light-emitting diode (LED) displays, liquid crystal displays (LCDs), projectors, or cathode ray tube (CRT) displays), auditory components (e.g., speakers), tactile components (e.g., vibration motors, resistance mechanisms), other signal generators, etc. User input component 1026 may include alphanumeric input components (e.g., keyboards, touchscreens configured to receive alphanumeric input, photoelectric keyboards, or other alphanumeric input components), pointing-based input components (e.g., mice, touchpads, trackballs, joysticks, motion sensors, or other pointing instruments), tactile input components (e.g., physical buttons, touchscreens providing positioning and force for touch or touch gestures, or other tactile input components), audio input components (e.g., microphones), etc.

[0089] In another example, I / O component 1038 may include biometric component 1028, motion component 1030, environmental component 1032 or position component 1034, and a variety of other components. For example, biometric component 1028 includes components for detecting expressions (e.g., hand expressions, facial expressions, voice expressions, body posture, or eye tracking), measuring biosignals (e.g., blood pressure, heart rate, body temperature, sweating, or brain waves), and recognizing people (e.g., voice recognition, retinal recognition, facial recognition, fingerprint recognition, or EEG-based recognition). Motion component 1030 includes accelerometer components (e.g., accelerometer), gravity sensor components, and rotation sensor components (e.g., gyroscope).

[0090] The environmental component 1032 includes, for example, one or more camera devices (with still imaging / video recording and video capture capabilities), lighting sensor components (e.g., photometers), temperature sensor components (e.g., one or more thermometers for detecting ambient temperature), humidity sensor components, pressure sensor components (e.g., barometers), acoustic sensor components (e.g., one or more microphones for detecting background noise), proximity sensor components (e.g., infrared sensors for detecting nearby objects), gas sensors (e.g., gas detection sensors for detecting the concentration of hazardous gases or measuring pollutants in the atmosphere for safety purposes), or other components that can provide indications, measurements, or signals corresponding to the surrounding physical environment.

[0091] Regarding the camera device, client device 102 may have a camera device system including, for example, a front-facing camera on the front surface of client device 102 and a rear-facing camera on the rear surface of client device 102. The front-facing camera may be used, for example, to capture still images and videos (e.g., “selfies”) of the user of client device 102, which can then be enhanced using the enhancement data (e.g., filters) described above. In an example where the front-facing camera is used in conjunction with a viewfinder ring flash as described herein, the user has the ability to use augmented reality face filters in low-light conditions or even in complete darkness because the viewfinder ring flash illuminates the user’s face without blurring the output of the digital image sensor. The rear-facing camera may be used, for example, to capture still images and videos in a more conventional camera device mode, where these images are similarly enhanced using the enhancement data. In addition to the front-facing and rear-facing cameras, client device 102 may also include a 360° camera for capturing 360° photos and videos.

[0092] Furthermore, the camera system of client device 102 may include dual rear cameras (e.g., a main camera and a depth-sensing camera), or even include a configuration of three, four, or five rear cameras on the front and rear sides of client device 102. For example, these multi-camera systems may include wide-angle cameras, ultra-wide-angle cameras, telephoto cameras, macro cameras, and depth sensors.

[0093] The position component 1034 includes a positioning sensor component (e.g., a GPS receiver component), an altitude sensor component (e.g., an altimeter or barometer that detects air pressure and from which altitude can be obtained), an orientation sensor component (e.g., a magnetometer), etc.

[0094] Various technologies can be used to achieve communication. I / O component 1038 also includes communication component 1036, which is operable to couple machine 1000 to network 1020 or device 1022 via a corresponding coupling or connection. For example, communication component 1036 may include a network interface component or another suitable device for interfacing with network 1020. In further examples, communication component 1036 may include wired communication components, wireless communication components, cellular communication components, near field communication (NFC) components, etc. Components (e.g.) (low power consumption) Components and other communication components that provide communication via other modes. Device 1022 can be any peripheral device from another machine or various peripheral devices (e.g., a peripheral device coupled via USB).

[0095] Furthermore, communication component 636 may detect identifiers or include components operable to detect identifiers. For example, communication component 636 may include a radio frequency identification (RFID) tag reader component, an NFC smart tag detection component, an optical reader component (e.g., an optical sensor for detecting one-dimensional barcodes such as Universal Product Code (UPC) barcodes, multi-dimensional barcodes such as Quick Response (QR) codes, Aztec codes, data matrices, data symbols, MaxiCode, PDF410, Ultra Code, UCC RSS-2D barcodes, and other optical codes) or an acoustic detection component (e.g., a microphone for identifying tagged audio signals). Additionally, various information can be obtained via communication component 1036, such as location via Internet Protocol (IP) geolocation, etc. Location methods include signal triangulation and NFC beacon signals that can indicate a specific location.

[0096] Various memories (e.g., main memory 1012, static memory 1014, and the memory of processor 1002) and storage units 1016 may store one or more sets of instructions and data structures (e.g., software) implemented or used by any one or more of the methods or functions described herein. These instructions (e.g., instruction 1008) cause various operations to implement the disclosed examples when executed by processor 1002.

[0097] Instructions 1008 can be sent or received over network 1020 via a transmission medium using a network interface device (e.g., a network interface component included in communication component 1036) and using any of several known transmission protocols (e.g., Hypertext Transfer Protocol (HTTP)). Similarly, instructions 1008 can be sent or received via a transmission medium coupled to device 1022 (e.g., peer-to-peer coupling).

[0098] Glossary

[0099] "Carrier signal" refers to any intangible medium capable of storing, encoding, or carrying instructions to be executed by a machine, and includes digital or analog communication signals or other intangible media to facilitate the communication of such instructions. Instructions can be sent or received over a network using a transmission medium via a network interface device.

[0100] "Client device" refers to any machine that interfaces with a communication network to obtain resources from one or more server systems or other client devices. Client devices can be, but are not limited to, mobile phones, desktop computers, laptop computers, portable digital assistants (PDAs), smartphones, tablet computers, ultrabooks, netbooks, laptops, multiprocessor systems, microprocessor-based or programmable consumer electronics, game consoles, set-top boxes, or any other communication device that a user can use to access the network.

[0101] "Communication network" refers to one or more parts of a network, which can be an ad hoc network, intranet, extranet, virtual private network (VPN), local area network (LAN), wireless LAN (WLAN), wide area network (WAN), wireless WAN (WWAN), metropolitan area network (MAN), the Internet, a part of the Internet, a part of the Public Switched Telephone Network (PSTN), a POTS (Plain Old-Style Telephone Service) network, a cellular telephone network, a wireless network, etc. A network, other types of networks, or a combination of two or more such networks. For example, a network or part of a network may include a wireless network or a cellular network, and the coupling may be a Code Division Multiple Access (CDMA) connection, a Global System for Mobile Communications (GSM) connection, or other types of cellular or wireless coupling. In this example, the coupling can implement any data transmission technology of various types, such as Single Carrier Radio Transmission (1xRTT), Evolved Data Optimization (EVDO), General Packet Radio Service (GPRS), Enhanced Data Rate Evolution of GSM (EDGE), the 3rd Generation Partnership Project (3GPP) including 3G, fourth-generation wireless (4G) networks, Universal Mobile Telecommunications System (UMTS), High-Speed ​​Packet Access (HSPA), Global Microwave Access Interoperability (WiMAX), Long Term Evolution (LTE) standards, other standards defined by various standards-setting organizations, other long-distance protocols, or other data transmission technologies.

[0102] A “component” refers to a device, physical entity, or logic having boundaries defined by functional or subroutine calls, branch points, APIs, or other technologies that provide partitioning or modularity for specific processing or control functions. A component can be combined with other components via its interface to perform machine processing. A component can be an encapsulated functional hardware unit designed for use with other components and can be part of a program that typically performs a specific function in a related function. A component can constitute a software component (e.g., code implemented on a machine-readable medium) or a hardware component. A “hardware component” is a tangible unit capable of performing certain operations and can be configured or arranged in some physical manner. In various examples, one or more computer systems (e.g., standalone computer systems, client computer systems, or server computer systems) or one or more hardware components (e.g., processors or processor groups) of a computer system can be configured by software (e.g., an application or application portion) to operate to perform certain operations as described herein. Hardware components can also be implemented mechanically, electronically, or in any suitable combination thereof. For example, a hardware component may include dedicated circuitry or logic permanently configured to perform certain operations. Hardware components can be dedicated processors, such as field-programmable gate arrays (FPGAs) or application-specific integrated circuits (ASICs). Hardware components can also include programmable logic or circuitry temporarily configured by software to perform certain operations. For example, a hardware component may include software executed by a general-purpose processor or other programmable processor. Once configured by such software, the hardware component becomes a specific machine (or a specific part of a machine) uniquely tailored to perform the configured function, and no longer a general-purpose processor. It should be understood that the decision to implement a hardware component mechanically, in a dedicated and permanently configured circuit, or in a temporarily configured (e.g., software-configured) circuit can be driven by cost and time considerations. Therefore, the phrase "hardware component" (or "hardware-implemented component") should be understood to include tangible entities, i.e., entities physically constructed, permanently configured (e.g., hardwired), or temporarily configured (e.g., programmed) to operate in a certain way or perform certain operations described herein. Consider the example of a hardware component being temporarily configured (e.g., programmed), without needing to configure or instantiate each hardware component at any given time. For example, in cases where the hardware components include a general-purpose processor configured as a dedicated processor via software, this general-purpose processor can be configured as different dedicated processors (e.g., including different hardware components) at different times. Therefore, the software configures one or more specific processors to constitute a specific hardware component at one moment and different hardware components at different times. Hardware components can provide information to and receive information from other hardware components. Therefore, the described hardware components can be considered communicatively coupled.In the presence of multiple hardware components, communication can be achieved through signal transmission (e.g., via appropriate circuitry and buses) between or among two or more hardware components. In examples where multiple hardware components are configured or instantiated at different times, such communication between hardware components can be achieved, for example, by storing information in a memory structure accessed by the multiple hardware components and retrieving information from said memory structure. For example, a hardware component can perform an operation and store the output of that operation in a memory device communicatively coupled to it. Another hardware component can then access the memory device at a subsequent time to retrieve and process the stored output. Hardware components can also initiate communication with input or output devices and can operate on resources (e.g., information collection). Various operations of the example methods described herein can be performed at least in part by one or more processors that are temporarily configured (e.g., by software) or permanently configured to perform the relevant operations. Whether temporarily or permanently configured, such processors can constitute processor-implemented components that operate to perform one or more operations or functions described herein. As used herein, "processor-implemented component" refers to a hardware component implemented using one or more processors. Similarly, the methods described herein can be implemented at least in part by processors, where a particular processor or one or more processors are examples of hardware. For example, at least some operations of the methods can be performed by one or more processors or processor-implemented components. Furthermore, one or more processors can also operate to support the execution of related operations in a “cloud computing” environment or as “Software as a Service” (SaaS). For example, at least some operations can be performed by a group of computers (as an example of machines including processors), where these operations are accessible via a network (e.g., the Internet) and via one or more appropriate interfaces (e.g., APIs). The execution of some operations can be distributed among processors, not residing within a single machine, but deployed across multiple machines. In some examples, the processor or processor-implemented component may reside in a single geographic location (e.g., within a home environment, office environment, or server cluster). In other examples, the processor or processor-implemented component may be distributed across multiple geographic locations.

[0103] "Computer-readable storage medium" refers to both machine-readable storage media and transmission media. Therefore, the term includes both storage devices / media and carrier / modulated data signals. The terms "machine-readable medium," "computer-readable medium," and "device-readable medium" refer to the same thing and can be used interchangeably in this disclosure.

[0104] "Machine storage medium" refers to one or more storage devices and media (e.g., centralized or distributed databases, and associated caches and servers) that store executable instructions, routines, and data. Therefore, this term should be considered to include, but is not limited to, solid-state memory and optical and magnetic media, including memory internal or external to the processor. Specific examples of machine storage media, computer storage media, and device storage media include: non-volatile memory, including, for example, semiconductor memory devices such as erasable programmable read-only memory (EPROM), electrically erasable programmable read-only memory (EEPROM), FPGAs, and flash memory devices; disks, such as internal hard disks and removable disks; magneto-optical disks; and CD-ROMs and DVD-ROMs. The terms "machine storage medium," "device storage medium," and "computer storage medium" refer to the same thing and are used interchangeably in this disclosure. The terms "machine storage medium," "computer storage medium," and "device storage medium" expressly exclude carrier waves, modulated data signals, and other such media, at least some of which are covered by the term "signal medium."

[0105] "Non-transitory computer-readable storage medium" refers to a tangible medium capable of storing, encoding, or carrying instructions that can be executed by a machine.

[0106] "Signal medium" means any intangible medium capable of storing, encoding, or carrying instructions executable by a machine, and includes digital or analog communication signals or other intangible media that facilitate the transmission of software or data. The term "signal medium" should be considered to include any form of modulated data signal, carrier wave, etc. The term "modulated data signal" means a signal whose characteristics are set or altered in a manner that encodes information in the signal. The terms "transmission medium" and "signal medium" mean the same thing and are used interchangeably in this disclosure.

Claims

1. A method for real-time video editing, comprising: The video recording process begins with the camera device of the client device, which generates a sequence of frames, each of which is associated with a timestamp. While the video recording process is in progress, a gesture pointing to the camera device view user interface displayed on the client device is detected; In response to the detection of the gesture, a new first frame from the frame sequence is displayed in the camera device view user interface based on the duration of the gesture, the timestamp of the new first frame indicating the time prior to the time the gesture was detected; In response to the termination of the video recording process, a video file is generated using frames captured during the video recording process, excluding frames with timestamps indicating times earlier than the timestamp of the new first frame.

2. The method according to claim 1, comprising: In response to the detection of the gesture, frames from the frame sequence are displayed sequentially in the camera device view user interface, starting in descending order based on the corresponding timestamps of the frames from the frame sequence.

3. The method according to claim 1, comprising: After the new first frame from the frame sequence is displayed in the camera device view user interface and while the video recording process is in progress, the user is given the option to identify the new first frame as a new starting point for the video recording process.

4. The method according to claim 3, wherein, Obtaining the selection includes presenting user-selectable elements overlaid on the new first frame displayed in the camera device view user interface.

5. The method according to claim 1, comprising: Frames with corresponding timestamps indicating the time preceding the timestamp of the new first frame are discarded from the video frame sequence.

6. The method according to claim 1, wherein, The gesture is a swipe gesture from left to right.

7. The method according to claim 1, wherein, The new first frame is determined from the frame sequence based on the duration of the gesture.

8. The method according to claim 1, wherein, The video recording process begins in response to the activation of a shutter user-selectable element in the camera device view user interface, which includes the output of the camera device's digital sensor.

9. The method according to claim 8, wherein, The video recording process ends in response to further activation of the shutter user-selectable element in the camera device view user interface.

10. The method according to claim 1, wherein, The camera device's view user interface is provided by a messaging system for exchanging data over a network.

11. A system for real-time video editing, comprising: One or more processors; as well as A non-transitory computer-readable storage medium, the non-transitory computer-readable storage medium including instructions, which, when executed by the one or more processors, cause the one or more processors to perform an operation, the operation including: The video recording process begins with the camera device of the client device, which generates a sequence of frames, each of which is associated with a timestamp. While the video recording process is in progress, a gesture pointing to the camera device view user interface displayed on the client device is detected; In response to the detection of the gesture, a new first frame from the frame sequence is displayed in the camera device view user interface based on the duration of the gesture, the timestamp of the new first frame indicating the time prior to the time the gesture was detected; In response to the termination of the video recording process, a video file is generated using frames captured during the video recording process, excluding frames with timestamps indicating times earlier than the timestamp of the new first frame.

12. The system according to claim 11, wherein, The operation caused by the instructions executed by the one or more processors further includes: in response to detecting the gesture, sequentially displaying frames from the frame sequence in the camera device view user interface, starting in descending order based on the corresponding timestamps of the frames from the frame sequence.

13. The system according to claim 11, wherein, The operations caused by the instructions executed by the one or more processors also include: after the new first frame from the frame sequence is displayed in the camera device view user interface and while the video recording process is in progress, obtaining from the user the option to identify the new first frame as a new starting point for the video recording process.

14. The system according to claim 13, wherein, Obtaining the selection includes presenting user-selectable elements overlaid on the new first frame displayed in the camera device view user interface.

15. The system according to claim 11, wherein, The operation caused by the instructions executed by the one or more processors also includes: discarding frames from the video frame sequence that have a corresponding timestamp indicating a time prior to the timestamp of the new first frame.

16. The system according to claim 11, wherein, The gesture is a swipe gesture from left to right.

17. The system according to claim 11, wherein, The new first frame is determined from the frame sequence based on the duration of the gesture.

18. The system according to claim 11, wherein, The video recording process begins in response to the activation of a shutter user-selectable element in the camera device view user interface, which includes the output of the camera device's digital sensor.

19. The system according to claim 18, wherein, The video recording process ends in response to further activation of the shutter user-selectable element in the camera device view user interface.

20. A machine-readable non-transitory storage medium having instruction data, the instruction data being executable by a machine to cause the machine to perform an operation, the operation comprising: The video recording process begins with the camera device of the client device, which generates a sequence of frames, each of which is associated with a timestamp. While the video recording process is in progress, a gesture pointing to the camera device view user interface displayed on the client device is detected; In response to the detection of the gesture, a new first frame from the frame sequence is displayed in the camera device view user interface based on the duration of the gesture, the timestamp of the new first frame indicating the time prior to the time the gesture was detected; In response to the termination of the video recording process, a video file is generated using frames captured during the video recording process, excluding frames with timestamps indicating times earlier than the timestamp of the new first frame.

Citation Information

Patent Citations

  • Techniques and apparatus for editing video

    CN107079201A

  • Video Editing Graphical User Interface

    US20150301708A1