mirror of
https://github.com/signalwire/freeswitch.git
synced 2025-03-05 18:13:27 +00:00
FS-10209: [freeswitch-core,mod_av] Add auth params to file handles
This commit is contained in:
parent
ae1cdced23
commit
38621e47ba
@ -329,6 +329,11 @@ typedef struct switch_mm_s {
|
|||||||
switch_video_profile_t vprofile;
|
switch_video_profile_t vprofile;
|
||||||
switch_video_encode_speed_t vencspd;
|
switch_video_encode_speed_t vencspd;
|
||||||
uint8_t try_hardware_encoder;
|
uint8_t try_hardware_encoder;
|
||||||
|
int scale_w;
|
||||||
|
int scale_h;
|
||||||
|
switch_img_fmt_t fmt;
|
||||||
|
char *auth_username;
|
||||||
|
char *auth_password;
|
||||||
} switch_mm_t;
|
} switch_mm_t;
|
||||||
|
|
||||||
/*! an abstract representation of a file handle (some parameters based on compat with libsndfile) */
|
/*! an abstract representation of a file handle (some parameters based on compat with libsndfile) */
|
||||||
|
@ -906,7 +906,7 @@ SWITCH_STANDARD_APP(record_av_function)
|
|||||||
char codec_str[256];
|
char codec_str[256];
|
||||||
const AVCodecDescriptor *desc;
|
const AVCodecDescriptor *desc;
|
||||||
|
|
||||||
if (!strncmp(data, "rtmp://", 7)) {
|
if (!strncmp(data, "rtmp://", 7) || !strncmp(data, "rtsp://", 7)) {
|
||||||
fmt->video_codec = AV_CODEC_ID_H264;
|
fmt->video_codec = AV_CODEC_ID_H264;
|
||||||
fmt->audio_codec = AV_CODEC_ID_AAC;
|
fmt->audio_codec = AV_CODEC_ID_AAC;
|
||||||
}
|
}
|
||||||
@ -1694,9 +1694,20 @@ static switch_status_t av_file_open(switch_file_handle_t *handle, const char *pa
|
|||||||
return SWITCH_STATUS_GENERR;
|
return SWITCH_STATUS_GENERR;
|
||||||
} else if (handle->stream_name && (!strcasecmp(handle->stream_name, "rtmp") || !strcasecmp(handle->stream_name, "youtube"))) {
|
} else if (handle->stream_name && (!strcasecmp(handle->stream_name, "rtmp") || !strcasecmp(handle->stream_name, "youtube"))) {
|
||||||
format = "flv";
|
format = "flv";
|
||||||
|
|
||||||
|
// meh really silly format for the user / pass libav.....
|
||||||
|
if (handle->mm.auth_username && handle->mm.auth_password) {
|
||||||
|
switch_snprintf(file, sizeof(file), "rtmp://%s pubUser=%s pubPasswd=%s flashver=FMLE/3.0", path, handle->mm.auth_username, handle->mm.auth_password);
|
||||||
|
} else {
|
||||||
switch_snprintf(file, sizeof(file), "rtmp://%s", path);
|
switch_snprintf(file, sizeof(file), "rtmp://%s", path);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
} else if (handle->stream_name && !strcasecmp(handle->stream_name, "rtsp")) {
|
||||||
|
format = "rtsp";
|
||||||
|
switch_snprintf(file, sizeof(file), "rtsp://%s", path);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
ext++;
|
ext++;
|
||||||
|
|
||||||
if ((context = (av_file_context_t *)switch_core_alloc(handle->memory_pool, sizeof(av_file_context_t))) == 0) {
|
if ((context = (av_file_context_t *)switch_core_alloc(handle->memory_pool, sizeof(av_file_context_t))) == 0) {
|
||||||
@ -1783,7 +1794,7 @@ static switch_status_t av_file_open(switch_file_handle_t *handle, const char *pa
|
|||||||
if (fmt->video_codec != AV_CODEC_ID_NONE) {
|
if (fmt->video_codec != AV_CODEC_ID_NONE) {
|
||||||
const AVCodecDescriptor *desc;
|
const AVCodecDescriptor *desc;
|
||||||
|
|
||||||
if ((handle->stream_name && (!strcasecmp(handle->stream_name, "rtmp") || !strcasecmp(handle->stream_name, "youtube")))) {
|
if ((handle->stream_name && (!strcasecmp(handle->stream_name, "rtmp") || !strcasecmp(handle->stream_name, "rtsp") || !strcasecmp(handle->stream_name, "youtube")))) {
|
||||||
|
|
||||||
if (fmt->video_codec != AV_CODEC_ID_H264 ) {
|
if (fmt->video_codec != AV_CODEC_ID_H264 ) {
|
||||||
fmt->video_codec = AV_CODEC_ID_H264; // force H264
|
fmt->video_codec = AV_CODEC_ID_H264; // force H264
|
||||||
@ -2525,6 +2536,7 @@ SWITCH_MODULE_LOAD_FUNCTION(mod_avformat_load)
|
|||||||
|
|
||||||
supported_formats[i++] = "av";
|
supported_formats[i++] = "av";
|
||||||
supported_formats[i++] = "rtmp";
|
supported_formats[i++] = "rtmp";
|
||||||
|
supported_formats[i++] = "rtsp";
|
||||||
supported_formats[i++] = "mp4";
|
supported_formats[i++] = "mp4";
|
||||||
supported_formats[i++] = "m4a";
|
supported_formats[i++] = "m4a";
|
||||||
supported_formats[i++] = "mov";
|
supported_formats[i++] = "mov";
|
||||||
|
@ -93,7 +93,7 @@ int mod_av_lockmgr_cb(void **m, enum AVLockOp op)
|
|||||||
static void log_callback(void *ptr, int level, const char *fmt, va_list vl)
|
static void log_callback(void *ptr, int level, const char *fmt, va_list vl)
|
||||||
{
|
{
|
||||||
switch_log_level_t switch_level = SWITCH_LOG_DEBUG;
|
switch_log_level_t switch_level = SWITCH_LOG_DEBUG;
|
||||||
|
return;
|
||||||
/* naggy messages */
|
/* naggy messages */
|
||||||
if (level == AV_LOG_DEBUG || level == AV_LOG_WARNING) return;
|
if (level == AV_LOG_DEBUG || level == AV_LOG_WARNING) return;
|
||||||
|
|
||||||
|
@ -177,6 +177,14 @@ SWITCH_DECLARE(switch_status_t) switch_core_perform_file_open(const char *file,
|
|||||||
fh->mm.try_hardware_encoder = switch_true(val);
|
fh->mm.try_hardware_encoder = switch_true(val);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ((val = switch_event_get_header(fh->params, "auth_username"))) {
|
||||||
|
fh->mm.auth_username = switch_core_strdup(fh->memory_pool, val);
|
||||||
|
}
|
||||||
|
|
||||||
|
if ((val = switch_event_get_header(fh->params, "auth_password"))) {
|
||||||
|
fh->mm.auth_password = switch_core_strdup(fh->memory_pool, val);
|
||||||
|
}
|
||||||
|
|
||||||
if ((val = switch_event_get_header(fh->params, "fps"))) {
|
if ((val = switch_event_get_header(fh->params, "fps"))) {
|
||||||
float ftmp = atof(val);
|
float ftmp = atof(val);
|
||||||
if (ftmp > 0.0f) {
|
if (ftmp > 0.0f) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user