[FFmpeg-trac] #7975(avformat:new): HLS HTTP PUT fails with http_persistent and connection closed
FFmpeg
trac at avcodec.org
Sat Jun 29 04:28:41 EEST 2019
#7975: HLS HTTP PUT fails with http_persistent and connection closed
------------------------------------+------------------------------------
Reporter: ianklassen | Owner:
Type: defect | Status: new
Priority: normal | Component: avformat
Version: git-master | Resolution:
Keywords: hls http | Blocked By:
Blocking: | Reproduced by developer: 0
Analyzed by developer: 0 |
------------------------------------+------------------------------------
Comment (by stevenliu):
Replying to [comment:4 ianklassen]:
> The default requests per connection for nginx is 100
(http://nginx.org/en/docs/http/ngx_http_core_module.html#keepalive_requests)
so the bug wouldn't have been triggered in your test. First set
"keepalive_requests 10;" and then retry.
>
> Here's my output.
>
> {{{
> [https @ 0000025e52f46000] HTTP error 404 Not Found
> [hls @ 0000025e4f6930c0] Opening
'http://www.sampletestsite.com/stream0.ts' for writing
> Output #0, hls, to 'http://www.sampletestsite.com/stream.m3u8':
> [https @ 0000025e52f3d940] Opening
'http://www.sampletestsite.com/stream1.ts' for writing
> [https @ 0000025e52f3d940] Opening
'http://www.sampletestsite.com/stream2.ts' for writing
> [https @ 0000025e538beac0] Opening
'http://www.sampletestsite.com/stream.m3u8' for writing
> [https @ 0000025e52f3d940] Opening
'http://www.sampletestsite.com/stream3.ts' for writing
> [https @ 0000025e538beac0] Opening
'http://www.sampletestsite.com/stream.m3u8' for writing
> [https @ 0000025e52f3d940] Opening
'http://www.sampletestsite.com/stream4.ts' for writing
> [https @ 0000025e538beac0] Opening
'http://www.sampletestsite.com/stream.m3u8' for writing
> [https @ 0000025e52f3d940] Opening
'http://www.sampletestsite.com/stream5.ts' for writing
> [https @ 0000025e538beac0] Opening
'http://www.sampletestsite.com/stream.m3u8' for writing
> [https @ 0000025e52f3d940] Opening
'http://www.sampletestsite.com/stream6.ts' for writing
> [https @ 0000025e538beac0] Opening
'http://www.sampletestsite.com/stream.m3u8' for writing
> [https @ 0000025e52f3d940] Opening
'http://www.sampletestsite.com/stream7.ts' for writing
> [https @ 0000025e538beac0] Opening
'http://www.sampletestsite.com/stream.m3u8' for writing
> [https @ 0000025e52f3d940] Opening
'http://www.sampletestsite.com/stream8.ts' for writing
> [https @ 0000025e538beac0] Opening
'http://www.sampletestsite.com/stream.m3u8' for writing
> [https @ 0000025e52f3d940] Opening
'http://www.sampletestsite.com/stream9.ts' for writing
> [https @ 0000025e538beac0] Opening
'http://www.sampletestsite.com/stream.m3u8' for writing
> [https @ 0000025e52f3d940] Opening
'http://www.sampletestsite.com/stream10.ts' for writing
> [https @ 0000025e538beac0] Opening
'http://www.sampletestsite.com/stream.m3u8' for writing
> [https @ 0000025e52f3d940] Opening
'http://www.sampletestsite.com/stream11.ts' for writing
> [https @ 0000025e538beac0] Opening
'http://www.sampletestsite.com/stream.m3u8' for writing
> [https @ 0000025e52f3d940] Opening
'http://www.sampletestsite.com/stream12.ts' for writing
> [https @ 0000025e538beac0] Opening
'http://www.sampletestsite.com/stream.m3u8' for writing
> [https @ 0000025e52f3d940] Opening
'http://www.sampletestsite.com/stream13.ts' for writing
> [https @ 0000025e538beac0] Opening
'http://www.sampletestsite.com/stream.m3u8' for writing
> [tls @ 0000025e515f0c80] Error in the push function.
> av_interleaved_write_frame(): I/O error
> frame= 2348 fps= 30 q=15.0 Lsize=N/A time=00:01:18.39 bitrate=N/A dup=4
drop=2 speed=0.992x
> video:6393kB audio:1075kB subtitle:0kB other streams:0kB global
headers:0kB muxing overhead: unknown
> [aac @ 0000025e4f6ac640] Qavg: 10125.062
> Conversion failed!
> }}}
>
> What's interesting is that multiple PUT requests seem to be merged
together as you can see in my Apache log. The value after the IP address
is the request sequence in the current connection.
>
> {{{
> 127.0.0.1 (0) [28/Jun/2019:08:16:45 -0500] (0s) "GET /stream.m3u8
HTTP/1.1" 404 45 "Lavf/58.28.100"
> 127.0.0.1 (0) [28/Jun/2019:08:16:51 -0500] (1s) "PUT /stream.m3u8
HTTP/1.1" 200 - "Lavf/58.28.100"
> 127.0.0.1 (1) [28/Jun/2019:08:16:46 -0500] (10s) "PUT /stream0.ts
HTTP/1.1" 200 - "Lavf/58.28.100"
> 127.0.0.1 (1) [28/Jun/2019:08:16:50 -0500] (5s) "PUT /stream1.ts
HTTP/1.1" 200 - "Lavf/58.28.100"
> 127.0.0.1 (1) [28/Jun/2019:08:16:56 -0500] (2s) "PUT /stream.m3u8
HTTP/1.1" 200 - "Lavf/58.28.100"
> 127.0.0.1 (2) [28/Jun/2019:08:17:02 -0500] (2s) "PUT /stream.m3u8
HTTP/1.1" 200 - "Lavf/58.28.100"
> 127.0.0.1 (3) [28/Jun/2019:08:16:56 -0500] (12s) "PUT /stream2.ts
HTTP/1.1" 200 - "Lavf/58.28.100"
> 127.0.0.1 (3) [28/Jun/2019:08:17:02 -0500] (5s) "PUT /stream3.ts
HTTP/1.1" 200 - "Lavf/58.28.100"
> 127.0.0.1 (3) [28/Jun/2019:08:17:08 -0500] (2s) "PUT /stream.m3u8
HTTP/1.1" 200 - "Lavf/58.28.100"
> 127.0.0.1 (4) [28/Jun/2019:08:17:08 -0500] (5s) "PUT /stream4.ts
HTTP/1.1" 200 - "Lavf/58.28.100"
> 127.0.0.1 (4) [28/Jun/2019:08:17:14 -0500] (2s) "PUT /stream.m3u8
HTTP/1.1" 200 - "Lavf/58.28.100"
> 127.0.0.1 (5) [28/Jun/2019:08:17:20 -0500] (2s) "PUT /stream.m3u8
HTTP/1.1" 200 - "Lavf/58.28.100"
> 127.0.0.1 (6) [28/Jun/2019:08:17:26 -0500] (2s) "PUT /stream.m3u8
HTTP/1.1" 200 - "Lavf/58.28.100"
> 127.0.0.1 (7) [28/Jun/2019:08:17:14 -0500] (18s) "PUT /stream5.ts
HTTP/1.1" 200 - "Lavf/58.28.100"
> 127.0.0.1 (7) [28/Jun/2019:08:17:20 -0500] (12s) "PUT /stream6.ts
HTTP/1.1" 200 - "Lavf/58.28.100"
> 127.0.0.1 (7) [28/Jun/2019:08:17:26 -0500] (6s) "PUT /stream7.ts
HTTP/1.1" 200 - "Lavf/58.28.100"
> 127.0.0.1 (7) [28/Jun/2019:08:17:32 -0500] (2s) "PUT /stream.m3u8
HTTP/1.1" 200 - "Lavf/58.28.100"
> 127.0.0.1 (8) [28/Jun/2019:08:17:38 -0500] (2s) "PUT /stream.m3u8
HTTP/1.1" 200 - "Lavf/58.28.100"
> 127.0.0.1 (9) [28/Jun/2019:08:17:44 -0500] (2s) "PUT /stream.m3u8
HTTP/1.1" 200 - "Lavf/58.28.100"
> 127.0.0.1 (10) [28/Jun/2019:08:17:32 -0500] (18s) "PUT /stream8.ts
HTTP/1.1" 200 - "Lavf/58.28.100"
> 127.0.0.1 (10) [28/Jun/2019:08:17:38 -0500] (12s) "PUT /stream9.ts
HTTP/1.1" 200 - "Lavf/58.28.100"
> 127.0.0.1 (10) [28/Jun/2019:08:17:44 -0500] (6s) "PUT /stream10.ts
HTTP/1.1" 200 - "Lavf/58.28.100"
> 127.0.0.1 (10) [28/Jun/2019:08:17:50 -0500] (1s) "PUT /stream.m3u8
HTTP/1.1" 200 - "Lavf/58.28.100"
> 127.0.0.1 (0) [28/Jun/2019:08:18:03 -0500] (0s) "PUT /stream.m3u8
HTTP/1.1" 200 - "Lavf/58.28.100"
> }}}
>
> You can see that the last segment seen by the web server was
stream10.ts.
>
Yes, i have reporoduced it, maybe the better way is sync the m3u8 list
with the stream segment files that the sequence number success put to the
http server, is it?
--
Ticket URL: <https://trac.ffmpeg.org/ticket/7975#comment:5>
FFmpeg <https://ffmpeg.org>
FFmpeg issue tracker
More information about the FFmpeg-trac
mailing list