WO2015027912A1 - Method and system for controlling process for recording media content - Google Patents

Method and system for controlling process for recording media content Download PDF

Info

Publication number
WO2015027912A1
WO2015027912A1 PCT/CN2014/085273 CN2014085273W WO2015027912A1 WO 2015027912 A1 WO2015027912 A1 WO 2015027912A1 CN 2014085273 W CN2014085273 W CN 2014085273W WO 2015027912 A1 WO2015027912 A1 WO 2015027912A1
Authority
WO
WIPO (PCT)
Prior art keywords
recording
media content
program
recording program
user input
Prior art date
Application number
PCT/CN2014/085273
Other languages
French (fr)
Inventor
Rumin DING
Original Assignee
Tencent Technology (Shenzhen) Company Limited
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Tencent Technology (Shenzhen) Company Limited filed Critical Tencent Technology (Shenzhen) Company Limited
Publication of WO2015027912A1 publication Critical patent/WO2015027912A1/en

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N5/00Details of television systems
    • H04N5/76Television signal recording
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3438Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment monitoring of user actions

Definitions

  • the present disclosure relates to the field of computer data processing technologies, and in particular, to a method and system for recording media content.
  • the embodiments of the present disclosure provide methods and systems for triggering and otherwise controlling a recording program executed as a background process so as to record media content for foreground program operations.
  • a method of recording presented media content is performed at a device (e.g., client device 104, Figures 1 and 3) with one or more processors and memory.
  • the method includes initiating execution of a recording program. While maintaining continued execution of the recording program in a background process of the device, the method includes controlling media content presented at the device in accordance with a plurality of foreground program operations executed by the device and detecting, via the recording program executing in the background process, a user input directed to the recording program.
  • the method includes performing, via the recording program executing in the background process, one of: (1) starting to record media content presented by the device in accordance with current foreground program operations executed by the device, (2) terminating an ongoing recording operation of the recording program and generating a media file for the recorded media content, and (3) modifying the ongoing recording operation of the recording program, or the media file for the recorded media content.
  • a computing device (e.g., client device 104, Figures 1 and 3) includes one or more processors and memory storing one or more programs for execution by the one or more processors, the one or more programs include instructions for performing, or controlling performance of, the operations of any of the methods described herein.
  • a non- transitory computer readable storage medium storing one or more programs, the one or more programs comprising instructions, which, when executed by a computing device (e.g., client device 104, Figures 1 and 3) with one or more processors, cause the computer system to perform, or control performance of, the operations of any of the methods described herein.
  • a computing device (e.g., client device 104, Figures 1 and 3) includes means for performing, or controlling performance of, the operations of any of the methods described herein.
  • Figure 1 is a block diagram of a server-client environment in accordance with some embodiments.
  • FIG. 2 is a block diagram of a server system in accordance with some embodiments.
  • Figure 3 is a block diagram of a client device in accordance with some embodiments.
  • Figures 4A-4E illustrate exemplary user interfaces for recording presented media content in accordance with some embodiments.
  • Figure 5 illustrates a flowchart diagram of a method of screen recording in accordance with some embodiments.
  • Figure 6 illustrates a flowchart diagram of a method of screen recording in accordance with some embodiments.
  • Figure 7 illustrates a flowchart diagram of a method of screen recording in accordance with some embodiments.
  • Figures 8A-8B illustrate a flowchart diagram of a method of recording presented media content in accordance with some embodiments.
  • Figure 9 illustrate a block diagram of a screen recording module in accordance with some embodiments.
  • data processing for a recording application (sometimes also herein called a "recording program") is implemented in a server-client environment 100 in
  • server-client In accordance with some embodiments. In accordance with some embodiments., server-client
  • client-side processing 102-1, 102-2 (hereinafter “client-side modules 102") executed on a client device 104-1, 104-2, and server-side processing 106 (hereinafter “server-side module 106") executed on a server system 108.
  • client-side module 102 communicates with server- side module 106 through one or more networks 110.
  • client-side module 102 provides client-side functionalities for the recording application (e.g., input detection, recording media content, generating video data corresponding to the media content, etc.) and communications with server-side module 106.
  • the client-side module 102 is configured to execute as a background process
  • server-side module 106 provides server-side functionalities for the recording application (e.g., obtaining media content, generating video data corresponding to the media content, storing the media content and/or the corresponding video data, providing users with access to the media content and/or the
  • client modules 102 each residing on a respective client device 104.
  • server-side module 106 includes one or more processors 112, video database 114, profiles database 116, an I/O interface to one or more clients 118, and an I/O interface to one or more external services 120. I/O interface to one or more clients 118 facilitates the client-facing input and output processing for server-side module 106.
  • processor(s) 112 obtain media content from a client device 104 in server-client environment 100 captured by a user of client device 104 and generate video data corresponding to the media content.
  • Media content database 114 stores media content recorded by users in server-client environment 100 and/or generated video data corresponding to the media content
  • profiles database 116 stores a user profile for each user in server-client environment 100.
  • I/O interface to one or more external services 120 facilitates communications with one or more external services 122 (e.g., cloud-based service providers such as video and/or image hosting and storage websites).
  • external service(s) 122 host and store captured media content and/or generated video data corresponding to the captured media content.
  • client device 104 examples include, but are not limited to, a handheld computer, a wearable computing device, a personal digital assistant (PDA), a tablet computer, a laptop computer, a desktop computer, a cellular telephone, a smart phone, an enhanced general packet radio service (EGPRS) mobile phone, a media player, a navigation device, a game console, a television, a remote control, or a combination of any two or more of these data processing devices or other data processing devices.
  • PDA personal digital assistant
  • EGPS enhanced general packet radio service
  • Examples of one or more networks 110 include local area networks (LAN) and wide area networks (WAN) such as the Internet.
  • One or more networks 110 are, optionally, implemented using any known network protocol, including various wired or wireless protocols, such as Ethernet, Universal Serial Bus (USB), FIRE WIRE, Long Term Evolution (LTE), Global System for Mobile Communications (GSM), Enhanced Data GSM Environment (EDGE), code division multiple access (CDMA), time division multiple access (TDMA), Bluetooth, Wi-Fi, voice over Internet Protocol (VoIP), Wi-MAX, or any other suitable communication protocol.
  • USB Universal Serial Bus
  • FIRE WIRE Long Term Evolution
  • LTE Long Term Evolution
  • GSM Global System for Mobile Communications
  • EDGE Enhanced Data GSM Environment
  • CDMA code division multiple access
  • TDMA time division multiple access
  • Bluetooth Wi-Fi
  • Wi-Fi voice over Internet Protocol
  • Wi-MAX or any other suitable communication protocol.
  • Server system 108 is implemented on one or more standalone data processing apparatuses or a distributed network of computers.
  • server system 108 also employs various virtual devices and/or services of third party service providers (e.g., third-party cloud service providers) to provide the underlying computing resources and/or infrastructure resources of server system 108.
  • third party service providers e.g., third-party cloud service providers
  • Server-client environment 100 shown in Figure 1 includes both a client-side portion
  • client-side module 102 is a thin-client that provides only user- facing input and output processing functions, and delegates all other data processing functionalities to a backend server (e.g., server system 108).
  • the recording application is performed entirely by client-side module 102 whereby client-side module 102 or component(s) thereof records media content, generates video data from the captured media content, stores the captured media content and/or the generated video data, and provides the user of client device 104 with access to the stored media content and/or the corresponding video data.
  • server system 108 obtains the recorded media content, generates video data from the captured media content, stores the captured media content and/or the generated video data, and provides the user of client device 104 with access to the stored media content and/or the corresponding video data.
  • server system 108 obtained the media content and the generated video data, stores the media content and the generated video data, and provides the user of client device 104 with access to the stored media content and/or the corresponding video data
  • FIG. 2 is a block diagram illustrating server system 108 in accordance with some embodiments.
  • Server system 108 typically, includes one or more processing units (CPUs) 112, one or more network interfaces 204 (e.g., including I/O interface to one or more clients 118 and I/O interface to one or more external services 120), memory 206, and one or more communication buses 208 for interconnecting these components (sometimes called a chipset).
  • Memory 206 includes highspeed random access memory, such as DRAM, SRAM, DDR RAM, or other random access solid state memory devices; and, optionally, includes non-volatile memory, such as one or more magnetic disk storage devices, one or more optical disk storage devices, one or more flash memory devices, or one or more other non-volatile solid state storage devices. Memory 206, optionally, includes one or more storage devices remotely located from one or more processing units 112. Memory 206, or alternatively the non- volatile memory within memory 206, includes a non-transitory computer readable storage medium. In some implementations, memory 206, or the non-transitory computer readable storage medium of memory 206, stores the following programs, modules, and data structures, or a subset or superset thereof:
  • operating system 210 including procedures for handling various basic system services and for performing hardware dependent tasks
  • network communication module 212 for connecting server system 108 to other computing devices (e.g., client devices 104 and external service(s) 122) connected to one or more networks 110 via one or more network interfaces 204 (wired or wireless);
  • server-side module 106 which provides server-side data processing and functionalities for the recording application, including but not limited to:
  • o obtaining module 222 for obtaining, from a client device 104 in server-client environment 100, binary data, a sequence of images, or video data corresponding to the media content, and (optionally) for obtaining external sound;
  • o converting module 224 for converting at least a portion of the binary data to pixel data; o generating module 226 for generating video data for the media content based at least in part on the pixel data or for generating video data for the media content based at least in part on the sequence of images;
  • o synchronizing module 228 for synchronizing the obtained external sound with the generated video data to generate combined video data
  • o cropping module 230 for cropping a portion of the video data generated by generating module 226 or the combined video data generated by synchronizing module 228;
  • o request handling module 232 for handling a request from a respective client device 104 to access media content recorded by the user of respective client device 104 and/or generated video data corresponding to the media content stored in media content database 114;
  • o authenticating module 234 for authenticating the user in response to the access request
  • o providing module 236 for providing to respective client device 104 media content recorded by the user and/or generated video data corresponding to the media content in accordance with a determination that the user is authenticated; and • server data 240 storing data for the recording application, including but not limited to:
  • o media content database 114 storing media content recorded by users in server-client environment 100 and/or generated video data corresponding to the media content
  • o profiles database 116 storing user profiles for users of client-side modules 102 in videos recorded by users in server-client environment 100, where a respective user profile for a user includes a user identifier (e.g., an account name or handle), login credentials to videos recorded by users in server-client environment 100, an IP address or preferred contact information, contacts list, custom parameters for the user (e.g., age, location, hobbies, etc.), and identified trends and/or likes/dislikes of the user.
  • a user identifier e.g., an account name or handle
  • login credentials to videos recorded by users in server-client environment 100 e.g., an IP address or preferred contact information
  • contacts list e.g., custom parameters for the user (e.g., age, location, hobbies, etc.), and identified trends and/or likes/dislikes of the user.
  • Each of the above identified elements may be stored in one or more of the previously mentioned memory devices, and corresponds to a set of instructions for performing a function described above.
  • the above identified modules or programs i.e., sets of instructions
  • memory 206 optionally, stores a subset of the modules and data structures identified above.
  • memory 206 optionally, stores additional modules and data structures not described above.
  • FIG. 3 is a block diagram illustrating a representative client device 104 associated with a user in accordance with some embodiments.
  • Client device 104 typically, includes one or more processing units (CPUs) 302, one or more network interfaces 304, memory 306, and one or more communication buses 308 for interconnecting these components (sometimes called a chipset).
  • Client device 104 also includes a user interface 310.
  • User interface 310 includes one or more output devices 312 that enable presentation of media content, including one or more speakers and/or one or more visual displays.
  • User interface 310 also includes one or more input devices 314, including user interface components that facilitate user input such as a keyboard, a mouse, a voice-command input unit or microphone, a touch screen display, a touch-sensitive input pad, a gesture capturing camera, or other input buttons or controls. Furthermore, some client devices 104 use a microphone and voice recognition or a camera and gesture recognition to supplement or replace the keyboard.
  • Memory 306 includes high-speed random access memory, such as DRAM, SRAM, DDR RAM, or other random access solid state memory devices; and, optionally, includes non-volatile memory, such as one or more magnetic disk storage devices, one or more optical disk storage devices, one or more flash memory devices, or one or more other non- volatile solid state storage devices.
  • Memory 306, optionally, includes one or more storage devices remotely located from one or more processing units 302.
  • Memory 306, or alternatively the non-volatile memory within memory 306, includes a non- transitory computer readable storage medium.
  • memory 306, or the non- transitory computer readable storage medium of memory 306, stores the following programs, modules, and data structures, or a subset or superset thereof:
  • operating system 316 including procedures for handling various basic system services and for performing hardware dependent tasks
  • network communication module 318 for connecting client device 104 to other computing devices (e.g., server system 108) connected to one or more networks 110 via one or more network interfaces 304 (wired or wireless);
  • presentation module 320 for enabling presentation of information (e.g., a user interface for application(s) 326 or the recording application when executed in the foreground, widgets, websites and web pages thereof, and/or games, audio and/or video content, text, etc.) at client device 104 via one or more output devices 312 (e.g., displays, speakers, etc.) associated with user interface 310;
  • information e.g., a user interface for application(s) 326 or the recording application when executed in the foreground, widgets, websites and web pages thereof, and/or games, audio and/or video content, text, etc.
  • output devices 312 e.g., displays, speakers, etc.
  • input processing module 322 for detecting one or more user inputs or interactions from one of the one or more input devices 314 and interpreting the detected input or interaction;
  • web browser module 324 for navigating, requesting (e.g., via HTTP), and displaying websites and web pages thereof;
  • client device 104 • one or more applications 326-1 - 326-N for execution by client device 104 (e.g., games, application marketplaces, payment platforms, and/or other applications); and
  • screen capture module 330 for performing a screen shot of the current interface displayed on the display of client device 104 (e.g., capturing images of user interface for application(s) 326 executed in the foreground);
  • client-side module 102 which provides client-side data processing and functionalities for the recording application (sometimes also herein called the “recording program"), including but not limited to:
  • o monitoring module 332 for monitoring user inputs detected by input processing
  • o determining module 334 for determining whether a respective user input detected by input processing module 322 satisfies one or more predefined criteria; o identifying module 336 for identifying the respective user input as being directed to the recording application in accordance with a determination that the respective user input satisfies the one or more predefined criteria;
  • o performing module 338 responsive to detecting the user input directed to the
  • recording application performing operations for the recording application, including but not limited to:
  • ⁇ recording module 340 for starting to record media content presented by client device 104 for application(s) 326 (or a home screen for operating system 316), including but not limited to:
  • invoking module 342 for causing screen capture module 330 to capture a sequence of images of at least a portion of a displayed interface of an application 326 or operating system 316 being executed by client device 104, and for causing external sound recording module 328 to record external sound;
  • obtaining module 344 for obtaining binary data corresponding to I/O output for the current foreground process presented by client device 104 (e.g., corresponding to application(s) 326 or operating system 316) from operating system 316 of client device 104;
  • converting module 346 for converting at least a portion of the binary data to pixel data
  • generating module 348 for generating video data for the media content based at least in part on the pixel data or for generating video data for the media content based at least in part on the sequence of images from screen capture module 330;
  • synchronizing module 350 for synchronizing the obtained external sound with the generated video data to generate combined video data
  • cropping module 352 for cropping a portion of the video data
  • ⁇ modifying module 354 for modifying an ongoing recording operation by
  • recording module 340 e.g., pausing and un-pausing the recording of the media content or changing the recording speed
  • ⁇ terminating module 356 for terminating an ongoing recording operation by recording module 340
  • o request handling module 360 for handling a request from a user to access media
  • o authenticating module 362 for authenticating the user in response to the access request
  • o presenting module 364 for presenting to respective client device 104 media content recorded by the user and/or generated video data corresponding to the media content in accordance with a determination that the user is authenticated;
  • client data 370 storing data associated with the social networking platform, including, but is not limited to:
  • o user profile 372 storing a user profile associated with the user of client device 104 including a user identifier (e.g., an account name or handle), login credentials to videos recorded by users in server-client environment 100, an IP address or preferred contact information, contacts list, custom parameters for the user (e.g., age, location, hobbies, etc.), and identified trends and/or likes/dislikes of the user; and o media content 374 storing media content recorded by users of client device 104 and/or generated video data corresponding to the media content.
  • a user identifier e.g., an account name or handle
  • login credentials to videos recorded by users in server-client environment 100 e.g., an IP address or preferred contact information, contacts list, custom parameters for the user (e.g., age, location, hobbies, etc.), and identified trends and/or likes/dislikes of the user
  • o media content 374 storing media content recorded by users of client device 104 and/or generated video data corresponding to the media content.
  • Each of the above identified elements may be stored in one or more of the previously mentioned memory devices, and corresponds to a set of instructions for performing a function described above.
  • the above identified modules or programs i.e., sets of instructions
  • memory 306 optionally, stores a subset of the modules and data structures identified above.
  • memory 306, optionally, stores additional modules and data structures not described above.
  • At least some of the functions of the client-side module 102 are performed by the server-side module 106, and the corresponding sub-modules of these functions may be located within the server-side module 106 rather than the client-side module 102.
  • converting module 346, generating module 348, synchronizing module 350, and/or cropping module 352, or media content 372, request handling module 360 and authenticating module 362 may be implemented at least in part on server system 108.
  • the functions of the server-side module 106 are performed by the client-side module 102, and the corresponding sub-modules of these functions may be located within the client-side module 102 rather than the server-side module 106.
  • converting module 224, generating module 226, synchronizing module 228, and/or cropping module 230, or media content database 114, request handling module 232 and authenticating module 234 may be implemented at least in part on server system 108.
  • Server system 108 and client device 104 shown in Figures 2-3, respectively, are merely illustrative, and different configurations of the modules for implementing the functions described herein are possible in various embodiments.
  • FIG. 4A-4E illustrate exemplary user interfaces for recording presented media content in accordance with some embodiments.
  • the device detects inputs on a touch- sensitive surface that is separate from the display.
  • the touch sensitive surface has a primary axis that corresponds to a primary axis on the display.
  • the device detects contacts with the touch-sensitive surface at locations that correspond to respective locations on the display. In this way, user inputs detected by the device on the touch-sensitive surface are used by the device to manipulate the user interface on the display of the device when the touch- sensitive surface is separate from the display. It should be understood that similar methods are, optionally, used for other user interfaces described herein.
  • contacts e.g., finger inputs such as finger contacts, finger tap gestures, finger swipe gestures, etc.
  • one or more of the contacts are replaced with input from another input device (e.g., a mouse-based, stylus-based, or physical button-based input).
  • a swipe gesture is, optionally, replaced with a mouse click (e.g., instead of a contact) followed by movement of the cursor along the path of the swipe (e.g., instead of movement of the contact).
  • a tap gesture is, optionally, replaced with a mouse click while the cursor is located over the location of the tap gesture (e.g., instead of detection of the contact followed by ceasing to detect the contact) or depression of a physical button.
  • a tap gesture is, optionally, replaced with a mouse click while the cursor is located over the location of the tap gesture (e.g., instead of detection of the contact followed by ceasing to detect the contact) or depression of a physical button.
  • multiple user inputs are simultaneously detected, it should be understood that multiple computer mice are, optionally, used simultaneously, or a mouse and finger contacts are, optionally, used simultaneously.
  • Figures 4A-4E show interface 408 displayed on client device 104 (e.g., a mobile phone); however, one skilled in the art will appreciate that the user interfaces shown in Figures 4A- 4E may be implemented on other similar computing devices.
  • client device 104 e.g., a mobile phone
  • the user interfaces in Figures 4A-4E are used to illustrate the processes described herein, including the process described with respect to Figures 5-7 and 8A-8B.
  • client device 104 initiates execution of a recording program (e.g., automatically upon start-up/power-on of client device 104, or, in response, to a user action/input).
  • a recording program e.g., automatically upon start-up/power-on of client device 104, or, in response, to a user action/input.
  • the user of client device 104 interacts with one or more other programs executed in the foreground (e.g., operating system 316 and application(s) 326 such as games, widgets, and/or the like) while the recording program executes as a background process.
  • one of the one or more other programs executed in the foreground is a Mahjong game played by the user of client device 104 while the recording program executes as a background process.
  • Figure 4A illustrates client device 104 displaying an interface for a Mahjong game
  • FIG. 4A there are four players 412 playing the Mahjong game.
  • player 412-a is playing an online Mahjong game on client device 104 with other players (e.g., remotely located human players 412-b, 412-c, and 412-d) via a game server (e.g., one of external service(s) 122, Figure 1) that coordinates play of the online Mahjong game for players 412.
  • game server e.g., one of external service(s) 122, Figure 1
  • each of players 412 is associated with a set of tiles 414 and is represented by a corresponding in-game avatar (e.g., initials, player number, portrait, selected image, or automatically assigned or default image).
  • Figure 4 A shows a first state of a round of the online Mahjong game where player 412-b started the round playing tile 418 and player 412-c followed by playing tile 420.
  • Figure 4A also illustrates client device 104 displaying toggle record affordance 422 and a toggle pause 424 affordance.
  • toggle record affordance 422 and toggle pause 424 affordance are independent of the Mahjong game being executed by client device 104 as a foreground process.
  • toggle record affordance 422 and toggle pause 424 corresponds to the recording program that runs as a background process while the user plays the Mahjong game.
  • toggle record affordance 422 when activated (e.g., by a contact or a tap gesture), causes the recording program to start or terminate recording the media content presented by client device 104 for the Mahjong game depending on whether the recording program is currently recording the media content
  • toggle pause 424 affordance when activated (e.g., by a contact or a tap gesture), causes the recording program to pause or un-pause recording the media content presented by client device 104 for the Mahjong game depending on whether the recording program is currently paused.
  • Figure 4B illustrates client device 104 displaying an interface for a Mahjong game
  • Figure 4B also illustrates client device 104 detecting a first gesture on touch screen 406 with contacts 426-a, 426-b, 426-c, and 426-d (e.g., a four-finger swipe gesture in a substantially bottom-to-top (i.e., upwards) direction).
  • a first gesture on touch screen 406 with contacts 426-a, 426-b, 426-c, and 426-d (e.g., a four-finger swipe gesture in a substantially bottom-to-top (i.e., upwards) direction).
  • the recording program monitors user inputs detected by client device 104 for predetermined gestures directed to the recording program while executing as a background process.
  • the recording program determines that the first gesture is a predetermined gesture for starting to record media content. For example, in response to detecting the first gesture, the recording program starts recording the user's interactions with the Mahjong game and also the media content presented by client device 104 for the Mahjong game (e.g., the displayed UI and audio data for the other programs, and (optionally) external audio data).
  • Figure 4C illustrates client device 104 displaying indicator 428 corresponding to the recording program overlaid on the user interface for the Mahjong game and independent of the Mahjong game being executed by client device 104 as a foreground process.
  • indicator 428 indicates that the recording program is currently recording media content (i.e., the recording program is "live").
  • Figure 4C also illustrates client device 104 detecting a second gesture on touch screen 406 with contacts 430-a and 430-b (e.g., a two-finger swipe gesture in a substantially top-to- bottom (i.e., downwards) direction).
  • the recording program determines that the second gesture is a predetermined gesture for pausing the recording of the media content. For example, in response to detecting the second gesture, the recording program pauses the recording.
  • Figure 4D illustrates client device 104 displaying indicator 428 corresponding to the recording program overlaid on the user interface for the Mahjong game, which indicates that the recording program is currently paused.
  • Figure 4D also illustrates client device 104 detecting a third gesture on touch screen 406 with contacts 432-a and 432-b (e.g., a two-finger swipe gesture in a substantially bottom-to-top (i.e., upwards) direction).
  • a third gesture on touch screen 406 with contacts 432-a and 432-b e.g., a two-finger swipe gesture in a substantially bottom-to-top (i.e., upwards) direction.
  • the recording program determines that the third gesture is a predetermined gesture for un-pausing the recording.
  • the recording program un-pauses the recording and re-starts recording the user's interactions with the Mahjong game and also the media content presented by client device 104 for the Mahjong game (e.g., the displayed UI and audio data for the other programs, and (optionally) external audio data).
  • the media content presented by client device 104 for the Mahjong game e.g., the displayed UI and audio data for the other programs, and (optionally) external audio data.
  • Figure 4E illustrates client device 104 displaying indicator 428 corresponding to the recording program overlaid on the user interface for the Mahjong game, which indicates that the recording program is currently recording media content (i.e., the recording program is "live").
  • Figure 4E also illustrates client device 104 detecting a fourth gesture on touch screen 406 with contacts 434- a, 434-b, 434-c, and 434-d (e.g., a four-finger swipe gesture in a substantially top-to-bottom (i.e., downwards) direction).
  • the recording program determines that the fourth gesture is a predetermined gesture for terminating the recording. For example, in response to detecting the fourth gesture, the recording program terminates the recording.
  • Figure 5 illustrates a flowchart diagram of a method 500 of screen recording in accordance with some embodiments.
  • method 500 is performed by a device with one or more processors and memory.
  • method 500 is performed by a client device 104 ( Figures 1 and 3) or a component thereof (e.g., client-side module 102, Figures 1 and 3).
  • method 500 is governed by instructions that are stored in a non-transitory computer readable storage medium and the instructions are executed by one or more processors of the server system.
  • the device is one of a smart phone, a tablet computer, an ebook reader, a Moving Picture Experts Group Audio Layer III (MP3) player, a Moving Picture Experts Group Audio Layer IV version (MP4) player, a laptop portable computer, or the like.
  • MP3 Moving Picture Experts Group Audio Layer III
  • MP4 Moving Picture Experts Group Audio Layer IV version
  • a developer creates an application for performing screen recording, where the application is configured as a program suitable for running as a background process.
  • the application may be created in a specific integrated development environment (IDE), where the IDE is an application used for providing a program development environment, and generally includes a code editor, a compiler, a debugger, and a graphical user interface tool, which is an integrated service software development kit integrating a code writing function, an analysis function, a compiling function, a debugging function, and the like.
  • IDE integrated development environment
  • a restricted operating system e.g., iOS
  • an application running in the background enters a suspended state after a short period of time (e.g., 600 seconds at most), where the application no longer executes any code.
  • a short period of time e.g. 600 seconds at most
  • the system terminates suspended applications to release memory for applications running in the foreground. For example, only when the suspended application is re-entered (or brought into the foreground) does the application switch from the suspended state to a normal state to execute the code.
  • the device initiates (502) a recording program (sometimes also herein called a
  • recording application as a background process.
  • the recording program is
  • the device starts (504) a recording thread to obtain, in real time, binary data corresponding to media content presented for current foreground program operations executed on the device, stores the binary data in a memory, and converts the binary data into pixel data.
  • a main thread corresponding to a recording program is responsible for recording foreground program operations executed on the device while the recording program in the background.
  • the recording program starts the recording thread in response to a detecting a first trigger (e.g., a first user input or gesture directed to the recording program).
  • the recording program starts the recording thread to obtain the original binary data displayed on the screen of the device in real time (i.e., current foreground program operations) through a private application programming interface (API) and store the original binary data in the memory.
  • API application programming interface
  • the private API refers to an API located in a PrivateFrameworks framework.
  • the device terminates (506) the recording thread, and generates a video file according to the pixel data.
  • the recording program terminates the recording thread in response to a detecting a second trigger (e.g., a second user input or gesture directed to the recording program).
  • a second trigger e.g., a second user input or gesture directed to the recording program.
  • the pixel data obtained in operation 504 is written in a video stream in real time as an image frame, and the video file is generated.
  • the format of the video file is one of MP4, 3GP, AVI, MPEG, and the like.
  • method 500 binary data displayed on a screen is directly obtained by a recording thread and then converted into pixel data, and finally the pixel data is encoded to generate a video file, so as to record operations on a screen with high efficiency and wide application. Moreover, method 500 may be performed on a device which has not obtained root privileges of a system. [0053] It should be understood that the particular order in which the operations in Figure 5 have been described is merely exemplary and is not intended to indicate that the described order is the only order in which the operations could be performed. One of ordinary skill in the art would recognize various ways to reorder the operations described herein. Additionally, it should be noted that details of other processes described herein with respect to other methods described herein (e.g., methods 600, 700, and 800) are also applicable in an analogous manner to method 500 described above with respect to Figure 5.
  • Figure 6 illustrates a flowchart diagram of a method 600 of screen recording in accordance with some embodiments.
  • method 600 is performed by a device with one or more processors and memory.
  • method 600 is performed by a client device 104 ( Figures 1 and 3) or a component thereof (e.g., client-side module 102, Figures 1 and 3).
  • method 600 is governed by instructions that are stored in a non-transitory computer readable storage medium and the instructions are executed by one or more processors of the server system.
  • a developer creates an application for performing screen recording, where the application is configured as a program suitable for running as a background process.
  • the device initiates (602) a recording program as a background process.
  • the recording program is automatically initiated as a background process upon start-up/power-on of the device or the recording program is initiated by the user of the device.
  • the device starts (604) a recording thread to obtain, in real time, binary data corresponding to media content presented for current foreground program operations executed on the device, store the binary data in a memory, and convert the binary data into pixel data.
  • a main thread corresponding to a recording program (sometimes also herein called a "recording application”) is responsible for recording foreground program operations executed on the device while the recording program in the background.
  • the recording program starts the recording thread in response to a detecting a first trigger (e.g., a first user input or gesture directed to the recording program).
  • a first trigger e.g., a first user input or gesture directed to the recording program.
  • the recording program starts the recording thread to obtain the original binary data displayed on the screen of the device in real time (i.e., current foreground program operations) through a private application programming interface (API) and store the original binary data in the memory.
  • API application programming interface
  • the device calls (606) a system API to record audio for the current foreground program operations executed on the device, and generates an audio file.
  • the device terminates (608) the recording thread, and generates a video file according to the pixel data.
  • the recording program terminates the recording thread in response to a detecting a second trigger (e.g., a second user input or gesture directed to the recording program).
  • the device synchronizes (610) the video file with the audio file. Therefore, an audio file synchronous with the video file is generated while the video file is generated, and a user may directly play and view the video file, and hear audio synchronous with video.
  • Figure 7 illustrates a flowchart diagram of a method 700 of screen recording in accordance with some embodiments.
  • method 700 is performed by a device with one or more processors and memory.
  • method 700 is performed by a client device 104 ( Figures 1 and 3) or a component thereof (e.g., client-side module 102, Figures 1 and 3).
  • method 700 is governed by instructions that are stored in a non-transitory computer readable storage medium and the instructions are executed by one or more processors of the server system.
  • the device initiates (702) a recording program.
  • the recording program is automatically initiated as a background process upon start-up/power-on of the device or the recording program is initiated by the user of the device.
  • thread A is started, and a user interface (UI) is displayed in the main thread, where the UI includes a UI component for starting and ending the recording (e.g., a start button and an end button).
  • UI user interface
  • the device detects (704) a first trigger.
  • the device detects the first trigger when the user of the device selects the start button in the UI for the recording program.
  • the device in response to detecting the first trigger, instructs a recording thread to start.
  • the recording thread includes an audio recording thread (i.e., thread B) and a screen recording thread (i.e., thread C) running in parallel.
  • the device switches (706) the recording program to run in the background.
  • the device records (708) audio data for the current foreground program operations executed on the device, and stores the audio data in a memory.
  • the recording program obtains the audio by calling a system API.
  • the device obtains (710), in real time, binary data corresponding to media content presented for current foreground program operations executed on the device, and stores the binary data in the memory.
  • the binary data is obtained in real time by means of a private API (e.g., IOSurfaceCreate in the IOSurface framework) and placed in the memory.
  • a private API e.g., IOSurfaceCreate in the IOSurface framework
  • the device converts (712) the obtained original data into pixel data.
  • the original binary data in the memory is converted into the pixel data, so that the pixel data is conveniently written in a video stream as an image frame in real time.
  • the device encodes (714) the pixel data, and generates a video.
  • the pixel data obtained in operation 712 is written and encoded in the video stream as an image frame in real time, and a video is generated.
  • the device detects (716) a second trigger.
  • the device detects the second trigger when the user of the device selects the end button in UI of the recording program.
  • the end button is overlaid on the screen, and the recording is terminated when the user of the device selects the end button.
  • the recording is terminated when the user of the device performs a predetermined gesture on the screen or actuates a combination or sequence of buttons such as pressing both a home button and a power button or the like.
  • the device In response to detecting the second trigger, the device (i.e., the recording program) instructs the recording thread to stop (e.g., threads B and C).
  • the recording thread e.g., threads B and C.
  • the device stops (718) obtaining the audio data and generates an audio file.
  • the device stops (720) obtaining the binary data, and generates a video file.
  • the format of the video file is one of MP4, 3GP, AVI, MPEG, or the like.
  • the device ends the recording thread by ending (722 and 724) the audio recording thread (i.e., thread B) and the screen recording thread (i.e., thread C).
  • the device synchronizes the video file with the audio file, and ends the main thread (726). Therefore, an audio file synchronous with the video file is generated while the video file is generated, and a user may directly play and view the video file, and hear audio synchronous with video.
  • method 700 may be applied to a debugging scenario whereby a tester may use the recording program to record a bug that is found. In this way, a subsequent developer is able to utilize the video file to conveniently reproduce the bug to make an improvement to a product.
  • method 700 may be applied to a tutorial or demonstration scenario whereby a developer may use the recording program to record product features in order to generate a video file to conveniently publicize the product.
  • Figures 8A-8B illustrate a flowchart diagram of a method 800 of recording presented media content in accordance with some embodiments.
  • method 800 is performed by a device with one or more processors and memory.
  • method 800 is performed by client device 104 ( Figures 1 and 3) or a component thereof (e.g., client- side module 102, Figures 1 and 3).
  • method 800 is governed by instructions that are stored in a non-transitory computer readable storage medium and the instructions are executed by one or more processors of the server system. Optional operations are indicated by dashed lines (e.g., boxes with dashed-line borders).
  • the user of the device accesses a recording program (sometimes also herein called a "recording application") so as to initiate the recording program and also to start recording media content presented by client device 104. Thereafter, in this example, the user exits the recording program (e.g., by pressing a home button of the device) and interacts with other programs executed in the foreground while the recording program executes as a background process and records the user's interactions with the other programs and also the media content presented by client device 104 for the other programs (e.g., the displayed UI and audio data for the other programs, and (optionally) external audio data).
  • a recording program sometimes also herein called a "recording application”
  • the user re-accesses the recording program so as to stop recording media content presented by client device 104.
  • the user of the device e.g., client device 104, Figures 1 and 3 accesses the recording program so as to initiate the recording program. Thereafter, in this example, the user exits the recording program (e.g., by pressing a home button of the device) and interacts with other programs executed in the foreground while the recording program executes as a background process.
  • the recording program monitors user inputs and detects a first user input directed to the recording program (e.g., a predetermined start recording gesture), and, in response to detecting the first user input, the recording program records the user's interactions with the other programs and also the media content presented by client device 104 for the other programs (e.g., the displayed UI and audio data for the other programs, and (optionally) external audio data).
  • the recording program continues to monitor user inputs and detects a second user input directed to the recording program (e.g., a predetermined stop/terminate recording gesture), and, in response to detecting the second user input, the recording program stops recording media content presented by client device 104.
  • the device initiates (802) execution of a recording program.
  • the recording program is automatically initiated as a background process upon start-up/power-on of the device or the recording program is initiated by the user of the device as discussed in the above examples.
  • the device controls (806) media content presented at the device in accordance with a plurality of foreground program operations executed by the device.
  • the user of client device 104 interacts with one or more other programs executed in the foreground (e.g., operating system 316 and application(s) 326 such as games, widgets, and/or the like) while the recording program executes as a background process.
  • one of the one or more other programs executed in the foreground is a Mahjong game played by the user of client device 104 while the recording program executes as a background process.
  • the device while controlling media content presented at the device in accordance with the plurality of foreground program operations executed by the device, concurrently displays one or more affordances that are independent of the foreground program operations executed by the device, where the one or more affordances correspond to the recording program in the background process of the device.
  • the device in response to detecting a touch input on the display selecting one of the one or more affordances, the device (i.e., the recording program) detects a user input directed to the recording program.
  • client device 104 displays a toggle record affordance 422 and a toggle pause 424 affordance overlaid on the user interface for the Mahjong game.
  • toggle record affordance 422 and toggle pause 424 affordance are independent of the Mahjong game being executed by client device 104 as a foreground process, and toggle record affordance 422 and toggle pause 424 correspond to the recording program that runs as a background process while the user plays the Mahjong game.
  • the one or more affordances are overlaid over the user interface of a program executed in the foreground and/or are located in position so as not to minimally interfere with the user interface of the program executed in the foreground.
  • the device While maintaining continued execution of the recording program (804) in a background process of the device, the device detects (808), via the recording program executing in the background process, a user input directed to the recording program.
  • the user input is a predetermined gesture (e.g., the first gesture with contacts 426-a, 426-b, 426-c, and 426-d in Figure 4B) recognizable by the recording program or selection of an affordance corresponding to the recording program that is overlaid on the media content provided based on the foreground program operations (e.g., toggle record affordance 422 in Figure 4A).
  • the input is for initiating actual recording of the media content.
  • the user input is for pausing or otherwise influence the ongoing recording of the media content.
  • the user input is for pausing the recording or terminating the recording.
  • the input triggers the start of the actual recording.
  • the user input is received and the actual recording is started after the recording program has been sent to the background, and when other programs (e.g., the home screen or other programs such as the Mahjong game in Figures 4A-4E) have been initiated and are running in the foreground.
  • other programs e.g., the home screen or other programs such as the Mahjong game in Figures 4A-4E
  • the device detects (810) the user input directed to the recording program by: detecting one or more user inputs; determining whether a respective user input of the one or more user inputs satisfies one or more predefined criteria; and, in accordance with a determination that the respective user input satisfies the one or more predefined criteria, identifying the respective user input as being directed to the recording program.
  • the identified respective input is the detected user input.
  • the recording program detects all user inputs; however, the predefined criteria are satisfied when the recording program detects a predetermined input/gesture triggering the recording related operations (e.g., start, pause/resume, terminate, crop the output file, etc.).
  • the detection may be accomplished by the recording program by monitoring the user inputs received by the operating system, and determining whether any one of the inputs matches the predefined criteria such as a contact detected at predetermined locations on the screen (e.g., upper right corner of the display), a predetermined path for the detected contact (e.g., a check mark shaped path), a predetermined number of contacts (e.g., a two-contact/finger gesture), a predetermined movement direction of contacts (e.g., substantially upwards or downwards), etc., or a combination thereof.
  • the predetermined gestures for starting and terminating the recording are distinct predetermined gestures.
  • the predetermined gestures for starting and terminating the recording are the same predetermined gesture (i.e., toggle the recording on/off).
  • the predetermined gestures for pausing and un-pausing the recording are distinct predetermined gestures.
  • the predetermined gestures for pausing and un-pausing the recording are the same predetermined gesture (i.e., toggle the paused recording on/off).
  • the recording program determines that the first gesture is a predetermined gesture for starting to record media content (e.g., a four-finger swipe gesture in a substantially bottom-to-top (i.e., upwards) direction).
  • the recording program determines that the second gesture is a predetermined gesture for pausing the recording of the media content (e.g., a two-finger swipe gesture in a substantially top-to-bottom (i.e., downwards) direction).
  • the recording program determines that the third gesture is a predetermined gesture for un- pausing the recording (e.g., a two-finger swipe gesture in a substantially bottom-to-top (i.e., upwards) direction).
  • the recording program determines that the fourth gesture is a predetermined gesture for terminating the recording (e.g., a four-finger swipe gesture in a substantially top-to-bottom (i.e., downwards) direction).
  • the device performs (812), via the recording program executing in the background process, one of: (1) starting (814) to record media content presented by the device in accordance with current foreground program operations executed by the device, (2) terminating (824) an ongoing recording operation of the recording program and generating a media file for the recorded media content, and (3) modifying (826) the ongoing recording operation of the recording program, or the media file for the recorded media content.
  • the recording program causes performance of one of the above three functions in response to detecting the user input.
  • the modifying function includes pausing the recording of the media content, recording the media content at a faster or slower speed, resuming the paused recording, and the like.
  • the recording program pauses, un-pauses, or terminates the recording program while maintaining the recording program as a background process.
  • the user input can be used to indicate to the recording program where to crop the recorded content when generating the output media file.
  • the device records (816) media content by invoking a screen capture function of a respective operating system of the device while media content is presented at the device in accordance with current foreground program operations executed by the device.
  • the recording program or a component thereof e.g., invoking module 342, Figure 3 invokes a screenshot function of the operating system (e.g., screen capture module 330, Figure 3) to capture a sequence of one or more images of the user interface corresponding to foreground program operations.
  • the device records (818) the media content presented by the device by: obtaining binary data corresponding to I/O output for the current foreground program operations from an operating system of the device; and converting at least a portion of the obtained binary data into pixel data.
  • the recording program or a component thereof e.g., obtaining module 344, Figure 3
  • the recording program or a component thereof converts video data from the obtained binary data into pixel data.
  • the generated pixel data is stored in a buffer prior to operation 820.
  • the device generates (820) video data for the media file for the recorded media content based at least in part on the pixel data.
  • the recording program or a component thereof e.g., generating module 348, Figure 3
  • the recording program or a component thereof generates video data for the media content based at least in part on the pixel data.
  • audio from the current foreground program is also synchronized with the generated video data.
  • the device synchronously records (822) external sound captured by a microphone of the device while recording the media content presented by the device.
  • the recording program or a component thereof invokes an external sound capturing function (e.g., external sound recording module 328, Figure 3) of the operating system to record via one or more input devices 314 (i.e., one or more microphones) of client device 104 external sound external audio data that is distinct from the audio data corresponding to the current foreground program.
  • the recording program invokes the external sound capturing function of the operating system after the recording of the media content is started by the user, and adds the sound recording to the recorded media content when generating the media file.
  • the media content presented at the device for the current foreground program includes both audio and video data obtained by obtaining module 344 as discussed above in operation 818.
  • the recording program further incorporates sound in the outside environment (e.g., the user of the device narrating operations of or interactions with the current foreground program), which is recorded by another program distinct from the recording program (i.e., external sound recording module 328, Figure 3).
  • the recording program or a component thereof e.g., synchronizing module 350, Figure 3 incorporates and synchronizes the recorded sound generated by external sound recording module 328 to
  • the device modifies (828) the media file for the recorded media content by cropping one or more predefined portions from the recorded media content presented by the device.
  • the recording program or a component thereof delays the recording to discard the first M seconds after detecting a first user input to start the recording is detected. In this example, continue to record for N seconds after a second user input to terminate the recording is detected.
  • the recording program or a component thereof crops the first X seconds of the recording and the last Y seconds of the recording.
  • the video recording is be cropped, or started/stopped/paused at a different times from the voice recording; thus, the recording program or a component thereof (e.g., cropping module 352, Figure 3) processes the voice recording (e.g., crops or shifts the audio data) to match the video recording, before the final video is made.
  • the recording program or a component thereof e.g., cropping module 352, Figure 3
  • the voice recording e.g., crops or shifts the audio data
  • the device transmits (830), via the recording program
  • the recorded media content executing in the background process, the recorded media content to a server.
  • the recording program or a component thereof streams (e.g., in real-time) the recorded media content presented by the device for the foreground program operations to a server (e.g., server system 108).
  • the server processes the media content to generate video data, and stores the media content and/or the corresponding generated video data.
  • the media content streamed to the server includes the binary data, which the server converts into pixel data.
  • the server generates the video data from the pixel data.
  • the media content is transmitted (i.e., streamed) to the server when the recording is longer than Z seconds or when the device is low on system resources.
  • a user of the device is able to view videos stored by the server (e.g., in media content database 114, Figures 1-2) when visiting a website or executing an app
  • the user of the device accesses the generated video data by executing the recording program and entering login credentials (e.g., a PIN code or user name and password).
  • login credentials e.g., a PIN code or user name and password.
  • the user of the device is able to browse a library of video files stored on the device (e.g., in media content 374, Figure 3) and select one of the plurality of video files for presentation by the device.
  • FIG. 9 is a schematic structural diagram of a screen recording module 900 in accordance with some embodiments.
  • screen recording module 900 is executed at least in part on client device 104 and corresponds to client-side module 102 ( Figures 1 and 3).
  • screen recording module 900 includes the following units:
  • configuring module 902 is configured to create an application for performing screen recording (i.e., the recording program).
  • recording module 904 is configured to start a recording thread.
  • the recording thread includes an audio recording thread (i.e., thread B in Figure 7) and a screen recording thread (i.e., thread C in Figure 7) running in parallel.
  • the audio recording thread records audio data for the current foreground program operations executed on the device, and stores the audio data in a memory.
  • the screen recording thread obtains, in real time, binary data corresponding to media content presented for current foreground program operations executed on the device, and stores the binary data in the memory; converts the obtained original data into pixel data; and encodes the pixel data to generate a video file.
  • instructing module 906 is configured to instruct the recording thread to stop recording, and generates a video file according to the pixel data. In some embodiments, instructing module 906 is also configured to synchronize the video file with the audio file [00103] In some embodiments, screen recording apparatus 908 is (optionally) configured to directly obtain original binary data displayed on a screen, convert the original binary data into pixel data, and encode the pixel data to generate a video file.

Abstract

A device with processor(s) and memory initiates execution of a recording program. While maintaining continued execution of the recording program in a background process, the device controls media content presented at the device in accordance with a plurality of foreground program operations executed by the device and detects, via the recording program executing in the background process, a user input directed to the recording program. In response to detecting the user input, the device performs, via the recording program executing in the background process, one of: (1) starting to record media content presented by the device in accordance with current foreground program operations executed by the device, (2) terminating an ongoing recording operation of the recording program and generating a media file for the recorded media content, and (3) modifying the ongoing recording operation of the recording program, or the media file for the recorded media content.

Description

METHOD AND SYSTEM FOR CONTROLLING PROCESS FOR
RECORDING MEDIA CONTENT
Description
PRIORITY CLAIM AND RELATED APPLICATIONS
[0001] This application claims priority to Chinese Patent Application No. 201310389063.6, entitled "Method and System for Screen Recording," filed on August 30, 2013, which is incorporated by reference in its entirety.
FIELD OF THE TECHNOLOGY
[0002] The present disclosure relates to the field of computer data processing technologies, and in particular, to a method and system for recording media content.
BACKGROUND OF THE TECHNOLOGY
[0003] The functional capabilities of mobile devices have become diverse with the rapid development of mobile computing technologies. Sometimes, a user of a mobile device intends to record content being presented on the device's screen as a video.
[0004] Presently, on a restricted operating system, content of a screen may be recorded by installing specific software, and different frames per second (FPS) and pixels per inch (PPI) may be set. However, this at least has the following deficiencies: The screen recording function can only be used on a jailbroken mobile phone; in other words, the user has root or super administrator privileges to the mobile phone. Therefore, the screen recording function on non-jailbroken devices is limited and greatly restricted.
SUMMARY
[0005] The embodiments of the present disclosure provide methods and systems for triggering and otherwise controlling a recording program executed as a background process so as to record media content for foreground program operations.
[0006] In some embodiments, a method of recording presented media content is performed at a device (e.g., client device 104, Figures 1 and 3) with one or more processors and memory. The method includes initiating execution of a recording program. While maintaining continued execution of the recording program in a background process of the device, the method includes controlling media content presented at the device in accordance with a plurality of foreground program operations executed by the device and detecting, via the recording program executing in the background process, a user input directed to the recording program. In response to detecting the user input, the method includes performing, via the recording program executing in the background process, one of: (1) starting to record media content presented by the device in accordance with current foreground program operations executed by the device, (2) terminating an ongoing recording operation of the recording program and generating a media file for the recorded media content, and (3) modifying the ongoing recording operation of the recording program, or the media file for the recorded media content.
[0007] In some embodiments, a computing device (e.g., client device 104, Figures 1 and 3) includes one or more processors and memory storing one or more programs for execution by the one or more processors, the one or more programs include instructions for performing, or controlling performance of, the operations of any of the methods described herein. In some embodiments, a non- transitory computer readable storage medium storing one or more programs, the one or more programs comprising instructions, which, when executed by a computing device (e.g., client device 104, Figures 1 and 3) with one or more processors, cause the computer system to perform, or control performance of, the operations of any of the methods described herein. In some embodiments, a computing device (e.g., client device 104, Figures 1 and 3) includes means for performing, or controlling performance of, the operations of any of the methods described herein.
[0008] Various advantages of the present application are apparent in light of the descriptions below.
BRIEF DESCRIPTION OF THE DRAWINGS
[0009] The aforementioned features and advantages of the disclosed technology as well as additional features and advantages thereof will be more clearly understood hereinafter as a result of a detailed description of preferred embodiments when taken in conjunction with the drawings.
[0010] To describe the technical solutions in the embodiments of the present disclosed technology or in the prior art more clearly, the following briefly introduces the accompanying drawings required for describing the embodiments or the prior art. Apparently, the accompanying drawings in the following description show merely some embodiments of the present disclosed technology, and persons of ordinary skill in the art may still derive other drawings from these accompanying drawings without creative efforts.
[0011] Figure 1 is a block diagram of a server-client environment in accordance with some embodiments.
[0012] Figure 2 is a block diagram of a server system in accordance with some embodiments.
[0013] Figure 3 is a block diagram of a client device in accordance with some embodiments.
[0014] Figures 4A-4E illustrate exemplary user interfaces for recording presented media content in accordance with some embodiments. [0015] Figure 5 illustrates a flowchart diagram of a method of screen recording in accordance with some embodiments.
[0016] Figure 6 illustrates a flowchart diagram of a method of screen recording in accordance with some embodiments.
[0017] Figure 7 illustrates a flowchart diagram of a method of screen recording in accordance with some embodiments.
[0018] Figures 8A-8B illustrate a flowchart diagram of a method of recording presented media content in accordance with some embodiments.
[0019] Figure 9 illustrate a block diagram of a screen recording module in accordance with some embodiments.
[0020] Like reference numerals refer to corresponding parts throughout the several views of the drawings.
DESCRIPTION OF EMBODIMENTS
[0021] Reference will now be made in detail to embodiments, examples of which are illustrated in the accompanying drawings. In the following detailed description, numerous specific details are set forth in order to provide a thorough understanding of the subject matter presented herein. But it will be apparent to one skilled in the art that the subject matter may be practiced without these specific details. In other instances, well-known methods, procedures, components, and circuits have not been described in detail so as not to unnecessarily obscure aspects of the
embodiments.
[0022] The following clearly and completely describes the technical solutions in the embodiments of the present application with reference to the accompanying drawings in the embodiments of the present application. Apparently, the described embodiments are merely a part rather than all of the embodiments of the present application. All other embodiments obtained by persons of ordinary skill in the art based on the embodiments of the present application without creative efforts shall fall within the protection scope of the present application.
[0023] As shown in Figure 1, data processing for a recording application (sometimes also herein called a "recording program") is implemented in a server-client environment 100 in
accordance with some embodiments. In accordance with some embodiments, server-client
environment 100 includes client-side processing 102-1, 102-2 (hereinafter "client-side modules 102") executed on a client device 104-1, 104-2, and server-side processing 106 (hereinafter "server-side module 106") executed on a server system 108. Client-side module 102 communicates with server- side module 106 through one or more networks 110. Client-side module 102 provides client-side functionalities for the recording application (e.g., input detection, recording media content, generating video data corresponding to the media content, etc.) and communications with server-side module 106. The client-side module 102 is configured to execute as a background process
concurrently with and independent of the control and operations of other applications executed in the foreground (e.g., application(s) 326, Figure 3), in order to record media content presented by client device 104 for the other applications. The client-side module 102 is also able to invoke screen capture functions of the operating system, external sound recording functions of the operating system, and/or other graphical processing functionalities related to media content recording. Server-side module 106 provides server-side functionalities for the recording application (e.g., obtaining media content, generating video data corresponding to the media content, storing the media content and/or the corresponding video data, providing users with access to the media content and/or the
corresponding video data, etc.) for any number of client modules 102 each residing on a respective client device 104.
[0024] In some embodiments, server-side module 106 includes one or more processors 112, video database 114, profiles database 116, an I/O interface to one or more clients 118, and an I/O interface to one or more external services 120. I/O interface to one or more clients 118 facilitates the client-facing input and output processing for server-side module 106. In some embodiments, processor(s) 112 obtain media content from a client device 104 in server-client environment 100 captured by a user of client device 104 and generate video data corresponding to the media content. Media content database 114 stores media content recorded by users in server-client environment 100 and/or generated video data corresponding to the media content, and profiles database 116 stores a user profile for each user in server-client environment 100. I/O interface to one or more external services 120 facilitates communications with one or more external services 122 (e.g., cloud-based service providers such as video and/or image hosting and storage websites). For example, in some embodiments, external service(s) 122 host and store captured media content and/or generated video data corresponding to the captured media content.
[0025] Examples of client device 104 include, but are not limited to, a handheld computer, a wearable computing device, a personal digital assistant (PDA), a tablet computer, a laptop computer, a desktop computer, a cellular telephone, a smart phone, an enhanced general packet radio service (EGPRS) mobile phone, a media player, a navigation device, a game console, a television, a remote control, or a combination of any two or more of these data processing devices or other data processing devices.
[0026] Examples of one or more networks 110 include local area networks (LAN) and wide area networks (WAN) such as the Internet. One or more networks 110 are, optionally, implemented using any known network protocol, including various wired or wireless protocols, such as Ethernet, Universal Serial Bus (USB), FIRE WIRE, Long Term Evolution (LTE), Global System for Mobile Communications (GSM), Enhanced Data GSM Environment (EDGE), code division multiple access (CDMA), time division multiple access (TDMA), Bluetooth, Wi-Fi, voice over Internet Protocol (VoIP), Wi-MAX, or any other suitable communication protocol.
[0027] Server system 108 is implemented on one or more standalone data processing apparatuses or a distributed network of computers. In some embodiments, server system 108 also employs various virtual devices and/or services of third party service providers (e.g., third-party cloud service providers) to provide the underlying computing resources and/or infrastructure resources of server system 108.
[0028] Server-client environment 100 shown in Figure 1 includes both a client-side portion
(e.g., client-side module 102) and a server-side portion (e.g., server-side module 106). In some embodiments, data processing is implemented as a standalone application installed on client device 104. In addition, the division of functionalities between the client and server portions of client environment data processing can vary in different embodiments. For example, in some embodiments, client-side module 102 is a thin-client that provides only user- facing input and output processing functions, and delegates all other data processing functionalities to a backend server (e.g., server system 108). For example, in some embodiments, the recording application is performed entirely by client-side module 102 whereby client-side module 102 or component(s) thereof records media content, generates video data from the captured media content, stores the captured media content and/or the generated video data, and provides the user of client device 104 with access to the stored media content and/or the corresponding video data. In another example, in some embodiments, server system 108 obtains the recorded media content, generates video data from the captured media content, stores the captured media content and/or the generated video data, and provides the user of client device 104 with access to the stored media content and/or the corresponding video data. In another example, server system 108 obtained the media content and the generated video data, stores the media content and the generated video data, and provides the user of client device 104 with access to the stored media content and/or the corresponding video data
[0029] Figure 2 is a block diagram illustrating server system 108 in accordance with some embodiments. Server system 108, typically, includes one or more processing units (CPUs) 112, one or more network interfaces 204 (e.g., including I/O interface to one or more clients 118 and I/O interface to one or more external services 120), memory 206, and one or more communication buses 208 for interconnecting these components (sometimes called a chipset). Memory 206 includes highspeed random access memory, such as DRAM, SRAM, DDR RAM, or other random access solid state memory devices; and, optionally, includes non-volatile memory, such as one or more magnetic disk storage devices, one or more optical disk storage devices, one or more flash memory devices, or one or more other non-volatile solid state storage devices. Memory 206, optionally, includes one or more storage devices remotely located from one or more processing units 112. Memory 206, or alternatively the non- volatile memory within memory 206, includes a non-transitory computer readable storage medium. In some implementations, memory 206, or the non-transitory computer readable storage medium of memory 206, stores the following programs, modules, and data structures, or a subset or superset thereof:
• operating system 210 including procedures for handling various basic system services and for performing hardware dependent tasks;
• network communication module 212 for connecting server system 108 to other computing devices (e.g., client devices 104 and external service(s) 122) connected to one or more networks 110 via one or more network interfaces 204 (wired or wireless);
• server-side module 106, which provides server-side data processing and functionalities for the recording application, including but not limited to:
o obtaining module 222 for obtaining, from a client device 104 in server-client environment 100, binary data, a sequence of images, or video data corresponding to the media content, and (optionally) for obtaining external sound;
o converting module 224 for converting at least a portion of the binary data to pixel data; o generating module 226 for generating video data for the media content based at least in part on the pixel data or for generating video data for the media content based at least in part on the sequence of images;
o synchronizing module 228 for synchronizing the obtained external sound with the generated video data to generate combined video data;
o cropping module 230 for cropping a portion of the video data generated by generating module 226 or the combined video data generated by synchronizing module 228;
o request handling module 232 for handling a request from a respective client device 104 to access media content recorded by the user of respective client device 104 and/or generated video data corresponding to the media content stored in media content database 114;
o authenticating module 234 for authenticating the user in response to the access request; and
o providing module 236 for providing to respective client device 104 media content recorded by the user and/or generated video data corresponding to the media content in accordance with a determination that the user is authenticated; and • server data 240 storing data for the recording application, including but not limited to:
o media content database 114 storing media content recorded by users in server-client environment 100 and/or generated video data corresponding to the media content; and o profiles database 116 storing user profiles for users of client-side modules 102 in videos recorded by users in server-client environment 100, where a respective user profile for a user includes a user identifier (e.g., an account name or handle), login credentials to videos recorded by users in server-client environment 100, an IP address or preferred contact information, contacts list, custom parameters for the user (e.g., age, location, hobbies, etc.), and identified trends and/or likes/dislikes of the user.
[0030] Each of the above identified elements may be stored in one or more of the previously mentioned memory devices, and corresponds to a set of instructions for performing a function described above. The above identified modules or programs (i.e., sets of instructions) need not be implemented as separate software programs, procedures, or modules, and thus various subsets of these modules may be combined or otherwise re-arranged in various implementations. In some implementations, memory 206, optionally, stores a subset of the modules and data structures identified above. Furthermore, memory 206, optionally, stores additional modules and data structures not described above.
[0031] Figure 3 is a block diagram illustrating a representative client device 104 associated with a user in accordance with some embodiments. Client device 104, typically, includes one or more processing units (CPUs) 302, one or more network interfaces 304, memory 306, and one or more communication buses 308 for interconnecting these components (sometimes called a chipset). Client device 104 also includes a user interface 310. User interface 310 includes one or more output devices 312 that enable presentation of media content, including one or more speakers and/or one or more visual displays. User interface 310 also includes one or more input devices 314, including user interface components that facilitate user input such as a keyboard, a mouse, a voice-command input unit or microphone, a touch screen display, a touch-sensitive input pad, a gesture capturing camera, or other input buttons or controls. Furthermore, some client devices 104 use a microphone and voice recognition or a camera and gesture recognition to supplement or replace the keyboard. Memory 306 includes high-speed random access memory, such as DRAM, SRAM, DDR RAM, or other random access solid state memory devices; and, optionally, includes non-volatile memory, such as one or more magnetic disk storage devices, one or more optical disk storage devices, one or more flash memory devices, or one or more other non- volatile solid state storage devices. Memory 306, optionally, includes one or more storage devices remotely located from one or more processing units 302. Memory 306, or alternatively the non-volatile memory within memory 306, includes a non- transitory computer readable storage medium. In some implementations, memory 306, or the non- transitory computer readable storage medium of memory 306, stores the following programs, modules, and data structures, or a subset or superset thereof:
• operating system 316 including procedures for handling various basic system services and for performing hardware dependent tasks;
• network communication module 318 for connecting client device 104 to other computing devices (e.g., server system 108) connected to one or more networks 110 via one or more network interfaces 304 (wired or wireless);
• presentation module 320 for enabling presentation of information (e.g., a user interface for application(s) 326 or the recording application when executed in the foreground, widgets, websites and web pages thereof, and/or games, audio and/or video content, text, etc.) at client device 104 via one or more output devices 312 (e.g., displays, speakers, etc.) associated with user interface 310;
• input processing module 322 for detecting one or more user inputs or interactions from one of the one or more input devices 314 and interpreting the detected input or interaction;
• web browser module 324 for navigating, requesting (e.g., via HTTP), and displaying websites and web pages thereof;
• one or more applications 326-1 - 326-N for execution by client device 104 (e.g., games, application marketplaces, payment platforms, and/or other applications); and
• external sound recording module 328 for performing external sound capture via one or
microphones of client device 104;
• screen capture module 330 for performing a screen shot of the current interface displayed on the display of client device 104 (e.g., capturing images of user interface for application(s) 326 executed in the foreground); and
• client-side module 102, which provides client-side data processing and functionalities for the recording application (sometimes also herein called the "recording program"), including but not limited to:
o monitoring module 332 for monitoring user inputs detected by input processing
module 322;
o determining module 334 for determining whether a respective user input detected by input processing module 322 satisfies one or more predefined criteria; o identifying module 336 for identifying the respective user input as being directed to the recording application in accordance with a determination that the respective user input satisfies the one or more predefined criteria;
o performing module 338, responsive to detecting the user input directed to the
recording application, performing operations for the recording application, including but not limited to:
■ recording module 340 for starting to record media content presented by client device 104 for application(s) 326 (or a home screen for operating system 316), including but not limited to:
• invoking module 342 for causing screen capture module 330 to capture a sequence of images of at least a portion of a displayed interface of an application 326 or operating system 316 being executed by client device 104, and for causing external sound recording module 328 to record external sound;
• obtaining module 344 for obtaining binary data corresponding to I/O output for the current foreground process presented by client device 104 (e.g., corresponding to application(s) 326 or operating system 316) from operating system 316 of client device 104;
• converting module 346 for converting at least a portion of the binary data to pixel data;
• generating module 348 for generating video data for the media content based at least in part on the pixel data or for generating video data for the media content based at least in part on the sequence of images from screen capture module 330;
• synchronizing module 350 for synchronizing the obtained external sound with the generated video data to generate combined video data; and
• cropping module 352 for cropping a portion of the video data
generated by generating module 348 or the combined video data generated by synchronizing module 350;
■ modifying module 354 for modifying an ongoing recording operation by
recording module 340 (e.g., pausing and un-pausing the recording of the media content or changing the recording speed); and ■ terminating module 356 for terminating an ongoing recording operation by recording module 340;
o transmitting 358 for transmitting to server system 108 binary data or a the sequence of images obtained by obtaining module 344, the video data corresponding to the media content generated by generating module 348, or the combined video data generated by synchronizing module 350, and (optionally) the external sound recorded by external sound recording module 328;
o request handling module 360 for handling a request from a user to access media
content recorded by the user and/or generated video data corresponding to the media content stored in media content 374;
o authenticating module 362 for authenticating the user in response to the access request; and
o presenting module 364 for presenting to respective client device 104 media content recorded by the user and/or generated video data corresponding to the media content in accordance with a determination that the user is authenticated; and
• client data 370 storing data associated with the social networking platform, including, but is not limited to:
o user profile 372 storing a user profile associated with the user of client device 104 including a user identifier (e.g., an account name or handle), login credentials to videos recorded by users in server-client environment 100, an IP address or preferred contact information, contacts list, custom parameters for the user (e.g., age, location, hobbies, etc.), and identified trends and/or likes/dislikes of the user; and o media content 374 storing media content recorded by users of client device 104 and/or generated video data corresponding to the media content.
[0032] Each of the above identified elements may be stored in one or more of the previously mentioned memory devices, and corresponds to a set of instructions for performing a function described above. The above identified modules or programs (i.e., sets of instructions) need not be implemented as separate software programs, procedures, modules or data structures, and thus various subsets of these modules may be combined or otherwise re-arranged in various implementations. In some implementations, memory 306, optionally, stores a subset of the modules and data structures identified above. Furthermore, memory 306, optionally, stores additional modules and data structures not described above.
[0033] In some embodiments, at least some of the functions of the client-side module 102 are performed by the server-side module 106, and the corresponding sub-modules of these functions may be located within the server-side module 106 rather than the client-side module 102. For example, in some embodiments, converting module 346, generating module 348, synchronizing module 350, and/or cropping module 352, or media content 372, request handling module 360 and authenticating module 362 may be implemented at least in part on server system 108.
[0034] In some embodiments, at least some of the functions of the server-side module 106 are performed by the client-side module 102, and the corresponding sub-modules of these functions may be located within the client-side module 102 rather than the server-side module 106. For example, in some embodiments, converting module 224, generating module 226, synchronizing module 228, and/or cropping module 230, or media content database 114, request handling module 232 and authenticating module 234 may be implemented at least in part on server system 108. Server system 108 and client device 104 shown in Figures 2-3, respectively, are merely illustrative, and different configurations of the modules for implementing the functions described herein are possible in various embodiments.
[0035] Attention is now directed towards embodiments of user interfaces and associated processes that may be implemented on a client device 104 with one or more speakers 402, one or more microphones 404, and a touch screen 406 (sometimes also herein called a "touch screen display") enabled to receive one or more contacts and display information (e.g., media content, websites and web pages thereof, and/or user interfaces for application(s) 326). Figures 4A-4E illustrate exemplary user interfaces for recording presented media content in accordance with some embodiments.
[0036] Although some of the examples that follow will be given with reference to inputs on touch screen 406 (where the touch sensitive surface and the display are combined), in some embodiments, the device detects inputs on a touch- sensitive surface that is separate from the display. In some embodiments, the touch sensitive surface has a primary axis that corresponds to a primary axis on the display. In accordance with these embodiments, the device detects contacts with the touch-sensitive surface at locations that correspond to respective locations on the display. In this way, user inputs detected by the device on the touch-sensitive surface are used by the device to manipulate the user interface on the display of the device when the touch- sensitive surface is separate from the display. It should be understood that similar methods are, optionally, used for other user interfaces described herein.
[0037] Additionally, while the following examples are given primarily with reference to contacts (e.g., finger inputs such as finger contacts, finger tap gestures, finger swipe gestures, etc.), it should be understood that, in some embodiments, one or more of the contacts are replaced with input from another input device (e.g., a mouse-based, stylus-based, or physical button-based input). For example, a swipe gesture is, optionally, replaced with a mouse click (e.g., instead of a contact) followed by movement of the cursor along the path of the swipe (e.g., instead of movement of the contact). As another example, a tap gesture is, optionally, replaced with a mouse click while the cursor is located over the location of the tap gesture (e.g., instead of detection of the contact followed by ceasing to detect the contact) or depression of a physical button. Similarly, when multiple user inputs are simultaneously detected, it should be understood that multiple computer mice are, optionally, used simultaneously, or a mouse and finger contacts are, optionally, used simultaneously.
[0038] Figures 4A-4E show interface 408 displayed on client device 104 (e.g., a mobile phone); however, one skilled in the art will appreciate that the user interfaces shown in Figures 4A- 4E may be implemented on other similar computing devices. The user interfaces in Figures 4A-4E are used to illustrate the processes described herein, including the process described with respect to Figures 5-7 and 8A-8B.
[0039] For example, client device 104 initiates execution of a recording program (e.g., automatically upon start-up/power-on of client device 104, or, in response, to a user action/input). Continuing with this example, thereafter, the user of client device 104 interacts with one or more other programs executed in the foreground (e.g., operating system 316 and application(s) 326 such as games, widgets, and/or the like) while the recording program executes as a background process. As discussed below with reference to Figures 4A-4E, one of the one or more other programs executed in the foreground is a Mahjong game played by the user of client device 104 while the recording program executes as a background process.
[0040] Figure 4A illustrates client device 104 displaying an interface for a Mahjong game
(e.g., one of application(s) 326, Figure 3) on touch screen 406. In Figure 4A, there are four players 412 playing the Mahjong game. For example, player 412-a is playing an online Mahjong game on client device 104 with other players (e.g., remotely located human players 412-b, 412-c, and 412-d) via a game server (e.g., one of external service(s) 122, Figure 1) that coordinates play of the online Mahjong game for players 412. In Figure 4A, each of players 412 is associated with a set of tiles 414 and is represented by a corresponding in-game avatar (e.g., initials, player number, portrait, selected image, or automatically assigned or default image). Figure 4 A shows a first state of a round of the online Mahjong game where player 412-b started the round playing tile 418 and player 412-c followed by playing tile 420.
[0041] Figure 4A also illustrates client device 104 displaying toggle record affordance 422 and a toggle pause 424 affordance. In some embodiments, toggle record affordance 422 and toggle pause 424 affordance are independent of the Mahjong game being executed by client device 104 as a foreground process. In some embodiments, toggle record affordance 422 and toggle pause 424 corresponds to the recording program that runs as a background process while the user plays the Mahjong game. In some embodiments, toggle record affordance 422, when activated (e.g., by a contact or a tap gesture), causes the recording program to start or terminate recording the media content presented by client device 104 for the Mahjong game depending on whether the recording program is currently recording the media content, and toggle pause 424 affordance, when activated (e.g., by a contact or a tap gesture), causes the recording program to pause or un-pause recording the media content presented by client device 104 for the Mahjong game depending on whether the recording program is currently paused.
[0042] Figure 4B illustrates client device 104 displaying an interface for a Mahjong game
(e.g., one of application(s) 326, Figure 3) on touch screen 406. Figure 4B also illustrates client device 104 detecting a first gesture on touch screen 406 with contacts 426-a, 426-b, 426-c, and 426-d (e.g., a four-finger swipe gesture in a substantially bottom-to-top (i.e., upwards) direction). For example, as the user plays the Mahjong game, the recording program monitors user inputs detected by client device 104 for predetermined gestures directed to the recording program while executing as a background process. In Figure 4B, when client device 104 detects the first gesture with contacts 426- a, 426-b, 426-c, and 426-d, the recording program determines that the first gesture is a predetermined gesture for starting to record media content. For example, in response to detecting the first gesture, the recording program starts recording the user's interactions with the Mahjong game and also the media content presented by client device 104 for the Mahjong game (e.g., the displayed UI and audio data for the other programs, and (optionally) external audio data).
[0043] Figure 4C illustrates client device 104 displaying indicator 428 corresponding to the recording program overlaid on the user interface for the Mahjong game and independent of the Mahjong game being executed by client device 104 as a foreground process. In Figure 4C, indicator 428 indicates that the recording program is currently recording media content (i.e., the recording program is "live"). Figure 4C also illustrates client device 104 detecting a second gesture on touch screen 406 with contacts 430-a and 430-b (e.g., a two-finger swipe gesture in a substantially top-to- bottom (i.e., downwards) direction). In Figure 4C, when client device 104 detects the second gesture with contacts 430-a and 430-b, the recording program determines that the second gesture is a predetermined gesture for pausing the recording of the media content. For example, in response to detecting the second gesture, the recording program pauses the recording.
[0044] Figure 4D illustrates client device 104 displaying indicator 428 corresponding to the recording program overlaid on the user interface for the Mahjong game, which indicates that the recording program is currently paused. Figure 4D also illustrates client device 104 detecting a third gesture on touch screen 406 with contacts 432-a and 432-b (e.g., a two-finger swipe gesture in a substantially bottom-to-top (i.e., upwards) direction). In Figure 4D, when client device 104 detects the third gesture with contacts 432-a and 432-b, the recording program determines that the third gesture is a predetermined gesture for un-pausing the recording. For example, in response to detecting the third gesture, the recording program un-pauses the recording and re-starts recording the user's interactions with the Mahjong game and also the media content presented by client device 104 for the Mahjong game (e.g., the displayed UI and audio data for the other programs, and (optionally) external audio data).
[0045] Figure 4E illustrates client device 104 displaying indicator 428 corresponding to the recording program overlaid on the user interface for the Mahjong game, which indicates that the recording program is currently recording media content (i.e., the recording program is "live"). Figure 4E also illustrates client device 104 detecting a fourth gesture on touch screen 406 with contacts 434- a, 434-b, 434-c, and 434-d (e.g., a four-finger swipe gesture in a substantially top-to-bottom (i.e., downwards) direction). In Figure 4E, when client device 104 detects the fourth gesture with contacts 434-a, 434-b, 434-c, and 434-d, the recording program determines that the fourth gesture is a predetermined gesture for terminating the recording. For example, in response to detecting the fourth gesture, the recording program terminates the recording.
[0046] Figure 5 illustrates a flowchart diagram of a method 500 of screen recording in accordance with some embodiments. In some embodiments, method 500 is performed by a device with one or more processors and memory. For example, in some embodiments, method 500 is performed by a client device 104 (Figures 1 and 3) or a component thereof (e.g., client-side module 102, Figures 1 and 3). In some embodiments, method 500 is governed by instructions that are stored in a non-transitory computer readable storage medium and the instructions are executed by one or more processors of the server system. For example, the device is one of a smart phone, a tablet computer, an ebook reader, a Moving Picture Experts Group Audio Layer III (MP3) player, a Moving Picture Experts Group Audio Layer IV version (MP4) player, a laptop portable computer, or the like.
[0047] In some embodiments, a developer creates an application for performing screen recording, where the application is configured as a program suitable for running as a background process. For example, the application may be created in a specific integrated development environment (IDE), where the IDE is an application used for providing a program development environment, and generally includes a code editor, a compiler, a debugger, and a graphical user interface tool, which is an integrated service software development kit integrating a code writing function, an analysis function, a compiling function, a debugging function, and the like. [0048] Generally, a restricted operating system (e.g., iOS) does not allow the application used for screen recording to run in the background. For example, an application running in the background enters a suspended state after a short period of time (e.g., 600 seconds at most), where the application no longer executes any code. In some circumstances, if a system is running low on memory resources, the system terminates suspended applications to release memory for applications running in the foreground. For example, only when the suspended application is re-entered (or brought into the foreground) does the application switch from the suspended state to a normal state to execute the code.
[0049] The device initiates (502) a recording program (sometimes also herein called a
"recording application") as a background process. For example, the recording program is
automatically initiated as a background process upon start-up/power-on of the device or the recording program is initiated by the user of the device.
[0050] The device starts (504) a recording thread to obtain, in real time, binary data corresponding to media content presented for current foreground program operations executed on the device, stores the binary data in a memory, and converts the binary data into pixel data. In this embodiment, a main thread corresponding to a recording program is responsible for recording foreground program operations executed on the device while the recording program in the background. In some embodiments, the recording program starts the recording thread in response to a detecting a first trigger (e.g., a first user input or gesture directed to the recording program). When the recording starts, the recording program starts the recording thread to obtain the original binary data displayed on the screen of the device in real time (i.e., current foreground program operations) through a private application programming interface (API) and store the original binary data in the memory. For example, the private API refers to an API located in a PrivateFrameworks framework.
[0051] The device terminates (506) the recording thread, and generates a video file according to the pixel data. In some embodiments, the recording program terminates the recording thread in response to a detecting a second trigger (e.g., a second user input or gesture directed to the recording program). In this embodiment, the pixel data obtained in operation 504 is written in a video stream in real time as an image frame, and the video file is generated. For example, the format of the video file is one of MP4, 3GP, AVI, MPEG, and the like.
[0052] Therefore, according to method 500, binary data displayed on a screen is directly obtained by a recording thread and then converted into pixel data, and finally the pixel data is encoded to generate a video file, so as to record operations on a screen with high efficiency and wide application. Moreover, method 500 may be performed on a device which has not obtained root privileges of a system. [0053] It should be understood that the particular order in which the operations in Figure 5 have been described is merely exemplary and is not intended to indicate that the described order is the only order in which the operations could be performed. One of ordinary skill in the art would recognize various ways to reorder the operations described herein. Additionally, it should be noted that details of other processes described herein with respect to other methods described herein (e.g., methods 600, 700, and 800) are also applicable in an analogous manner to method 500 described above with respect to Figure 5.
[0054] Figure 6 illustrates a flowchart diagram of a method 600 of screen recording in accordance with some embodiments. In some embodiments, method 600 is performed by a device with one or more processors and memory. For example, in some embodiments, method 600 is performed by a client device 104 (Figures 1 and 3) or a component thereof (e.g., client-side module 102, Figures 1 and 3). In some embodiments, method 600 is governed by instructions that are stored in a non-transitory computer readable storage medium and the instructions are executed by one or more processors of the server system.
[0055] In some embodiments, a developer creates an application for performing screen recording, where the application is configured as a program suitable for running as a background process.
[0056] The device initiates (602) a recording program as a background process. For example, the recording program is automatically initiated as a background process upon start-up/power-on of the device or the recording program is initiated by the user of the device.
[0057] The device starts (604) a recording thread to obtain, in real time, binary data corresponding to media content presented for current foreground program operations executed on the device, store the binary data in a memory, and convert the binary data into pixel data. In this embodiment, a main thread corresponding to a recording program (sometimes also herein called a "recording application") is responsible for recording foreground program operations executed on the device while the recording program in the background. In some embodiments, the recording program starts the recording thread in response to a detecting a first trigger (e.g., a first user input or gesture directed to the recording program). When the recording starts, the recording program starts the recording thread to obtain the original binary data displayed on the screen of the device in real time (i.e., current foreground program operations) through a private application programming interface (API) and store the original binary data in the memory.
[0058] The device calls (606) a system API to record audio for the current foreground program operations executed on the device, and generates an audio file. [0059] The device terminates (608) the recording thread, and generates a video file according to the pixel data. In some embodiments, the recording program terminates the recording thread in response to a detecting a second trigger (e.g., a second user input or gesture directed to the recording program).
[0060] The device synchronizes (610) the video file with the audio file. Therefore, an audio file synchronous with the video file is generated while the video file is generated, and a user may directly play and view the video file, and hear audio synchronous with video.
[0061] It should be understood that the particular order in which the operations in Figure 6 have been described is merely exemplary and is not intended to indicate that the described order is the only order in which the operations could be performed. One of ordinary skill in the art would recognize various ways to reorder the operations described herein. Additionally, it should be noted that details of other processes described herein with respect to other methods described herein (e.g., methods 500, 700, and 800) are also applicable in an analogous manner to method 600 described above with respect to Figure 6.
[0062] Figure 7 illustrates a flowchart diagram of a method 700 of screen recording in accordance with some embodiments. In some embodiments, method 700 is performed by a device with one or more processors and memory. For example, in some embodiments, method 700 is performed by a client device 104 (Figures 1 and 3) or a component thereof (e.g., client-side module 102, Figures 1 and 3). In some embodiments, method 700 is governed by instructions that are stored in a non-transitory computer readable storage medium and the instructions are executed by one or more processors of the server system.
[0063] The device initiates (702) a recording program. For example, the recording program is automatically initiated as a background process upon start-up/power-on of the device or the recording program is initiated by the user of the device.
[0064] Specifically, in this embodiment, when the recording program is started, a main thread
(i.e., thread A) is started, and a user interface (UI) is displayed in the main thread, where the UI includes a UI component for starting and ending the recording (e.g., a start button and an end button).
[0065] The device detects (704) a first trigger. In some embodiments, the device detects the first trigger when the user of the device selects the start button in the UI for the recording program. In some embodiments, in response to detecting the first trigger, the device (i.e., the recording program) instructs a recording thread to start. In some embodiments, the recording thread includes an audio recording thread (i.e., thread B) and a screen recording thread (i.e., thread C) running in parallel. [0066] In response to detecting the first trigger, the device switches (706) the recording program to run in the background.
[0067] As part of the audio recording thread, the device records (708) audio data for the current foreground program operations executed on the device, and stores the audio data in a memory. In some embodiments, the recording program obtains the audio by calling a system API.
[0068] As part of the screen recording thread, the device obtains (710), in real time, binary data corresponding to media content presented for current foreground program operations executed on the device, and stores the binary data in the memory. For example, the binary data is obtained in real time by means of a private API (e.g., IOSurfaceCreate in the IOSurface framework) and placed in the memory.
[0069] As part of the screen recording thread, the device converts (712) the obtained original data into pixel data. In some embodiments, the original binary data in the memory is converted into the pixel data, so that the pixel data is conveniently written in a video stream as an image frame in real time.
[0070] As part of the screen recording thread, the device encodes (714) the pixel data, and generates a video. In some embodiments, the pixel data obtained in operation 712 is written and encoded in the video stream as an image frame in real time, and a video is generated.
[0071] The device detects (716) a second trigger. In one example, the device detects the second trigger when the user of the device selects the end button in UI of the recording program. In another example, the end button is overlaid on the screen, and the recording is terminated when the user of the device selects the end button. In a further example, the recording is terminated when the user of the device performs a predetermined gesture on the screen or actuates a combination or sequence of buttons such as pressing both a home button and a power button or the like.
[0072] In response to detecting the second trigger, the device (i.e., the recording program) instructs the recording thread to stop (e.g., threads B and C).
[0073] In response to the instruction, the device stops (718) obtaining the audio data and generates an audio file.
[0074] In response to the instruction, the device stops (720) obtaining the binary data, and generates a video file. For example, the format of the video file is one of MP4, 3GP, AVI, MPEG, or the like.
[0075] The device ends the recording thread by ending (722 and 724) the audio recording thread (i.e., thread B) and the screen recording thread (i.e., thread C).
[0076] Thereafter, the device synchronizes the video file with the audio file, and ends the main thread (726). Therefore, an audio file synchronous with the video file is generated while the video file is generated, and a user may directly play and view the video file, and hear audio synchronous with video.
[0077] As a practical example, method 700 may be applied to a debugging scenario whereby a tester may use the recording program to record a bug that is found. In this way, a subsequent developer is able to utilize the video file to conveniently reproduce the bug to make an improvement to a product. As another practical example, method 700 may be applied to a tutorial or demonstration scenario whereby a developer may use the recording program to record product features in order to generate a video file to conveniently publicize the product.
[0078] It should be understood that the particular order in which the operations in Figure 7 have been described is merely exemplary and is not intended to indicate that the described order is the only order in which the operations could be performed. One of ordinary skill in the art would recognize various ways to reorder the operations described herein. Additionally, it should be noted that details of other processes described herein with respect to other methods described herein (e.g., methods 500, 600, and 800 in Figures 5, 6, and 8A-8B) are also applicable in an analogous manner to method 700 described above with respect to Figure 7.
[0079] Figures 8A-8B illustrate a flowchart diagram of a method 800 of recording presented media content in accordance with some embodiments. In some embodiments, method 800 is performed by a device with one or more processors and memory. For example, in some embodiments, method 800 is performed by client device 104 (Figures 1 and 3) or a component thereof (e.g., client- side module 102, Figures 1 and 3). In some embodiments, method 800 is governed by instructions that are stored in a non-transitory computer readable storage medium and the instructions are executed by one or more processors of the server system. Optional operations are indicated by dashed lines (e.g., boxes with dashed-line borders).
[0080] In one example, the user of the device (e.g., client device 104, Figures 1 and 3) accesses a recording program (sometimes also herein called a "recording application") so as to initiate the recording program and also to start recording media content presented by client device 104. Thereafter, in this example, the user exits the recording program (e.g., by pressing a home button of the device) and interacts with other programs executed in the foreground while the recording program executes as a background process and records the user's interactions with the other programs and also the media content presented by client device 104 for the other programs (e.g., the displayed UI and audio data for the other programs, and (optionally) external audio data). Continuing with this example, the user re-accesses the recording program so as to stop recording media content presented by client device 104. [0081] In another example, the user of the device (e.g., client device 104, Figures 1 and 3) accesses the recording program so as to initiate the recording program. Thereafter, in this example, the user exits the recording program (e.g., by pressing a home button of the device) and interacts with other programs executed in the foreground while the recording program executes as a background process. Continuing with this example, the recording program monitors user inputs and detects a first user input directed to the recording program (e.g., a predetermined start recording gesture), and, in response to detecting the first user input, the recording program records the user's interactions with the other programs and also the media content presented by client device 104 for the other programs (e.g., the displayed UI and audio data for the other programs, and (optionally) external audio data). Continuing with this example, the recording program continues to monitor user inputs and detects a second user input directed to the recording program (e.g., a predetermined stop/terminate recording gesture), and, in response to detecting the second user input, the recording program stops recording media content presented by client device 104.
[0082] The device initiates (802) execution of a recording program. For example, the recording program is automatically initiated as a background process upon start-up/power-on of the device or the recording program is initiated by the user of the device as discussed in the above examples.
[0083] While maintaining continued execution of the recording program (804) in a background process of the device, the device controls (806) media content presented at the device in accordance with a plurality of foreground program operations executed by the device. For example, the user of client device 104 interacts with one or more other programs executed in the foreground (e.g., operating system 316 and application(s) 326 such as games, widgets, and/or the like) while the recording program executes as a background process. In Figures 4A-4E, one of the one or more other programs executed in the foreground is a Mahjong game played by the user of client device 104 while the recording program executes as a background process.
[0084] In some embodiments, while controlling media content presented at the device in accordance with the plurality of foreground program operations executed by the device, the device concurrently displays one or more affordances that are independent of the foreground program operations executed by the device, where the one or more affordances correspond to the recording program in the background process of the device. In some embodiments, in response to detecting a touch input on the display selecting one of the one or more affordances, the device (i.e., the recording program) detects a user input directed to the recording program. In Figure 4A, for example, client device 104 displays a toggle record affordance 422 and a toggle pause 424 affordance overlaid on the user interface for the Mahjong game. In Figure 4A, toggle record affordance 422 and toggle pause 424 affordance are independent of the Mahjong game being executed by client device 104 as a foreground process, and toggle record affordance 422 and toggle pause 424 correspond to the recording program that runs as a background process while the user plays the Mahjong game. In some embodiments, the one or more affordances are overlaid over the user interface of a program executed in the foreground and/or are located in position so as not to minimally interfere with the user interface of the program executed in the foreground.
[0085] While maintaining continued execution of the recording program (804) in a background process of the device, the device detects (808), via the recording program executing in the background process, a user input directed to the recording program. For example, the user input is a predetermined gesture (e.g., the first gesture with contacts 426-a, 426-b, 426-c, and 426-d in Figure 4B) recognizable by the recording program or selection of an affordance corresponding to the recording program that is overlaid on the media content provided based on the foreground program operations (e.g., toggle record affordance 422 in Figure 4A). In some embodiments, the input is for initiating actual recording of the media content.
[0086] In some embodiments, the user input is for pausing or otherwise influence the ongoing recording of the media content. In the scenario in which the user turns on the recording while the recording program is running in the foreground, and then sends the recording program to the background (e.g., by pressing the home button), the user input is for pausing the recording or terminating the recording. In the scenario in which the user does not start the actual recording when the recording program is first started in the foreground and then sent to the background, the input triggers the start of the actual recording. In this scenario, the user input is received and the actual recording is started after the recording program has been sent to the background, and when other programs (e.g., the home screen or other programs such as the Mahjong game in Figures 4A-4E) have been initiated and are running in the foreground.
[0087] In some embodiments, the device detects (810) the user input directed to the recording program by: detecting one or more user inputs; determining whether a respective user input of the one or more user inputs satisfies one or more predefined criteria; and, in accordance with a determination that the respective user input satisfies the one or more predefined criteria, identifying the respective user input as being directed to the recording program. Thus, the identified respective input is the detected user input. In some embodiments, the recording program detects all user inputs; however, the predefined criteria are satisfied when the recording program detects a predetermined input/gesture triggering the recording related operations (e.g., start, pause/resume, terminate, crop the output file, etc.). The detection may be accomplished by the recording program by monitoring the user inputs received by the operating system, and determining whether any one of the inputs matches the predefined criteria such as a contact detected at predetermined locations on the screen (e.g., upper right corner of the display), a predetermined path for the detected contact (e.g., a check mark shaped path), a predetermined number of contacts (e.g., a two-contact/finger gesture), a predetermined movement direction of contacts (e.g., substantially upwards or downwards), etc., or a combination thereof. For example, the predetermined gestures for starting and terminating the recording are distinct predetermined gestures. In another example, the predetermined gestures for starting and terminating the recording are the same predetermined gesture (i.e., toggle the recording on/off). For example, the predetermined gestures for pausing and un-pausing the recording are distinct predetermined gestures. In another example, the predetermined gestures for pausing and un-pausing the recording are the same predetermined gesture (i.e., toggle the paused recording on/off).
[0088] For example, in Figure 4B, when the device detects the first gesture with contacts
426-a, 426-b, 426-c, and 426-d, the recording program determines that the first gesture is a predetermined gesture for starting to record media content (e.g., a four-finger swipe gesture in a substantially bottom-to-top (i.e., upwards) direction). In another example, in Figure 4C, when the device detects the second gesture with contacts 430-a and 430-b, the recording program determines that the second gesture is a predetermined gesture for pausing the recording of the media content (e.g., a two-finger swipe gesture in a substantially top-to-bottom (i.e., downwards) direction). In another example, in Figure 4D, when the device detects the third gesture with contacts 432-a and 432-b, the recording program determines that the third gesture is a predetermined gesture for un- pausing the recording (e.g., a two-finger swipe gesture in a substantially bottom-to-top (i.e., upwards) direction). In another example, in Figure 4E, when the device detects the fourth gesture with contacts 434-a, 434-b, 434-c, and 434-d, the recording program determines that the fourth gesture is a predetermined gesture for terminating the recording (e.g., a four-finger swipe gesture in a substantially top-to-bottom (i.e., downwards) direction).
[0089] In response to detecting the user input, the device performs (812), via the recording program executing in the background process, one of: (1) starting (814) to record media content presented by the device in accordance with current foreground program operations executed by the device, (2) terminating (824) an ongoing recording operation of the recording program and generating a media file for the recorded media content, and (3) modifying (826) the ongoing recording operation of the recording program, or the media file for the recorded media content. In some embodiments, the recording program causes performance of one of the above three functions in response to detecting the user input. In some embodiments, the modifying function includes pausing the recording of the media content, recording the media content at a faster or slower speed, resuming the paused recording, and the like. In the scenario in which the user turns on the recording while the recording program is running in the foreground, and then sends the recording program to the background (e.g., by pressing the home button), the recording program pauses, un-pauses, or terminates the recording program while maintaining the recording program as a background process. Alternatively, in this scenario, the user input can be used to indicate to the recording program where to crop the recorded content when generating the output media file.
[0090] In some embodiments, the device records (816) media content by invoking a screen capture function of a respective operating system of the device while media content is presented at the device in accordance with current foreground program operations executed by the device. In some embodiments, the recording program or a component thereof (e.g., invoking module 342, Figure 3) invokes a screenshot function of the operating system (e.g., screen capture module 330, Figure 3) to capture a sequence of one or more images of the user interface corresponding to foreground program operations.
[0091] In some embodiments, the device records (818) the media content presented by the device by: obtaining binary data corresponding to I/O output for the current foreground program operations from an operating system of the device; and converting at least a portion of the obtained binary data into pixel data. In some embodiments, the recording program or a component thereof (e.g., obtaining module 344, Figure 3) obtains the media content by intercepting binary data (e.g., video and audio data corresponding to the foreground program) sent from the foreground program to presentation module 318 (Figure 3) for presentation to the user of client device 104 via one or more output devices 312 (e.g., the display and the one or more speakers). In some embodiments, the recording program or a component thereof (e.g., converting module 346, Figure 3) converts video data from the obtained binary data into pixel data. For example, the generated pixel data is stored in a buffer prior to operation 820.
[0092] In some embodiments, the device generates (820) video data for the media file for the recorded media content based at least in part on the pixel data. In some embodiments, the recording program or a component thereof (e.g., generating module 348, Figure 3) generates video data for the media content based at least in part on the pixel data. In some embodiments, audio from the current foreground program is also synchronized with the generated video data.
[0093] In some embodiments, the device synchronously records (822) external sound captured by a microphone of the device while recording the media content presented by the device. In some embodiments, the recording program or a component thereof (e.g., invoking module 342, Figure 3) invokes an external sound capturing function (e.g., external sound recording module 328, Figure 3) of the operating system to record via one or more input devices 314 (i.e., one or more microphones) of client device 104 external sound external audio data that is distinct from the audio data corresponding to the current foreground program. In some embodiments, the recording program invokes the external sound capturing function of the operating system after the recording of the media content is started by the user, and adds the sound recording to the recorded media content when generating the media file.
[0094] In some embodiments, the media content presented at the device for the current foreground program includes both audio and video data obtained by obtaining module 344 as discussed above in operation 818. In some embodiments, the recording program further incorporates sound in the outside environment (e.g., the user of the device narrating operations of or interactions with the current foreground program), which is recorded by another program distinct from the recording program (i.e., external sound recording module 328, Figure 3). In some embodiments, the recording program or a component thereof (e.g., synchronizing module 350, Figure 3) incorporates and synchronizes the recorded sound generated by external sound recording module 328 to
create/augment the sound track for the recorded media content while generating the output media file.
[0095] In some embodiments, the device modifies (828) the media file for the recorded media content by cropping one or more predefined portions from the recorded media content presented by the device. In some embodiments, the recording program or a component thereof (e.g., modifying module 354, Figure 3) delays the recording to discard the first M seconds after detecting a first user input to start the recording is detected. In this example, continue to record for N seconds after a second user input to terminate the recording is detected. In some embodiments, the recording program or a component thereof (e.g., modifying module 354, Figure 3) crops the first X seconds of the recording and the last Y seconds of the recording. In some embodiments, the video recording is be cropped, or started/stopped/paused at a different times from the voice recording; thus, the recording program or a component thereof (e.g., cropping module 352, Figure 3) processes the voice recording (e.g., crops or shifts the audio data) to match the video recording, before the final video is made.
[0096] In some embodiments, the device transmits (830), via the recording program
executing in the background process, the recorded media content to a server. In some embodiments, the recording program or a component thereof (e.g., transmitting module 358, Figure 3) streams (e.g., in real-time) the recorded media content presented by the device for the foreground program operations to a server (e.g., server system 108). In some embodiments, the server processes the media content to generate video data, and stores the media content and/or the corresponding generated video data. In some embodiments, the media content streamed to the server includes the binary data, which the server converts into pixel data. In some embodiments, the server generates the video data from the pixel data. In some embodiments, the media content is transmitted (i.e., streamed) to the server when the recording is longer than Z seconds or when the device is low on system resources. In some embodiments, a user of the device is able to view videos stored by the server (e.g., in media content database 114, Figures 1-2) when visiting a website or executing an app
corresponding to the recording program.
[0097] In some embodiments, the user of the device accesses the generated video data by executing the recording program and entering login credentials (e.g., a PIN code or user name and password). In accordance with a determination that the entered login credentials are verified, the user of the device is able to browse a library of video files stored on the device (e.g., in media content 374, Figure 3) and select one of the plurality of video files for presentation by the device.
[0098] It should be understood that the particular order in which the operations in Figures
8A-8B have been described is merely exemplary and is not intended to indicate that the described order is the only order in which the operations could be performed. One of ordinary skill in the art would recognize various ways to reorder the operations described herein. Additionally, it should be noted that details of other processes described herein with respect to other methods described herein (e.g., methods 500, 600, and 700) are also applicable in an analogous manner to method 800 described above with respect to Figures 8A-8B.
[0099] Figure 9 is a schematic structural diagram of a screen recording module 900 in accordance with some embodiments. In some embodiments, screen recording module 900 is executed at least in part on client device 104 and corresponds to client-side module 102 (Figures 1 and 3). In some embodiments, screen recording module 900 includes the following units:
[00100] In some embodiments, configuring module 902 is configured to create an application for performing screen recording (i.e., the recording program).
[00101] In some embodiments, recording module 904 is configured to start a recording thread.
In some embodiments, the recording thread includes an audio recording thread (i.e., thread B in Figure 7) and a screen recording thread (i.e., thread C in Figure 7) running in parallel. In some embodiments, the audio recording thread records audio data for the current foreground program operations executed on the device, and stores the audio data in a memory. In some embodiments, the screen recording thread: obtains, in real time, binary data corresponding to media content presented for current foreground program operations executed on the device, and stores the binary data in the memory; converts the obtained original data into pixel data; and encodes the pixel data to generate a video file.
[00102] In some embodiments, instructing module 906 is configured to instruct the recording thread to stop recording, and generates a video file according to the pixel data. In some embodiments, instructing module 906 is also configured to synchronize the video file with the audio file [00103] In some embodiments, screen recording apparatus 908 is (optionally) configured to directly obtain original binary data displayed on a screen, convert the original binary data into pixel data, and encode the pixel data to generate a video file.
[00104] While particular embodiments are described above, it will be understood it is not intended to limit the application to these particular embodiments. On the contrary, the application includes alternatives, modifications and equivalents that are within the spirit and scope of the appended claims. Numerous specific details are set forth in order to provide a thorough
understanding of the subject matter presented herein. But it will be apparent to one of ordinary skill in the art that the subject matter may be practiced without these specific details. In other instances, well-known methods, procedures, components, and circuits have not been described in detail so as not to unnecessarily obscure aspects of the embodiments.

Claims

Claims
1. A method of recording presented media content, comprising:
at a device with one or more processors and memory:
initiating execution of a recording program;
while maintaining continued execution of the recording program in a background process of the device:
controlling media content presented at the device in accordance with a plurality of foreground program operations executed by the device;
detecting, via the recording program executing in the background process, a user input directed to the recording program;
in response to detecting the user input, performing, via the recording program executing in the background process, one of:
(1) starting to record media content presented by the device in accordance with current foreground program operations executed by the device,
(2) terminating an ongoing recording operation of the recording program and generating a media file for the recorded media content, and
(3) modifying the ongoing recording operation of the recording program, or the media file for the recorded media content.
2. The method of claim 1, wherein detecting the user input further comprises:
detecting one or more user inputs;
determining whether a respective user input of the one or more user inputs satisfies one or more predefined criteria; and
in accordance with a determination that the respective user input satisfies the one or more predefined criteria, identifying the respective user input as being directed to the recording program.
3. The method of any of claims 1-2, wherein recording media content presented by the device in accordance with the current foreground program operations executed by the device further comprises: synchronously recording external sound captured by a microphone of the device while recording the media content presented by the device.
4. The method of any of claims 1-3, wherein recording media content further comprises:
invoking a screen capture function of a respective operating system of the device while media content is presented at the device in accordance with current foreground program operations executed by the device.
5. The method of any of claims 1-3, wherein recording media content presented by the device in accordance with the current foreground program operations executed by the device further comprises: obtaining binary data corresponding to I/O output for the current foreground program operations from an operating system of the device; and
converting at least a portion of the obtained binary data into pixel data.
6. The method of claim 5, further comprising:
generating video data for the media file for the recorded media content based at least in part on the pixel data.
7. The method of any of claims 1-6, further comprising:
transmitting, via the recording program executing in the background process, the recorded media content to a server.
8. The method of any of claims 1-7, wherein modifying the media file for the recorded media content further comprises:
cropping one or more predefined portions from the recorded media content presented by the device.
9. A device, comprising:
one or more processors; and
memory storing one or more programs to be executed by the one or more processors, the one or more programs comprising instructions for:
initiating execution of a recording program;
while maintaining continued execution of the recording program in a background process of the device:
controlling media content presented at the device in accordance with a plurality of foreground program operations executed by the device;
detecting, via the recording program executing in the background process, a user input directed to the recording program;
in response to detecting the user input, performing, via the recording program executing in the background process, one of:
(1) starting to record media content presented by the device in accordance with current foreground program operations executed by the device,
(2) terminating an ongoing recording operation of the recording program and generating a media file for the recorded media content, and
(3) modifying the ongoing recording operation of the recording program, or the media file for the recorded media content.
10. The device of claim 9, wherein detecting the user input further comprises:
detecting one or more user inputs;
determining whether a respective user input of the one or more user inputs satisfies one or more predefined criteria; and
in accordance with a determination that the respective user input satisfies the one or more predefined criteria, identifying the respective user input as being directed to the recording program.
11. The device of any of claims 9-10, wherein recording media content presented by the device in accordance with the current foreground program operations executed by the device further comprises: synchronously recording external sound captured by a microphone of the device while recording the media content presented by the device.
12. The device of any of claims 9-11, wherein recording media content presented by the device in accordance with the current foreground program operations executed by the device further comprises: obtaining binary data corresponding to I/O output for the current foreground program operations from an operating system of the device; and
converting at least a portion of the obtained binary data into pixel data.
13. The device of claim 12, wherein the one or more programs further comprise instructions for: generating video data for the media file for the recorded media content based at least in part on the pixel data.
14. The device of any of claims 9-13, wherein the one or more programs further comprise instructions for:
transmitting, via the recording program executing in the background process, the recorded media content to a server.
15. A non-transitory computer readable storage medium storing one or more programs, the one or more programs comprising instructions, which, when executed by a device with one or more processors, cause the device to perform operations comprising:
initiating execution of a recording program;
while maintaining continued execution of the recording program in a background process of the device:
controlling media content presented at the device in accordance with a plurality of foreground program operations executed by the device;
detecting, via the recording program executing in the background process, a user input directed to the recording program;
in response to detecting the user input, performing, via the recording program executing in the background process, one of: (1) starting to record media content presented by the device in accordance with current foreground program operations executed by the device,
(2) terminating an ongoing recording operation of the recording program and generating a media file for the recorded media content, and
(3) modifying the ongoing recording operation of the recording program, or the media file for the recorded media content.
16. The non-transitory computer readable storage medium of claim 15, wherein detecting the user input further comprises:
detecting one or more user inputs;
determining whether a respective user input of the one or more user inputs satisfies one or more predefined criteria; and
in accordance with a determination that the respective user input satisfies the one or more predefined criteria, identifying the respective user input as being directed to the recording program.
17. The non-transitory computer readable storage medium of any of claims 15-16, wherein recording media content presented by the device in accordance with the current foreground program operations executed by the device further comprises:
synchronously recording external sound captured by a microphone of the device while recording the media content presented by the device.
18. The non-transitory computer readable storage medium of any of claims 15-17, wherein recording media content presented by the device in accordance with the current foreground program operations executed by the device further comprises:
obtaining binary data corresponding to I/O output for the current foreground program operations from an operating system of the device; and
converting at least a portion of the obtained binary data into pixel data.
19. The non-transitory computer readable storage medium of claim 18, wherein the instructions cause the device to perform operations further comprising:
generating video data for the media file for the recorded media content based at least in part on the pixel data.
20. The non-transitory computer readable storage medium of any of claims 15-19, wherein the instructions cause the device to perform operations further comprising:
transmitting, via the recording program executing in the background process, the recorded media content to a server.
PCT/CN2014/085273 2013-08-30 2014-08-27 Method and system for controlling process for recording media content WO2015027912A1 (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN201310389063.6 2013-08-30
CN201310389063.6A CN104424022B (en) 2013-08-30 2013-08-30 Screen recording method and device

Publications (1)

Publication Number Publication Date
WO2015027912A1 true WO2015027912A1 (en) 2015-03-05

Family

ID=52585595

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/CN2014/085273 WO2015027912A1 (en) 2013-08-30 2014-08-27 Method and system for controlling process for recording media content

Country Status (2)

Country Link
CN (1) CN104424022B (en)
WO (1) WO2015027912A1 (en)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107637073A (en) * 2015-06-07 2018-01-26 苹果公司 Videograph and playback
US10659405B1 (en) 2019-05-06 2020-05-19 Apple Inc. Avatar integration with multiple applications
CN113064533A (en) * 2021-04-02 2021-07-02 南京维沃软件技术有限公司 Control method and control device for electronic equipment
US11054973B1 (en) 2020-06-01 2021-07-06 Apple Inc. User interfaces for managing media
US11103161B2 (en) 2018-05-07 2021-08-31 Apple Inc. Displaying user interfaces associated with physical activities
US11321731B2 (en) 2015-06-05 2022-05-03 Apple Inc. User interface for loyalty accounts and private label accounts
US11580608B2 (en) 2016-06-12 2023-02-14 Apple Inc. Managing contact information for communication applications

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104898881A (en) * 2015-06-05 2015-09-09 杭州国文科技有限公司 Novel electronic notebook device
CN105049916B (en) * 2015-06-30 2019-03-01 努比亚技术有限公司 A kind of video recording method and device
CN106708612A (en) * 2015-11-18 2017-05-24 中兴通讯股份有限公司 Audio recording realization method and terminal
CN105704539A (en) * 2016-02-15 2016-06-22 努比亚技术有限公司 Video sharing device and video sharing method
CN105749550A (en) * 2016-02-24 2016-07-13 戴佳佳 Mobile game video-recording method for iOS system
CN107346284B (en) * 2016-05-05 2020-10-27 腾讯科技(深圳)有限公司 Application program detection method and detection device
CN106055239B (en) * 2016-06-02 2019-10-29 北京金山安全软件有限公司 screen recording method and device
CN107195314B (en) * 2017-05-04 2018-07-24 腾讯科技(深圳)有限公司 The method for recording and device of audio data
CN107105331A (en) * 2017-06-02 2017-08-29 浪潮金融信息技术有限公司 Screen recording method and device, computer-readable recording medium, terminal
CN107426606B (en) * 2017-06-26 2020-07-24 联想(北京)有限公司 Screen recording method and device, electronic equipment and system
CN107835452A (en) * 2017-10-17 2018-03-23 广东欧珀移动通信有限公司 Data processing method and related product
CN110929249B (en) * 2019-11-22 2023-03-24 北京博睿宏远数据科技股份有限公司 Screen recording method, device, equipment and storage medium for automatic test
CN111402933B (en) * 2020-03-04 2022-01-21 Oppo广东移动通信有限公司 Audio recording method, device, storage medium and related equipment
CN112153436B (en) * 2020-09-03 2022-10-18 Oppo广东移动通信有限公司 Screen recording method, device, equipment and storage medium
CN112565873A (en) * 2020-12-01 2021-03-26 梦想合力(北京)科技有限公司 Screen recording method and device, equipment and storage medium
CN113473214B (en) * 2021-03-25 2023-05-02 统信软件技术有限公司 Screen recording method and device, computing equipment and readable storage medium

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102012818A (en) * 2010-12-01 2011-04-13 广东威创视讯科技股份有限公司 Screen recording method and device
CN102141957A (en) * 2010-10-21 2011-08-03 华为技术有限公司 Auxiliary test method, device and system for remote real machine
US20120098998A1 (en) * 2010-10-20 2012-04-26 Samsung Electronics Co. Ltd. Method for combining files and mobile device adapted thereto
CN102547194A (en) * 2011-12-13 2012-07-04 广东威创视讯科技股份有限公司 Screen recording device
CN102834805A (en) * 2012-03-14 2012-12-19 华为技术有限公司 Screen recording method, screen recording control method and device
CN203072077U (en) * 2012-12-28 2013-07-17 上海良讯科技有限公司 Conference site on-line recording and broadcasting system

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
MXPA06003875A (en) * 2003-10-10 2006-07-03 Koninkl Philips Electronics Nv Java lifecycle model for bd-discs.
CN101609401B (en) * 2009-07-02 2012-05-02 深圳市万兴软件有限公司 Non-interference screen recording method and system thereof
TWI597662B (en) * 2012-01-30 2017-09-01 晨星半導體股份有限公司 Storage medium in television system and method for managing applications therein
CN102722373B (en) * 2012-06-01 2016-05-11 厦门游家网络有限公司 Flash painting software records the method for player's painting process

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120098998A1 (en) * 2010-10-20 2012-04-26 Samsung Electronics Co. Ltd. Method for combining files and mobile device adapted thereto
CN102141957A (en) * 2010-10-21 2011-08-03 华为技术有限公司 Auxiliary test method, device and system for remote real machine
CN102012818A (en) * 2010-12-01 2011-04-13 广东威创视讯科技股份有限公司 Screen recording method and device
CN102547194A (en) * 2011-12-13 2012-07-04 广东威创视讯科技股份有限公司 Screen recording device
CN102834805A (en) * 2012-03-14 2012-12-19 华为技术有限公司 Screen recording method, screen recording control method and device
CN203072077U (en) * 2012-12-28 2013-07-17 上海良讯科技有限公司 Conference site on-line recording and broadcasting system

Cited By (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11321731B2 (en) 2015-06-05 2022-05-03 Apple Inc. User interface for loyalty accounts and private label accounts
US11734708B2 (en) 2015-06-05 2023-08-22 Apple Inc. User interface for loyalty accounts and private label accounts
US10271084B2 (en) 2015-06-07 2019-04-23 Apple Inc. Video recording and replay
CN107637073B (en) * 2015-06-07 2020-11-13 苹果公司 Video recording and playback
CN107637073A (en) * 2015-06-07 2018-01-26 苹果公司 Videograph and playback
US11580608B2 (en) 2016-06-12 2023-02-14 Apple Inc. Managing contact information for communication applications
US11922518B2 (en) 2016-06-12 2024-03-05 Apple Inc. Managing contact information for communication applications
US11103161B2 (en) 2018-05-07 2021-08-31 Apple Inc. Displaying user interfaces associated with physical activities
US10659405B1 (en) 2019-05-06 2020-05-19 Apple Inc. Avatar integration with multiple applications
US11054973B1 (en) 2020-06-01 2021-07-06 Apple Inc. User interfaces for managing media
US11330184B2 (en) 2020-06-01 2022-05-10 Apple Inc. User interfaces for managing media
US11617022B2 (en) 2020-06-01 2023-03-28 Apple Inc. User interfaces for managing media
CN113064533A (en) * 2021-04-02 2021-07-02 南京维沃软件技术有限公司 Control method and control device for electronic equipment
CN113064533B (en) * 2021-04-02 2023-04-07 南京维沃软件技术有限公司 Control method and control device for electronic equipment

Also Published As

Publication number Publication date
CN104424022B (en) 2019-03-29
CN104424022A (en) 2015-03-18

Similar Documents

Publication Publication Date Title
WO2015027912A1 (en) Method and system for controlling process for recording media content
CN107029429B (en) System, method, and readable medium for implementing time-shifting tutoring for cloud gaming systems
CN107050858B (en) Multi-user demonstration streaming service for cloud games
US10726068B2 (en) App processing method and apparatus
US20180160075A1 (en) Automatic Camera Selection
US9451043B2 (en) Remote virtualization of mobile apps
EP2867849B1 (en) Performance analysis for combining remote audience responses
US20150264303A1 (en) Stop Recording and Send Using a Single Action
US20150082239A1 (en) Remote Virtualization of Mobile Apps with Transformed Ad Target Preview
US9749585B2 (en) Highlighting unread messages
WO2018157812A1 (en) Method and apparatus for implementing video branch selection and playback
US20170324998A1 (en) Method for playing video, client, and computer storage medium
CN110647303A (en) Multimedia playing method, device, storage medium and electronic equipment
WO2016033401A1 (en) Systems and methods for picture-in-picture video conference functionality
US20190246064A1 (en) Automatic camera selection
CN110166842B (en) Video file operation method and device and storage medium
US11900551B2 (en) Creating cloud-hosted, streamed augmented reality experiences with low perceived latency
CN112188267B (en) Video playing method, device and equipment and computer storage medium
US20150264307A1 (en) Stop Recording and Send Using a Single Action
WO2015142690A1 (en) Highlighting univiewed video messages
WO2017113708A1 (en) Video playback method and device
US20150264309A1 (en) Playback of Interconnected Videos
US20150264305A1 (en) Playback of Interconnected Videos
US20130143657A1 (en) Input Mapping Regions
EP3525471A1 (en) Systems and methods for providing product information during a live broadcast

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 14839814

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

32PN Ep: public notification in the ep bulletin as address of the adressee cannot be established

Free format text: NOTING OF LOSS OF RIGHTS PURSUANT TO RULE 112(1) EPC , EPO FORM 1205A DATED 05-08-16

122 Ep: pct application non-entry in european phase

Ref document number: 14839814

Country of ref document: EP

Kind code of ref document: A1