[FFmpeg-trac] #8693(avformat:new): DASH HTTP PUT fails with http_persistent and connection closed
FFmpeg
trac at avcodec.org
Fri May 29 17:16:37 EEST 2020
#8693: DASH HTTP PUT fails with http_persistent and connection closed
--------------------------------------+----------------------------------
Reporter: chris.ribble | Type: defect
Status: new | Priority: normal
Component: avformat | Version: 4.2
Keywords: | Blocked By:
Blocking: | Reproduced by developer: 0
Analyzed by developer: 0 |
--------------------------------------+----------------------------------
Summary of the bug:
When live streaming (HLS) with a persistent HTTP connection, if the web
server closes the connection ffmpeg shuts down.
How to reproduce:
Streaming to an Apache web server with "KeepAlive On" and
"MaxKeepAliveRequests 10", ffmpeg will fail on the 11th PUT request when
Apache closes the TCP connection. Streaming to Tomcat service with default
configuration, ffmpeg will fail on the 101st PUT request when Tomcat
closes the connection.
`ffmpeg -report -i /home/chris/Desktop/B3__1080p29_x264_3_1080-full.mp4 -c
copy -f dash -seg_duration 2 -http_persistent 1
http://localhost:8080/Manifest.mpd`
Output:
{{{
[http @ 0x55e4fe65d780] Opening 'http://localhost:8080/chunk-
stream1-00100.m4s' for writing
[http @ 0x55e4fe639780] URL read error: End of file
[http @ 0x55e4fe748a40] Opening 'http://localhost:8080/Manifest.mpd' for
writing
[http @ 0x55e4fe66e780] Opening 'http://localhost:8080/chunk-
stream0-00101.m4s' for writing
[dash @ 0x55e4fe658500] Unable to open http://localhost:8080/chunk-
stream0-00101.m4s for writing: Broken pipe
av_interleaved_write_frame(): Broken pipe
[http @ 0x55e4fe65d780] Opening 'http://localhost:8080/chunk-
stream1-00101.m4s' for writing
[dash @ 0x55e4fe658500] Unable to open http://localhost:8080/chunk-
stream1-00101.m4s for writing: Connection reset by peer
[http @ 0x55e4fe748a40] Opening 'http://localhost:8080/Manifest.mpd' for
writing
Error writing trailer of http://localhost:8080/Manifest.mpd: Connection
reset by peer
frame= 6031 fps=0.0 q=-1.0 Lsize=N/A time=00:03:21.20 bitrate=N/A speed=
965x
video:84499kB audio:3186kB subtitle:0kB other streams:0kB global
headers:0kB muxing overhead: unknown
Conversion failed!
}}}
This was fixed for HLS by https://trac.ffmpeg.org/ticket/7975 and I have
attempted to create a similar patch for libavformat/dashenc.c (attached).
I tested the patch against master and also against the 4.2 branch (with
f267a2ac9c740c77cee2f2c5fd2bd9bc048768b1 also applied) and it seems to fix
the problem, although I am no C expert and I'm sure there are flaws in my
patch.
--
Ticket URL: <https://trac.ffmpeg.org/ticket/8693>
FFmpeg <https://ffmpeg.org>
FFmpeg issue tracker
More information about the FFmpeg-trac
mailing list