Hi ffmpeg-users,

I was using a behavior in ffmpeg where SIGPIPE would terminate ffmpeg (while 
permitting it to cleanly end its muxing). This can be demonstrated in ffmpeg 
5.1.3 with this command of piping ffmpeg into ffplay. When I close the ffplay 
window, the ffmpeg receives a SIGPIPE and stop.

ffmpeg -f lavfi -i testsrc -f matroska test_ffmpeg5.mov -f nut - | ffplay -
ffmpeg version 5.1.3ffplay version 5.1.3 Copyright (c) 2003-2022 the FFmpeg 
developers Copyright (c) 2000-2022 the FFmpeg developers

  built with Apple clang version 13.0.0 (clang-1300.0.29.30)
  built with Apple clang version 13.0.0 (clang-1300.0.29.30)
  configuration: --prefix='/usr/local/Cellar/ffmpeg@5/5.1.3' 
--datadir='/usr/local/Cellar/ffmpeg@5/5.1.3/share/ffmpeg' --enable-shared 
--enable-pthreads --enable-version3 --cc=clang --host-cflags= --host-ldflags= 
--enable-ffplay --enable-gnutls --enable-gpl --enable-libaom 
--enable-libaribb24 --enable-libbluray --enable-libdav1d --enable-libmp3lame 
--enable-libopus --enable-librav1e --enable-librist --enable-librubberband 
--enable-libsnappy --enable-libsrt --enable-libsvtav1 --enable-libtesseract 
--enable-libtheora --enable-libvidstab --enable-libvmaf --enable-libvorbis 
--enable-libvpx --enable-libwebp --enable-libx264 --enable-libx265 
--enable-libxml2 --enable-libxvid --enable-lzma --enable-libfontconfig 
--enable-libfreetype --enable-frei0r --enable-libass --enable-libopencore-amrnb 
--enable-libopencore-amrwb --enable-libopenjpeg --enable-libspeex 
--enable-libsoxr --enable-libzmq --enable-libzimg --disable-libjack 
--disable-indev=jack --enable-videotoolbox
  configuration: --prefix='/usr/local/Cellar/ffmpeg@5/5.1.3' 
--datadir='/usr/local/Cellar/ffmpeg@5/5.1.3/share/ffmpeg' --enable-shared 
--enable-pthreads --enable-version3 --cc=clang --host-cflags= --host-ldflags= 
--enable-ffplay --enable-gnutls --enable-gpl --enable-libaom 
--enable-libaribb24 --enable-libbluray --enable-libdav1d --enable-libmp3lame 
--enable-libopus --enable-librav1e --enable-librist --enable-librubberband 
--enable-libsnappy --enable-libsrt --enable-libsvtav1 --enable-libtesseract 
--enable-libtheora --enable-libvidstab --enable-libvmaf --enable-libvorbis 
--enable-libvpx --enable-libwebp --enable-libx264 --enable-libx265 
--enable-libxml2 --enable-libxvid --enable-lzma --enable-libfontconfig 
--enable-libfreetype --enable-frei0r --enable-libass --enable-libopencore-amrnb 
--enable-libopencore-amrwb --enable-libopenjpeg --enable-libspeex 
--enable-libsoxr --enable-libzmq --enable-libzimg --disable-libjack 
--disable-indev=jack --enable-videotoolbox
  libavutil      57. 28.100 / 57. 28.100
  libavutil      57. 28.100 / 57. 28.100
  libavcodec     59. 37.100 / 59. 37.100
  libavcodec     59. 37.100 / 59. 37.100
  libavformat    59. 27.100 / 59. 27.100
  libavformat    59. 27.100 / 59. 27.100
  libavdevice    59.  7.100 / 59.  7.100
  libavdevice    59.  7.100 / 59.  7.100
  libavfilter     8. 44.100 /  8. 44.100
  libavfilter     8. 44.100 /  8. 44.100
  libswscale      6.  7.100 /  6.  7.100
  libswscale      6.  7.100 /  6.  7.100
  libswresample   4.  7.100 /  4.  7.100
  libswresample   4.  7.100 /  4.  7.100
  libpostproc    56.  6.100 / 56.  6.100
  libpostproc    56.  6.100 / 56.  6.100
