Audio/Video recorder.
More...
#include <inttypes.h>
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
#include "mutex.h"
#include "refcount.h"
Go to the source code of this file.
Audio/Video recorder.
Audio/Video recorder (headers)
- Author
- Lorenzo Miniero loren.nosp@m.zo@m.nosp@m.eetec.nosp@m.ho.c.nosp@m.om
- Copyright
- GNU General Public License v3 Implementation of a simple recorder utility that plugins can make use of to record audio/video frames to a Janus file. This file just saves RTP frames in a structured way, so that they can be post-processed later on to get a valid container file (e.g., a .opus file for Opus audio or a .webm file for VP8 video) and keep things simpler on the plugin and core side. Check the Recordings documentation for more details.
- Note
- If you want to record both audio and video, you'll have to use two different recorders. Any muxing in the same container will have to be done in the post-processing phase.
Core
◆ janus_recorder
Structure that represents a recorder.
◆ janus_recorder_medium
Media types we can record.
◆ janus_recorder_medium
Media types we can record.
Enumerator |
---|
JANUS_RECORDER_AUDIO | |
JANUS_RECORDER_VIDEO | |
JANUS_RECORDER_DATA | |
◆ janus_recorder_close()
Close the recorder.
- Parameters
-
- Returns
- 0 in case of success, a negative integer otherwise
◆ janus_recorder_create()
janus_recorder* janus_recorder_create |
( |
const char * |
dir, |
|
|
const char * |
codec, |
|
|
const char * |
filename |
|
) |
| |
Create a new recorder.
- Note
- If no target directory is provided, the current directory will be used. If no filename is passed, a random filename will be used.
- Parameters
-
[in] | dir | Path of the directory to save the recording into (will try to create it if it doesn't exist) |
[in] | codec | Codec the packets to record are encoded in ("vp8", "opus", "h264", "g711", "vp9") |
[in] | filename | Filename to use for the recording |
- Returns
- A valid janus_recorder instance in case of success, NULL otherwise
◆ janus_recorder_create_full()
janus_recorder* janus_recorder_create_full |
( |
const char * |
dir, |
|
|
const char * |
codec, |
|
|
const char * |
fmtp, |
|
|
const char * |
filename |
|
) |
| |
Create a new recorder with additional info.
- Note
- This is to allow adding more arguments to janus_recorder_create, but still keep janus_recorder_create in place for backwards compatibility.
- Parameters
-
[in] | dir | Path of the directory to save the recording into (will try to create it if it doesn't exist) |
[in] | codec | Codec the packets to record are encoded in ("vp8", "opus", "h264", "g711", "vp9") |
[in] | fmtp | Codec-specific details (e.g., the H.264 or VP9 profile) |
[in] | filename | Filename to use for the recording |
- Returns
- A valid janus_recorder instance in case of success, NULL otherwise
◆ janus_recorder_deinit()
void janus_recorder_deinit |
( |
void |
| ) |
|
De-initialize the recorder code.
◆ janus_recorder_destroy()
Destroy the recorder instance.
- Parameters
-
◆ janus_recorder_encrypted()
Mark this recorder as end-to-end encrypted (e.g., via Insertable Streams)
- Note
- This will only be possible BEFORE the first frame is written, as it needs to be reflected in the .mjr header: doing this after that will return an error. Also notice that an encrypted recording will NOT be processable with
janus-pp-rec
out of the box, since the post-processor will not have access to unencrypted media
- Parameters
-
- Returns
- 0 in case of success, a negative integer otherwise
◆ janus_recorder_init()
void janus_recorder_init |
( |
gboolean |
tempnames, |
|
|
const char * |
extension |
|
) |
| |
Initialize the recorder code.
- Parameters
-
[in] | tempnames | Whether the filenames should have a temporary extension, while saving, or not |
[in] | extension | Extension to add in case tempnames is true |
◆ janus_recorder_save_frame()
int janus_recorder_save_frame |
( |
janus_recorder * |
recorder, |
|
|
char * |
buffer, |
|
|
uint |
length |
|
) |
| |
Save an RTP frame in the recorder.
- Parameters
-
[in] | recorder | The janus_recorder instance to save the frame to |
[in] | buffer | The frame data to save |
[in] | length | The frame data length |
- Returns
- 0 in case of success, a negative integer otherwise