[FFmpeg-devel] No way to pass options to TCP through HLS

Tom Gaudasiński tomg at records.headdesk.com.au
Sun Nov 24 04:41:56 EET 2019


I supply an options dictionary to avformat_open_input(). The first stack
trace passes the option correctly down to tcp.c, because the stack is:

#0 tcp_open
#1 ffurl_connect
#2 ffurl_open_whitelist
#3 http_open_cnx_internal
#4 http_open_cnx
#5 http_open
#6 ffurl_connect
#7 ffurl_open_whitelist
#8 ffio_open_whitelist
#9 io_open_default
#10 init_input
#11 avformat_open_input

However, this is the connection to retrieve th m3u8 file. Which, in
turn, causes ffmpeg to open a HLS stream, where the stack is:

#0  open_url
#1  open_input
#2  read_data
#3  read_packet_wrapper
#4  fill_buffer
#5  avio_read
#6  av_probe_input_buffer2
#7  av_probe_input_buffer
#8  hls_read_header
#9  avformat_open_input

But in hls.c, in open_input(), the options dict is initialised as NULL.
c->avio_opts is passed down to open_url, but that doesn't contain my
options.

How do I specify options at the ffmpeg API level to make sure they
propagate down the stack all the way to the underlying protocol?




More information about the ffmpeg-devel mailing list