FFmpeg: av_interleaved_write_frame does not detect failure for TLS output

How can I detect a failure from av_interleaved_write_frame / av_write_frame when the output uses TLS and the connection fails? Both functions continue to return 0 after the destination becomes unavailable. When TLS is not used, the functions immediately detect a failure and return return codes.

TLS output:

 av_interleaved_write_frame st.tb=90000, result=0 

Exit without TLS:

 av_interleaved_write_frame failed result=-32 - Broken pipe 

This behavior can also be demonstrated using the command line tool.

Expected Result for a Simple Connection - A connection error terminates the program:

 $ ffmpeg -rtsp_transport tcp -i rtsp://<rtsp_source>:554... -vcodec copy -an -f rtsp "rtsp://<rtsp_dest>:1935..." ffmpeg version N-68044-g9f9440b Copyright (c) 2000-2014 the FFmpeg developers built on Nov 27 2014 03:13:44 with gcc 4.9.2 (GCC) configuration: --enable-gpl --enable-version3 --disable-w32threads --enable-avisynth --enable-bzlib --enable-fontconfig --enable-frei0r --enable-gnutls --enable-iconv --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libfreetype --enable-libgme --enable-libgsm --enable-libilbc --enable-libmodplug --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-librtmp --enable-libschroedinger --enable-libsoxr --enable-libspeex --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvo-aacenc --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxavs --enable-libxvid --enable-decklink --enable-zlib libavutil 54. 15.100 / 54. 15.100 libavcodec 56. 13.100 / 56. 13.100 libavformat 56. 15.100 / 56. 15.100 libavdevice 56. 3.100 / 56. 3.100 libavfilter 5. 2.103 / 5. 2.103 libswscale 3. 1.101 / 3. 1.101 libswresample 1. 1.100 / 1. 1.100 libpostproc 53. 3.100 / 53. 3.100 Input #0, rtsp, from 'rtsp://<rtsp_source>:554...': Metadata: title : Media Presentation comment : <comment> Duration: N/A, start: 0.011000, bitrate: N/A Stream #0:0: Video: h264 (High), yuv420p, 1920x1080, 30 tbr, 90k tbn, 180k tbc Stream #0:1: Data: none Output #0, rtsp, to 'rtsp://<rtsp_dest>:1935...': Metadata: title : Media Presentation comment : <comment> encoder : Lavf56.15.100 Stream #0:0: Video: h264, yuv420p, 1920x1080, q=2-31, 90k tbn, 90k tbc Stream mapping: Stream #0:0 -> #0:0 (copy) Press [q] to stop, [?] for help [rtsp @ 0000000004d4e940] Non-monotonous DTS in output stream 0:0; previous: 0, current: 0; changing to 1. This may result in incorrect timestamps in the output file. av_interleaved_write_frame(): Broken pipe00:00:15.71 bitrate=N/A frame= 476 fps= 33 q=-1.0 Lsize=N/A time=00:00:15.77 bitrate=N/A video:2178kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: unknown Conversion failed! $ 

An unexpected result for connecting TLS - the program continues to work, although it knows that something is wrong:

 $ ffmpeg -rtsp_transport tcp -i rtsp://<rtsp_source>:554... -vcodec copy -an -f rtsp "rtsps://<rtsps_dest>:443..." ffmpeg version N-68044-g9f9440b Copyright (c) 2000-2014 the FFmpeg developers built on Nov 27 2014 03:13:44 with gcc 4.9.2 (GCC) configuration: --enable-gpl --enable-version3 --disable-w32threads --enable-avisynth --enable-bzlib --enable-fontconfig --enable-frei0r --enable-gnutls --enable-iconv --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libfreetype --enable-libgme --enable-libgsm --enable-libilbc --enable-libmodplug --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-librtmp --enable-libschroedinger --enable-libsoxr --enable-libspeex --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvo-aacenc --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxavs --enable-libxvid --enable-decklink --enable-zlib libavutil 54. 15.100 / 54. 15.100 libavcodec 56. 13.100 / 56. 13.100 libavformat 56. 15.100 / 56. 15.100 libavdevice 56. 3.100 / 56. 3.100 libavfilter 5. 2.103 / 5. 2.103 libswscale 3. 1.101 / 3. 1.101 libswresample 1. 1.100 / 1. 1.100 libpostproc 53. 3.100 / 53. 3.100 Input #0, rtsp, from 'rtsp://<rtsp_source>:554...': Metadata: title : Media Presentation comment : <comment> Duration: N/A, start: 0.025000, bitrate: N/A Stream #0:0: Video: h264 (High), yuv420p, 1920x1080, 30 tbr, 90k tbn, 180k tbc Stream #0:1: Data: none Output #0, rtsp, to 'rtsps://<rtsps_dest>:443...': Metadata: title : Media Presentation comment : <comment> encoder : Lavf56.15.100 Stream #0:0: Video: h264, yuv420p, 1920x1080, q=2-31, 90k tbn, 90k tbc Stream mapping: Stream #0:0 -> #0:0 (copy) Press [q] to stop, [?] for help [rtsp @ 0000000002d5aa20] Non-monotonous DTS in output stream 0:0; previous: 0, current: 0; changing to 1. This may result in incorrect timestamps in the output file. [tls @ 00000000056adc00] Error in the push function. bitrate=N/A [tls @ 00000000056adc00] The specified session has been invalidated for some reason. Last message repeated 2 times [tls @ 00000000056adc00] The specified session has been invalidated for some reason. Last message repeated 31 times [tls @ 00000000056adc00] The specified session has been invalidated for some reason. Last message repeated 89 times [tls @ 00000000056adc00] The specified session has been invalidated for some reason. Last message repeated 30 times [tls @ 00000000056adc00] The specified session has been invalidated for some reason. Last message repeated 92 times [tls @ 00000000056adc00] The specified session has been invalidated for some reason. Last message repeated 29 times [tls @ 00000000056adc00] The specified session has been invalidated for some reason. Last message repeated 90 times [tls @ 00000000056adc00] The specified session has been invalidated for some reason. Last message repeated 29 times [tls @ 00000000056adc00] The specified session has been invalidated for some reason. Last message repeated 92 times ... 

I need to detect a failure in av_interleaved_write_frame so that I can re-initiate the connection.

+8
ffmpeg libavcodec libavformat
source share

No one has answered this question yet.

See related questions:

3
FFmpeg: Invalid NAL block size after Concat filter
2
FFMPEG: Add an additional audio track to a video file
2
ffmpeg There is no such filter: "palettegen" in linux
one
Get video size using regular expressions and ffmpeg
0
Cannot play hardware-encoded H.264 on a RED5 server using FFmpeg
0
Convert Ffmpeg video for mini slides to openwrt
0
FFMPEG rtsp stream adds timestamp to output file
0
ffmpeg onvif to rtmp
0
After transcoding using ffmpeg, I found that the audio bitrate is not the expected value

All Articles