Input #0, lavfi, from 'testsrc':
  Duration: N/A, start: 0.000000, bitrate: N/A
  Stream #0:0: Video: rawvideo (RGB[24] / 0x18424752), rgb24, 320x240 [SAR 1:1 
DAR 4:3], 25 tbr, 25 tbn
Stream mapping:
  Stream #0:0 -> #0:0 (rawvideo (native) -> h264 (libx264))
  Stream #0:0 -> #1:0 (rawvideo (native) -> mpeg4 (native))
Press [q] to stop, [?] for help
[libx264 @ 0x7f9070417300] using SAR=1/1
[libx264 @ 0x7f9070417300] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2
[libx264 @ 0x7f9070417300] profile High 4:4:4 Predictive, level 1.3, 4:4:4, 
8-bit
[libx264 @ 0x7f9070417300] 264 - core 164 r3108 31e19f9 - H.264/MPEG-4 AVC 
codec - Copyleft 2003-2023 - http://www.videolan.org/x264.html - options: 
cabac=1 ref=3 deblock=1:0:0 analyse=0x3:0x113 me=hex subme=7 psy=1 
psy_rd=1.00:0.00 mixed_ref=1 me_range=16 chroma_me=1 trellis=1 8x8dct=1 cqm=0 
deadzone=21,11 fast_pskip=1 chroma_qp_offset=4 threads=7 lookahead_threads=1 
sliced_threads=0 nr=0 decimate=1 interlaced=0 bluray_compat=0 
constrained_intra=0 bframes=3 b_pyramid=2 b_adapt=1 b_bias=0 direct=1 weightb=1 
open_gop=0 weightp=2 keyint=250 keyint_min=25 scenecut=40 intra_refresh=0 
rc_lookahead=40 rc=crf mbtree=1 crf=23.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 
ip_ratio=1.40 aq=1:1.00
Output #0, matroska, to 'test_ffmpeg5.mov':
  Metadata:
    encoder         : Lavf59.27.100
  Stream #0:0: Video: h264 (H264 / 0x34363248), yuv444p(tv, progressive), 
320x240 [SAR 1:1 DAR 4:3], q=2-31, 25 fps, 1k tbn
    Metadata:
      encoder         : Lavc59.37.100 libx264
    Side data:
      cpb: bitrate max/min/avg: 0/0/0 buffer size: 0 vbv_delay: N/A
Output #1, nut, to 'pipe:':
  Metadata:
    encoder         : Lavf59.27.100
  Stream #1:0: Video: mpeg4 (FMP4 / 0x34504D46), yuv420p(tv, progressive), 
320x240 [SAR 1:1 DAR 4:3], q=2-31, 200 kb/s, 25 fps, 51200 tbn
    Metadata:
      encoder         : Lavc59.37.100 mpeg4
    Side data:
      cpb: bitrate max/min/avg: 0/0/200000 buffer size: 0 vbv_delay: N/A
Input #0, nut, from 'pipe:':4.7 size=       1kB time=00:00:00.00 
bitrate=230000.0kbits/s speed=0.455x    
  Metadata:
    encoder         : Lavf59.27.100
  Duration: N/A, start: 0.000000, bitrate: N/A
  Stream #0:0: Video: mpeg4 (Simple Profile) (FMP4 / 0x34504D46), yuv420p, 
320x240 [SAR 1:1 DAR 4:3], 25 tbr, 51200 tbn
    Metadata:
      encoder         : Lavc59.37.100 mpeg4
   1.22 M-V:  0.001 fd=   0 aq=    0KB vq=   39KB sq=    0B f=0/0   trate=   
1.4kbits/s speed=3.81x    
av_interleaved_write_frame(): Broken pipe
Error writing trailer of pipe:: Broken pipe
frame=  121 fps= 60 q=-1.0 Lq=1.6 size=      24kB time=00:00:04.80 bitrate=  
41.2kbits/s speed=2.38x    
video:219kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing 
overhead: unknown
Error closing file pipe:: Broken pipe
[libx264 @ 0x7f9070417300] frame I:1     Avg QP:19.18  size:  2974
[libx264 @ 0x7f9070417300] frame P:33    Avg QP:14.59  size:   461
[libx264 @ 0x7f9070417300] frame B:87    Avg QP:14.07  size:    51
[libx264 @ 0x7f9070417300] consecutive B-frames:  1.7%  0.0% 22.3% 76.0%
[libx264 @ 0x7f9070417300] mb I  I16..4: 30.0% 43.0% 27.0%
[libx264 @ 0x7f9070417300] mb P  I16..4:  1.7%  1.3%  0.8%  P16..4:  7.3%  3.8% 
 2.7%  0.0%  0.0%    skip:82.4%
