[FFmpeg-devel] [PATCH v3] avformat/icecast: Add option to use TLS connection

Marvin Scholz epirat07 at gmail.com
Sun Jun 14 23:23:40 EEST 2020


On 14 Jun 2020, at 15:42, Michael Niedermayer wrote:

> On Sun, Jun 14, 2020 at 12:52:44AM +0200, Marvin Scholz wrote:
>> ---
>>  doc/protocols.texi    | 3 +++
>>  libavformat/icecast.c | 6 +++++-
>>  2 files changed, 8 insertions(+), 1 deletion(-)
>>
>> diff --git a/doc/protocols.texi b/doc/protocols.texi
>> index 7aa758541c..32c829d2a3 100644
>> --- a/doc/protocols.texi
>> +++ b/doc/protocols.texi
>> @@ -520,6 +520,9 @@ audio/mpeg.
>>  This enables support for Icecast versions < 2.4.0, that do not 
>> support the
>>  HTTP PUT method but the SOURCE method.
>>
>> + at item tls
>> +Establish a TLS (HTTPS) connection to Icecast.
>> +
>>  @end table
>>
>>  @example
>> diff --git a/libavformat/icecast.c b/libavformat/icecast.c
>> index 38af16b99e..b06c53cabd 100644
>> --- a/libavformat/icecast.c
>> +++ b/libavformat/icecast.c
>> @@ -43,6 +43,7 @@ typedef struct IcecastContext {
>>      int public;
>>      char *url;
>>      char *user_agent;
>> +    int tls;
>>  } IcecastContext;
>>
>>  #define DEFAULT_ICE_USER "source"
>> @@ -62,6 +63,7 @@ static const AVOption options[] = {
>>      { "password", "set password", OFFSET(pass), AV_OPT_TYPE_STRING, 
>> { .str = NULL }, 0, 0, E },
>>      { "content_type", "set content-type, MUST be set if not 
>> audio/mpeg", OFFSET(content_type), AV_OPT_TYPE_STRING, { .str = NULL 
>> }, 0, 0, E },
>>      { "legacy_icecast", "use legacy SOURCE method, for Icecast < 
>> v2.4", OFFSET(legacy_icecast), AV_OPT_TYPE_BOOL, { .i64 = 0 }, 0, 1, 
>> E },
>> +    { "tls", "use a TLS connection", OFFSET(tls), AV_OPT_TYPE_BOOL, 
>> { .i64 = 0 }, 0, 1, E },
>>      { NULL }
>>  };
>>
>> @@ -162,7 +164,9 @@ static int icecast_open(URLContext *h, const char 
>> *uri, int flags)
>>      }
>>
>>      // Build new URI for passing to http protocol
>> -    ff_url_join(h_url, sizeof(h_url), "http", auth, host, port, 
>> "%s", path);
>> +    ff_url_join(h_url, sizeof(h_url),
>> +                s->tls ? "https" : "http",
>> +                auth, host, port, "%s", path);
>>      // Finally open http proto handler
>>      ret = ffurl_open_whitelist(&s->hd, h_url, AVIO_FLAG_READ_WRITE, 
>> NULL,
>>                                 &opt_dict, h->protocol_whitelist, 
>> h->protocol_blacklist, h);
>
> Is https support common or uncommon for icecast ?
> if it is common then changing the default to enabled (in a seperate 
> patch)
> would make sense
>
> the patch should be ok
>

It's getting more common now but most people are probably still used to
have http enabled for use with source clients as most of the older
ones do not yet support TLS at all.

Ideally it would default to auto-detect but it seems thats not easily 
possible
with how the ffmpeg protocols work.

> thx
>
> [...]
> -- 
> Michael     GnuPG fingerprint: 
> 9FF2128B147EF6730BADF133611EC787040B0FAB
>
> Breaking DRM is a little like attempting to break through a door even
> though the window is wide open and the only thing in the house is a 
> bunch
> of things you dont want and which you would get tomorrow for free 
> anyway
> _______________________________________________
> ffmpeg-devel mailing list
> ffmpeg-devel at ffmpeg.org
> https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
>
> To unsubscribe, visit link above, or email
> ffmpeg-devel-request at ffmpeg.org with subject "unsubscribe".


More information about the ffmpeg-devel mailing list