forked from Mirrors/freeswitch
FS-7519: auto set some values on avformat recording
This commit is contained in:
parent
86cbaa02c1
commit
700a18ae6b
@ -225,6 +225,7 @@ static switch_status_t add_stream(MediaStream *mst, AVFormatContext *fc, AVCodec
|
||||
switch_status_t status = SWITCH_STATUS_FALSE;
|
||||
int threads = switch_core_cpu_count();
|
||||
int buffer_bytes = 2097152; /* 2 mb */
|
||||
int fps = 15;
|
||||
|
||||
/* find the encoder */
|
||||
*codec = avcodec_find_encoder(codec_id);
|
||||
@ -271,13 +272,21 @@ static switch_status_t add_stream(MediaStream *mst, AVFormatContext *fc, AVCodec
|
||||
if (mm->vbuf) {
|
||||
buffer_bytes = mm->vbuf;
|
||||
}
|
||||
fps = mm->fps;
|
||||
|
||||
if (mm->vw && mm->vh) {
|
||||
mst->width = mm->vw;
|
||||
mst->height = mm->vh;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
c->codec_id = codec_id;
|
||||
c->bit_rate = 1000000;
|
||||
|
||||
/* Resolution must be a multiple of two. */
|
||||
c->width = mst->width;
|
||||
c->height = mst->height;
|
||||
c->bit_rate = switch_calc_bitrate(c->width, c->height, 2, fps) * 1024;
|
||||
mst->st->time_base.den = 1000;
|
||||
mst->st->time_base.num = 1;
|
||||
c->time_base.den = 1000;
|
||||
@ -297,7 +306,7 @@ static switch_status_t add_stream(MediaStream *mst, AVFormatContext *fc, AVCodec
|
||||
|
||||
if (mm) {
|
||||
if (mm->vb) {
|
||||
c->bit_rate = mm->vb * 1000;
|
||||
c->bit_rate = mm->vb * 1024;
|
||||
}
|
||||
if (mm->keyint) {
|
||||
c->gop_size = mm->keyint;
|
||||
|
@ -530,8 +530,14 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_record_file(switch_core_session_t *se
|
||||
}
|
||||
|
||||
if (switch_channel_test_flag(channel, CF_VIDEO)) {
|
||||
switch_vid_params_t vid_params = { 0 };
|
||||
|
||||
file_flags |= SWITCH_FILE_FLAG_VIDEO;
|
||||
switch_channel_set_flag_recursive(channel, CF_VIDEO_DECODED_READ);
|
||||
fh->mm.fps = switch_core_media_get_video_fps(session);
|
||||
switch_core_media_get_vid_params(session, &vid_params);
|
||||
fh->mm.vw = vid_params.width;
|
||||
fh->mm.vh = vid_params.height;
|
||||
}
|
||||
|
||||
if (switch_core_file_open(fh, file, fh->channels, read_impl.actual_samples_per_second, file_flags, NULL) != SWITCH_STATUS_SUCCESS) {
|
||||
|
Loading…
Reference in New Issue
Block a user