[libx264 @ 0x7f9070417300] mb B  I16..4:  0.2%  0.2%  0.0%  B16..8:  4.0%  0.1% 
 0.0%  direct: 0.1%  skip:95.5%  L0:53.0% L1:42.1% BI: 4.9%
[libx264 @ 0x7f9070417300] 8x8 transform intra:39.2% inter:36.5%
[libx264 @ 0x7f9070417300] coded y,u,v intra: 10.8% 11.2% 10.0% inter: 0.7% 
0.8% 0.7%
[libx264 @ 0x7f9070417300] i16 v,h,dc,p: 55% 32%  1% 13%
[libx264 @ 0x7f9070417300] i8 v,h,dc,ddl,ddr,vr,hd,vl,hu: 72%  4% 24%  0%  0%  
0%  0%  0%  0%
[libx264 @ 0x7f9070417300] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 35% 46% 14%  1%  1%  
1%  0%  1%  0%
[libx264 @ 0x7f9070417300] Weighted P-Frames: Y:0.0% UV:0.0%
[libx264 @ 0x7f9070417300] ref P L0: 68.2%  7.7% 21.1%  3.0%
[libx264 @ 0x7f9070417300] ref B L0: 59.4% 36.4%  4.2%
[libx264 @ 0x7f9070417300] ref B L1: 97.3%  2.7%
[libx264 @ 0x7f9070417300] kb/s:37.43



With ffmpeg 6, the behavior is different. When I close the ffplay window, the 
ffmpeg does not stop. I’ve tried adding -xerror but that doesn’t help get the 
5.1.3 behavior. With ffmpeg 6 is there a way to have ffmpeg stop nicely when 
receiving SIGPIPE (like ffmpeg 5.1.3 could do)?



ffmpeg -f lavfi -i testsrc -f matroska test_ffmpeg6.mov -f nut - | ffplay -
ffmpeg version 6.0 Copyright (c) 2000-2023 the FFmpeg developers
  built with Apple clang version 13.0.0 (clang-1300.0.29.30)
  configuration: --prefix=/usr/local/Cellar/ffmpeg/6.0_1 --enable-shared 
--enable-pthreads --enable-version3 --cc=clang --host-cflags= --host-ldflags= 
--enable-ffplay --enable-gnutls --enable-gpl --enable-libaom 
--enable-libaribb24 --enable-libbluray --enable-libdav1d --enable-libjxl 
--enable-libmp3lame --enable-libopus --enable-librav1e --enable-librist 
--enable-librubberband --enable-libsnappy --enable-libsrt --enable-libsvtav1 
--enable-libtesseract --enable-libtheora --enable-libvidstab --enable-libvmaf 
--enable-libvorbis --enable-libvpx --enable-libwebp --enable-libx264 
--enable-libx265 --enable-libxml2 --enable-libxvid --enable-lzma 
--enable-libfontconfig --enable-libfreetype --enable-frei0r --enable-libass 
--enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg 
--enable-libspeex --enable-libsoxr --enable-libzmq --enable-libzimg 
--disable-libjack --disable-indev=jack --enable-videotoolbox 
--enable-audiotoolbox
  libavutil      58.  2.100 / 58.  2.100
  libavcodec     60.  3.100 / 60.  3.100
  libavformat    60.  3.100 / 60.  3.100
  libavdevice    60.  1.100 / 60.  1.100
  libavfilter     9.  3.100 /  9.  3.100
  libswscale      7.  1.100 /  7.  1.100
  libswresample   4. 10.100 /  4. 10.100
  libpostproc    57.  1.100 / 57.  1.100
