[FFmpeg-trac] #8561(avformat:new): "URL read error: End of file" when http_persistent enabled
FFmpeg
trac at avcodec.org
Mon Mar 9 15:38:06 EET 2020
#8561: "URL read error: End of file" when http_persistent enabled
-------------------------------------+------------------------------------
Reporter: vschweitzer | Owner:
Type: defect | Status: new
Priority: normal | Component: avformat
Version: git-master | Resolution:
Keywords: http | Blocked By:
Blocking: | Reproduced by developer: 0
Analyzed by developer: 0 |
-------------------------------------+------------------------------------
Changes (by cehoyos):
* component: undetermined => avformat
Old description:
> When streaming via HLS to a HTTP server while http_persistent
> is enabled, some segments will fail to upload with the error
> {{{
> [http @ 0000023db7ff2140] URL read error: End of file
> [hls @ 0000023db85f0200] upload segment failed, will retry with a new
> http session.
> }}}
>
> The command line used to reproduce the output above is
> {{{
> ffmpeg -y -f lavfi -i color=c=black:s=1920x1080:r=25 -vcodec libx264 -f
> hls -http_persistent 1 http://127.0.0.1:45000/streams/index.m3u8
> }}}
> The error should occur after approximately 50 requests.
>
> This behavior was tested with both Apache and NGINX.
> NGINX was configured in the following way:
>
> In front of "server {...}":
> {{{
> map $request_method $my_proxy_method {
> default $request_method;
> POST PUT;
> }
> }}}
>
> In "server {...}":
> {{{
> location /streams/ {
> proxy_pass http://127.0.0.1:45000/test/;
> proxy_method $my_proxy_method;
> proxy_ignore_client_abort on;
> }
>
> location /test/ {
> root html;
> index index.html index.htm;
> dav_methods PUT DELETE MKCOL COPY MOVE;
> dav_access all:rw;
> create_full_put_path on;
> client_max_body_size 10000m;
> }
> }}}
>
> As FFmpeg sometimes uses POST requests even if PUT is explicitly
> specified, POST requests are mapped to PUT. This requires a
> new request, which is why the server creates a new request
> to itself to a new directory when receiving a request to
> /streams/.
>
> On a possibly related note, the NGINX log reports a strange
> looking request at the time of the FFmpeg error:
> {{{
> 127.0.0.1 - - [09/Mar/2020:10:48:26 +0000] "PUT /streams/index54.ts
> HTTP/1.1" 201 0 "-" "Lavf/58.35.104"
> 127.0.0.1 - - [09/Mar/2020:10:48:26 +0000] "PUT /test/index54.ts
> HTTP/1.0" 201 0 "-" "Lavf/58.35.104"
> 127.0.0.1 - - [09/Mar/2020:10:48:26 +0000] "0" 400 157 "-" "-"
> }}}
>
> Although possibly related, this bug is not the same as
> [ticket:#8546 "http_persistent not honored when encryption is enabled"].
New description:
When streaming via HLS to a HTTP server while http_persistent
is enabled, some segments will fail to upload with the error
{{{
[http @ 0000023db7ff2140] URL read error: End of file
[hls @ 0000023db85f0200] upload segment failed, will retry with a new http
session.
}}}
The command line used to reproduce the output above is
{{{
ffmpeg -y -f lavfi -i color=c=black:s=1920x1080:r=25 -vcodec libx264 -f
hls -http_persistent 1 http://127.0.0.1:45000/streams/index.m3u8
}}}
The error should occur after approximately 50 requests.
This behavior was tested with both Apache and NGINX.
NGINX was configured in the following way:
In front of "server {...}":
{{{
map $request_method $my_proxy_method {
default $request_method;
POST PUT;
}
}}}
In "server {...}":
{{{
location /streams/ {
proxy_pass http://127.0.0.1:45000/test/;
proxy_method $my_proxy_method;
proxy_ignore_client_abort on;
}
location /test/ {
root html;
index index.html index.htm;
dav_methods PUT DELETE MKCOL COPY MOVE;
dav_access all:rw;
create_full_put_path on;
client_max_body_size 10000m;
}
}}}
As FFmpeg sometimes uses POST requests even if PUT is explicitly
specified, POST requests are mapped to PUT. This requires a
new request, which is why the server creates a new request
to itself to a new directory when receiving a request to
/streams/.
On a possibly related note, the NGINX log reports a strange
looking request at the time of the FFmpeg error:
{{{
127.0.0.1 - - [09/Mar/2020:10:48:26 +0000] "PUT /streams/index54.ts
HTTP/1.1" 201 0 "-" "Lavf/58.35.104"
127.0.0.1 - - [09/Mar/2020:10:48:26 +0000] "PUT /test/index54.ts HTTP/1.0"
201 0 "-" "Lavf/58.35.104"
127.0.0.1 - - [09/Mar/2020:10:48:26 +0000] "0" 400 157 "-" "-"
}}}
Although possibly related, this bug is not the same as
ticket #8546.
--
--
Ticket URL: <https://trac.ffmpeg.org/ticket/8561#comment:1>
FFmpeg <https://ffmpeg.org>
FFmpeg issue tracker
More information about the FFmpeg-trac
mailing list