|
|
@ -23,6 +23,7 @@ |
|
|
|
#include "libavutil/parseutils.h" |
|
|
|
#include "libavutil/parseutils.h" |
|
|
|
#include "libavutil/random_seed.h" |
|
|
|
#include "libavutil/random_seed.h" |
|
|
|
#include "libavutil/avstring.h" |
|
|
|
#include "libavutil/avstring.h" |
|
|
|
|
|
|
|
#include "libavutil/dict.h" |
|
|
|
#include "libavutil/intreadwrite.h" |
|
|
|
#include "libavutil/intreadwrite.h" |
|
|
|
#include "libavutil/time.h" |
|
|
|
#include "libavutil/time.h" |
|
|
|
#include "internal.h" |
|
|
|
#include "internal.h" |
|
|
@ -76,6 +77,7 @@ static int sap_write_header(AVFormatContext *s) |
|
|
|
struct sockaddr_storage localaddr; |
|
|
|
struct sockaddr_storage localaddr; |
|
|
|
socklen_t addrlen = sizeof(localaddr); |
|
|
|
socklen_t addrlen = sizeof(localaddr); |
|
|
|
int udp_fd; |
|
|
|
int udp_fd; |
|
|
|
|
|
|
|
AVDictionaryEntry* title = av_dict_get(s->metadata, "title", NULL, 0); |
|
|
|
|
|
|
|
|
|
|
|
if (!ff_network_init()) |
|
|
|
if (!ff_network_init()) |
|
|
|
return AVERROR(EIO); |
|
|
|
return AVERROR(EIO); |
|
|
@ -158,6 +160,9 @@ static int sap_write_header(AVFormatContext *s) |
|
|
|
av_strlcpy(contexts[i]->filename, url, sizeof(contexts[i]->filename)); |
|
|
|
av_strlcpy(contexts[i]->filename, url, sizeof(contexts[i]->filename)); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (s->nb_streams > 0 && title) |
|
|
|
|
|
|
|
av_dict_set(&contexts[0]->metadata, "title", title->value, 0); |
|
|
|
|
|
|
|
|
|
|
|
ff_url_join(url, sizeof(url), "udp", NULL, announce_addr, port, |
|
|
|
ff_url_join(url, sizeof(url), "udp", NULL, announce_addr, port, |
|
|
|
"?ttl=%d&connect=1", ttl); |
|
|
|
"?ttl=%d&connect=1", ttl); |
|
|
|
ret = ffurl_open(&sap->ann_fd, url, AVIO_FLAG_WRITE, |
|
|
|
ret = ffurl_open(&sap->ann_fd, url, AVIO_FLAG_WRITE, |
|
|
|