Input #0, lavfi, from 'testsrc':
  Duration: N/A, start: 0.000000, bitrate: N/A
  Stream #0:0: Video: wrapped_avframe, rgb24, 320x240 [SAR 1:1 DAR 4:3], 25 
fps, 25 tbr, 25 tbn
Stream mapping:
  Stream #0:0 -> #0:0 (wrapped_avframe (native) -> h264 (libx264))
  Stream #0:0 -> #1:0 (wrapped_avframe (native) -> mpeg4 (native))
Press [q] to stop, [?] for help
ffplay version 6.0 Copyright (c) 2003-2023 the FFmpeg developers
  built with Apple clang version 13.0.0 (clang-1300.0.29.30)
  configuration: --prefix=/usr/local/Cellar/ffmpeg/6.0_1 --enable-shared 
--enable-pthreads --enable-version3 --cc=clang --host-cflags= --host-ldflags= 
--enable-ffplay --enable-gnutls --enable-gpl --enable-libaom 
--enable-libaribb24 --enable-libbluray --enable-libdav1d --enable-libjxl 
--enable-libmp3lame --enable-libopus --enable-librav1e --enable-librist 
--enable-librubberband --enable-libsnappy --enable-libsrt --enable-libsvtav1 
--enable-libtesseract --enable-libtheora --enable-libvidstab --enable-libvmaf 
--enable-libvorbis --enable-libvpx --enable-libwebp --enable-libx264 
--enable-libx265 --enable-libxml2 --enable-libxvid --enable-lzma 
--enable-libfontconfig --enable-libfreetype --enable-frei0r --enable-libass 
--enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg 
--enable-libspeex --enable-libsoxr --enable-libzmq --enable-libzimg 
--disable-libjack --disable-indev=jack --enable-videotoolbox 
--enable-audiotoolbox
  libavutil      58.  2.100 / 58.  2.100
  libavcodec     60.  3.100 / 60.  3.100
  libavformat    60.  3.100 / 60.  3.100
  libavdevice    60.  1.100 / 60.  1.100
  libavfilter     9.  3.100 /  9.  3.100
  libswscale      7.  1.100 /  7.  1.100
  libswresample   4. 10.100 /  4. 10.100
  libpostproc    57.  1.100 / 57.  1.100
[libx264 @ 0x7fdbbaa0a340] using SAR=1/1
[libx264 @ 0x7fdbbaa0a340] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2
[libx264 @ 0x7fdbbaa0a340] profile High 4:4:4 Predictive, level 1.3, 4:4:4, 
8-bit
[libx264 @ 0x7fdbbaa0a340] 264 - core 164 r3108 31e19f9 - H.264/MPEG-4 AVC 
codec - Copyleft 2003-2023 - http://www.videolan.org/x264.html - options: 
cabac=1 ref=3 deblock=1:0:0 analyse=0x3:0x113 me=hex subme=7 psy=1 
psy_rd=1.00:0.00 mixed_ref=1 me_range=16 chroma_me=1 trellis=1 8x8dct=1 cqm=0 
deadzone=21,11 fast_pskip=1 chroma_qp_offset=4 threads=7 lookahead_threads=1 
sliced_threads=0 nr=0 decimate=1 interlaced=0 bluray_compat=0 
constrained_intra=0 bframes=3 b_pyramid=2 b_adapt=1 b_bias=0 direct=1 weightb=1 
open_gop=0 weightp=2 keyint=250 keyint_min=25 scenecut=40 intra_refresh=0 
rc_lookahead=40 rc=crf mbtree=1 crf=23.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 
ip_ratio=1.40 aq=1:1.00
Output #0, matroska, to 'test_ffmpeg6.mov':
  Metadata:
    encoder         : Lavf60.3.100
  Stream #0:0: Video: h264 (H264 / 0x34363248), yuv444p(tv, progressive), 
320x240 [SAR 1:1 DAR 4:3], q=2-31, 25 fps, 1k tbn
    Metadata:
      encoder         : Lavc60.3.100 libx264
    Side data:
      cpb: bitrate max/min/avg: 0/0/0 buffer size: 0 vbv_delay: N/A
Output #1, nut, to 'pipe:':
  Metadata:
    encoder         : Lavf60.3.100
  Stream #1:0: Video: mpeg4 (FMP4 / 0x34504D46), yuv420p(tv, progressive), 
320x240 [SAR 1:1 DAR 4:3], q=2-31, 200 kb/s, 25 fps, 51200 tbn
    Metadata:
      encoder         : Lavc60.3.100 mpeg4
    Side data:
      cpb: bitrate max/min/avg: 0/0/200000 buffer size: 0 vbv_delay: N/A
Input #0, nut, from 'fd:':q=4.7 size=       0kB time=00:00:00.00 bitrate=N/A 
speed=N/A    
  Metadata:
    encoder         : Lavf60.3.100
  Duration: N/A, start: 0.000000, bitrate: N/A
  Stream #0:0: Video: mpeg4 (Simple Profile) (FMP4 / 0x34504D46), yuv420p, 
320x240 [SAR 1:1 DAR 4:3], 25 tbr, 51200 tbn
    Metadata:
      encoder         : Lavc60.3.100 mpeg4
   1.30 M-V:  0.001 fd=   0 aq=    0KB vq=   40KB sq=    0B f=0/0   trate=   
1.1kbits/s speed=3.13x    
av_interleaved_write_frame(): Broken pipe
[out#1/nut @ 0x7fdbbaa0b000] Error muxing a packet
[out#1/nut @ 0x7fdbbaa0b000] Error writing trailer: Broken pipe16 bitrate=  
20.5kbits/s speed=13.5x    
frame= 2715 fps=339 q=-1.0 Lq=2.0 size=     492kB time=00:01:48.48 bitrate=  
37.2kbits/s speed=13.5x    
video:671kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing 
overhead: unknown
[libx264 @ 0x7fdbbaa0a340] frame I:11    Avg QP:16.89  size:  3393
[libx264 @ 0x7fdbbaa0a340] frame P:733   Avg QP:14.00  size:   472
[libx264 @ 0x7fdbbaa0a340] frame B:1971  Avg QP:14.24  size:    52
[libx264 @ 0x7fdbbaa0a340] consecutive B-frames:  1.0%  0.0% 19.6% 79.4%
[libx264 @ 0x7fdbbaa0a340] mb I  I16..4: 31.1% 38.6% 30.3%
[libx264 @ 0x7fdbbaa0a340] mb P  I16..4:  1.8%  1.6%  0.8%  P16..4:  7.2%  3.8% 
 2.6%  0.0%  0.0%    skip:82.2%
[libx264 @ 0x7fdbbaa0a340] mb B  I16..4:  0.2%  0.1%  0.0%  B16..8:  4.3%  0.1% 
 0.0%  direct: 0.1%  skip:95.2%  L0:52.9% L1:42.7% BI: 4.4%
[libx264 @ 0x7fdbbaa0a340] 8x8 transform intra:38.7% inter:36.4%
[libx264 @ 0x7fdbbaa0a340] coded y,u,v intra: 10.1% 10.7% 8.7% inter: 0.7% 0.8% 
0.7%
[libx264 @ 0x7fdbbaa0a340] i16 v,h,dc,p: 49% 32%  2% 17%
[libx264 @ 0x7fdbbaa0a340] i8 v,h,dc,ddl,ddr,vr,hd,vl,hu: 64%  5% 31%  0%  0%  
0%  0%  0%  0%
[libx264 @ 0x7fdbbaa0a340] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 31% 54% 11%  1%  1%  
1%  0%  1%  0%
[libx264 @ 0x7fdbbaa0a340] Weighted P-Frames: Y:0.0% UV:0.0%
[libx264 @ 0x7fdbbaa0a340] ref P L0: 68.5%  7.2% 21.0%  3.3%
[libx264 @ 0x7fdbbaa0a340] ref B L0: 58.4% 38.6%  3.1%
[libx264 @ 0x7fdbbaa0a340] ref B L1: 97.5%  2.5%
[libx264 @ 0x7fdbbaa0a340] kb/s:35.73
Exiting normally, received signal 2.

Kind Regards,
Dave Rice

_______________________________________________
ffmpeg-user mailing list
ffmpeg-user@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-user

To unsubscribe, visit link above, or email
ffmpeg-user-requ...@ffmpeg.org with subject "unsubscribe".

Reply via email to