[FFmpeg-user] FFmpeg: how to output over HTTP

Glenn W wolfe.t.glenn at gmail.com
Wed Mar 20 21:34:48 EET 2019


For reference, here are the results of my latest attempt to send chunked
data over HTTP to cloud endpoint behind HTTP Nginx Load Balancer:

See earlier posts for details on configuration and other errors which I
have resolved.

TLDR; Connection is being made, and server (receiving side) is getting an
EOF, but seemingly no data is getting through. I am receiving no errors
from client (sender) nor from my ingress controller (load balancer).

*Wireshark PCAP Logs:*

https://drive.google.com/file/d/1EdPmStjajZ6rvVFcN7upTT8ym6mSMIaU/view?usp=sharing

*From Client (sending) side:*

```
chill at life ~$ ffmpeg -re -i hq-video.mp4 -c:v libx264 -s 1280x720 -an -f
mpegts http://live.nycv.biz/push
ffmpeg version 4.1.1 Copyright (c) 2000-2019 the FFmpeg developers
  built with Apple LLVM version 10.0.0 (clang-1000.11.45.5)
  configuration: --prefix=/usr/local/Cellar/ffmpeg/4.1.1 --enable-shared
--enable-pthreads --enable-version3 --enable-hardcoded-tables
--enable-avresample --cc=clang
--host-cflags='-I/Library/Java/JavaVirtualMachines/openjdk-11.0.2.jdk/Contents/Home/include
-I/Library/Java/JavaVirtualMachines/openjdk-11.0.2.jdk/Contents/Home/include/darwin'
--host-ldflags= --enable-ffplay --enable-gnutls --enable-gpl
--enable-libaom --enable-libbluray --enable-libmp3lame --enable-libopus
--enable-librubberband --enable-libsnappy --enable-libtesseract
--enable-libtheora --enable-libvorbis --enable-libvpx --enable-libx264
--enable-libx265 --enable-libxvid --enable-lzma --enable-libfontconfig
--enable-libfreetype --enable-frei0r --enable-libass
--enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg
--enable-librtmp --enable-libspeex --enable-videotoolbox --disable-libjack
--disable-indev=jack --enable-libaom --enable-libsoxr
  libavutil      56. 22.100 / 56. 22.100
  libavcodec     58. 35.100 / 58. 35.100
  libavformat    58. 20.100 / 58. 20.100
  libavdevice    58.  5.100 / 58.  5.100
  libavfilter     7. 40.101 /  7. 40.101
  libavresample   4.  0.  0 /  4.  0.  0
  libswscale      5.  3.100 /  5.  3.100
  libswresample   3.  3.100 /  3.  3.100
  libpostproc    55.  3.100 / 55.  3.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'hq-video.mp4':
  Metadata:
    major_brand     : mp42
    minor_version   : 0
    compatible_brands: isommp42
    creation_time   : 2019-02-11T22:01:43.000000Z
    location        : +40.7298-073.9904/
    location-eng    : +40.7298-073.9904/
    com.android.version: 9
    com.android.capture.fps: 30.000000
  Duration: 00:01:42.85, start: 0.000000, bitrate: 42251 kb/s
    Stream #0:0(eng): Video: h264 (High) (avc1 / 0x31637661), yuvj420p(pc,
bt470bg/bt470bg/smpte170m), 3840x2160, 42033 kb/s, SAR 1:1 DAR 16:9, 29.95
fps, 30 tbr, 90k tbn, 180k tbc (default)
    Metadata:
      creation_time   : 2019-02-11T22:01:43.000000Z
      handler_name    : VideoHandle
    Stream #0:1(eng): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz,
stereo, fltp, 156 kb/s (default)
    Metadata:
      creation_time   : 2019-02-11T22:01:43.000000Z
      handler_name    : SoundHandle
Stream mapping:
  Stream #0:0 -> #0:0 (h264 (native) -> h264 (libx264))
Press [q] to stop, [?] for help
[swscaler @ 0x7faf93313200] deprecated pixel format used, make sure you did
set range correctly
[libx264 @ 0x7faf92810a00] using SAR=1/1
[libx264 @ 0x7faf92810a00] using cpu capabilities: MMX2 SSE2Fast SSSE3
SSE4.2 AVX FMA3 BMI2 AVX2
[libx264 @ 0x7faf92810a00] profile High, level 3.1
Output #0, mpegts, to 'http://live.nycv.biz/push':
  Metadata:
    major_brand     : mp42
    minor_version   : 0
    compatible_brands: isommp42
    com.android.capture.fps: 30.000000
    location        : +40.7298-073.9904/
    location-eng    : +40.7298-073.9904/
    com.android.version: 9
    encoder         : Lavf58.20.100
    Stream #0:0(eng): Video: h264 (libx264), yuvj420p(pc), 1280x720 [SAR
1:1 DAR 16:9], q=-1--1, 30 fps, 90k tbn, 30 tbc (default)
    Metadata:
      creation_time   : 2019-02-11T22:01:43.000000Z
      handler_name    : VideoHandle
      encoder         : Lavc58.35.100 libx264
    Side data:
      cpb: bitrate max/min/avg: 0/0/0 buffer size: 0 vbv_delay: -1
frame= 3080 fps= 30 q=-1.0 Lsize=   26613kB time=00:01:42.76
bitrate=2121.5kbits/s speed=0.989x
video:24332kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB
muxing overhead: 9.375980%
[libx264 @ 0x7faf92810a00] frame I:13    Avg QP:20.26  size:217796
[libx264 @ 0x7faf92810a00] frame P:947   Avg QP:23.33  size: 18634
[libx264 @ 0x7faf92810a00] frame B:2120  Avg QP:28.06  size:  2094
[libx264 @ 0x7faf92810a00] consecutive B-frames:  5.6%  5.3%  7.2% 81.8%
[libx264 @ 0x7faf92810a00] mb I  I16..4:  6.2% 29.5% 64.3%
[libx264 @ 0x7faf92810a00] mb P  I16..4:  0.1%  1.1%  0.6%  P16..4: 35.2%
9.8% 10.5%  0.0%  0.0%    skip:42.8%
[libx264 @ 0x7faf92810a00] mb B  I16..4:  0.0%  0.1%  0.0%  B16..8: 21.7%
1.3%  0.5%  direct: 0.6%  skip:75.7%  L0:31.6% L1:64.4% BI: 4.0%
[libx264 @ 0x7faf92810a00] 8x8 transform intra:49.9% inter:55.7%
[libx264 @ 0x7faf92810a00] coded y,uvDC,uvAC intra: 90.1% 70.4% 45.4%
inter: 9.2% 5.3% 0.7%
[libx264 @ 0x7faf92810a00] i16 v,h,dc,p: 10% 31%  8% 51%
[libx264 @ 0x7faf92810a00] i8 v,h,dc,ddl,ddr,vr,hd,vl,hu: 13% 18% 19%  7%
8% 10%  8%  8%  9%
[libx264 @ 0x7faf92810a00] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 18% 31% 11%  6%
6%  7%  7%  6%  8%
[libx264 @ 0x7faf92810a00] i8c dc,h,v,p: 47% 29% 18%  6%
[libx264 @ 0x7faf92810a00] Weighted P-Frames: Y:1.0% UV:0.0%
[libx264 @ 0x7faf92810a00] ref P L0: 68.4% 12.5% 13.7%  5.3%  0.1%
[libx264 @ 0x7faf92810a00] ref B L0: 90.0%  7.4%  2.6%
[libx264 @ 0x7faf92810a00] ref B L1: 94.4%  5.6%
[libx264 @ 0x7faf92810a00] kb/s:1937.73
```

*From Server (receiving) side:*

```
/scripts # . ffmpeg-listen.sh
current time @ 1553109598
ffmpeg version 4.1.1 Copyright (c) 2000-2019 the FFmpeg developers
  built with gcc 6.4.0 (Alpine 6.4.0)
  configuration: --disable-debug --disable-doc --disable-ffplay
--enable-ffmpeg --enable-protocol=rtp --enable-protocol=udp
--enable-protocol=file --enable-protocol=crypto --enable-protocol=data
--enable-encoder=mp4 --enable-encoder=rtp --enable-decoder=rtp
--enable-encoder='rawvideo,libx264' --enable-decoder=h264
--enable-encoder=h264 --enable-muxer=segment
--enable-muxer='stream_segment,ssegment' --enable-muxer='rawvideo,mp4'
--enable-muxer=rtsp --enable-muxer=h264 --enable-demuxer=rawvideo
--enable-demuxer=mov --enable-demuxer=h264 --enable-demuxer=rtsp
--enable-parser=h264 --enable-parser=mpeg4 --enable-avcodec
--enable-avformat --enable-avfilter --enable-gpl --enable-small
--enable-libx264 --enable-nonfree --enable-openssl
  libavutil      56. 22.100 / 56. 22.100
  libavcodec     58. 35.100 / 58. 35.100
  libavformat    58. 20.100 / 58. 20.100
  libavdevice    58.  5.100 / 58.  5.100
  libavfilter     7. 40.101 /  7. 40.101
  libswscale      5.  3.100 /  5.  3.100
  libswresample   3.  3.100 /  3.  3.100
  libpostproc    55.  3.100 / 55.  3.100
Splitting the commandline.
Reading option '-loglevel' ... matched as option 'loglevel' (set logging
level) with argument 'debug'.
Reading option '-listen' ... matched as AVOption 'listen' with argument '1'.
Reading option '-i' ... matched as input url with argument '
http://0.0.0.0:5558/push'.
Reading option '-c:v' ... matched as option 'c' (codec name) with argument
'h264'.
Reading option '-r' ... matched as option 'r' (set frame rate (Hz value,
fraction or abbreviation)) with argument '30'.
Reading option 'test.mpegts' ... matched as output url.
Reading option '-y' ... matched as option 'y' (overwrite output files) with
argument '1'.
Finished splitting the commandline.
Parsing a group of options: global .
Applying option loglevel (set logging level) with argument debug.
Applying option y (overwrite output files) with argument 1.
Successfully parsed a group of options.
Parsing a group of options: input url http://0.0.0.0:5558/push.
Successfully parsed a group of options.
Opening an input file: http://0.0.0.0:5558/push.
[NULL @ 0x55959ceed080] Opening 'http://0.0.0.0:5558/push' for reading
[http @ 0x55959ceed9c0] Setting default whitelist
'http,https,tls,rtp,tcp,udp,crypto,httpproxy'
http://0.0.0.0:5558/push: End of file
```

*From Ingress Controller Logs*:

```
2019/03/20 19:21:06 [warn] 37#37: *32269 a client request body is buffered
to a temporary file /tmp/client-body/0000000005, client: 10.52.0.1, server:
live.nycv.biz, request: "POST /push HTTP/1.1", host: "live.nycv.biz"
10.52.0.1 - [10.52.0.1] - - [20/Mar/2019:19:22:48 +0000] "POST /push
HTTP/1.1" 499 0 "-" "Lavf/58.20.100" 27276563 103.995
[default-live-rtsp-in-5558] 10.52.0.32:5558 0 0.000 -
7798306d3848eee1b4837971f1167a69
```

I'm really confused what's happening because it seems like it should be
working.

Thanks again, really appreciate all the help.

Best,
Glenn W

On Wed, Mar 20, 2019 at 2:31 PM Glenn W <wolfe.t.glenn at gmail.com> wrote:

> > btw, did you set client_max_body_size  in nginx.conf ? something like
> 1000000M :-)
>
> Yes, see:
>
>  "Now, setting my nginx configuration to not check for the body size by
> setting max to 0 in the ingress configuration template, I tried again: "
>
> I set to zero so as to forgo the body size check altogether, as can be
> seen here:
> http://nginx.org/en/docs/http/ngx_http_core_module.html#client_max_body_size
>
> That is how I got to not throw same error.
>
> However, as described, I am still experiencing problem ingesting the
> packets.
>
>
>
> On Wed, Mar 20, 2019 at 1:32 PM andrei ka <andrei.k.gml at gmail.com> wrote:
>
>> btw, did you set client_max_body_size  in nginx.conf ? something like
>> 1000000M :-)
>>
>> On Wed, Mar 20, 2019 at 6:03 PM Glenn W <wolfe.t.glenn at gmail.com> wrote:
>>
>> > Thanks Moritz,
>> >
>> > > File share host. ;-)
>> >
>> > So true. Please see below link for more full example log from my local
>> > tests:
>> >
>> >
>> >
>> https://drive.google.com/file/d/1HMS64eBDpTRlFwVarz8G75IffHzgqvCV/view?usp=sharing
>> >
>> > > I would guess that this trace was started *after* the HTTP
>> > connection was established.
>> >
>> > This time I definitely started the trace before I even started either
>> > ffmpeg command in my terminal and still see similar behavior (many TCP
>> > connections before any HTTP header). You can still see how the POSTS are
>> > disparately spread throughout the packets. I'm confused about this
>> > behavior.
>> >
>> > > I'm totally convinced that if you use ffmpeg the way you are doing,
>> you
>> > use HTTP only.
>> >
>> > So are you thinking all those TCP [PSH, ACK] packets are contained
>> within a
>> > given HTTP POST?
>> >
>> > If you look at the first few packets, I see that FFmpeg first sends a [
>> SYN
>> > ], followed by a [ SYN, ACK ] response from server, followed by an [
>> ACK ]
>> > from client. At this point, should it not initiate HTTP protocol with
>> > header and endpoint? Instead it starts sending TCP [PSH, ACK]'s.
>> >
>> > Perhaps I am confused how this should work.  What ends up happening if I
>> > point this at my HTTP load balancer is the message is never passed to
>> the
>> > backend service properly. It never is able to establish a connection.
>> >
>> > > Does it also expect particular ports? It will need to be configured to
>> > understand the same ports, right?
>> >
>> > I use an nginx http ingress to load balance http headers to respective
>> > backend services listening on TCP ports on various pods. In this case,
>> my
>> > ingress would load balance HTTP <an-example-endpoint>/video to port
>> 5558 on
>> > whichever pod. That pod will be running the same listen command.
>> >
>> > *UPDATE: *
>> >
>> > After digging into this more, I think I found what was going wrong!
>> Looking
>> > at my nginx-controller logs, I see that I am getting an error because
>> the
>> > `client intended to send too large chunked body` :
>> >
>> > ```
>> > 2019/03/20 16:02:41 [warn] 324#324: *3468886 a client request body is
>> > buffered to a temporary file /tmp/client-body/0000000009, client:
>> > 10.52.0.1, server: live.nycv.biz, request: "POST /push HTTP/1.1",
>> host: "
>> > live.nycv.biz"
>> > 2019/03/20 16:02:42 [error] 324#324: *3468886 client intended to send
>> too
>> > large chunked body: 1046500+32768 bytes, client: 10.52.0.1, server:
>> > live.nycv.biz, request: "POST /push HTTP/1.1", host: "live.nycv.biz"
>> > ```
>> >
>> > As before, when I was sending to server, after about a minute of sending
>> > the video, I would see an error on the client side from FFmpeg:
>> >
>> > ```
>> > av_interleaved_write_frame(): Broken pipeB time=00:00:35.10
>> > bitrate=17993.7kbits/s speed=0.399x
>> > Error writing trailer of http://live.nycv.biz/push: Broken pipe
>> > ```
>> >
>> > Now, setting my nginx configuration to not check for the body size by
>> > setting max to 0 in the ingress configuration template, I tried again:
>> >
>> > (Side note: Is there any way to tell FFmpeg to set a maximum on the
>> chunked
>> > bodies before it sends the HTTP POST? )
>> >
>> > *From Client (sending side) : *
>> >
>> > chill at life ~$ ffmpeg -re -i hq-video.mp4 -c:v libx264 -an -f mpegts
>> > http://live.nycv.biz/push
>> > ffmpeg version 4.1.1 Copyright (c) 2000-2019 the FFmpeg developers
>> >   built with Apple LLVM version 10.0.0 (clang-1000.11.45.5)
>> >   configuration: --prefix=/usr/local/Cellar/ffmpeg/4.1.1 --enable-shared
>> > --enable-pthreads --enable-version3 --enable-hardcoded-tables
>> > --enable-avresample --cc=clang
>> >
>> >
>> --host-cflags='-I/Library/Java/JavaVirtualMachines/openjdk-11.0.2.jdk/Contents/Home/include
>> >
>> >
>> -I/Library/Java/JavaVirtualMachines/openjdk-11.0.2.jdk/Contents/Home/include/darwin'
>> > --host-ldflags= --enable-ffplay --enable-gnutls --enable-gpl
>> > --enable-libaom --enable-libbluray --enable-libmp3lame --enable-libopus
>> > --enable-librubberband --enable-libsnappy --enable-libtesseract
>> > --enable-libtheora --enable-libvorbis --enable-libvpx --enable-libx264
>> > --enable-libx265 --enable-libxvid --enable-lzma --enable-libfontconfig
>> > --enable-libfreetype --enable-frei0r --enable-libass
>> > --enable-libopencore-amrnb --enable-libopencore-amrwb
>> --enable-libopenjpeg
>> > --enable-librtmp --enable-libspeex --enable-videotoolbox
>> --disable-libjack
>> > --disable-indev=jack --enable-libaom --enable-libsoxr
>> >   libavutil      56. 22.100 / 56. 22.100
>> >   libavcodec     58. 35.100 / 58. 35.100
>> >   libavformat    58. 20.100 / 58. 20.100
>> >   libavdevice    58.  5.100 / 58.  5.100
>> >   libavfilter     7. 40.101 /  7. 40.101
>> >   libavresample   4.  0.  0 /  4.  0.  0
>> >   libswscale      5.  3.100 /  5.  3.100
>> >   libswresample   3.  3.100 /  3.  3.100
>> >   libpostproc    55.  3.100 / 55.  3.100
>> > Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'hq-video.mp4':
>> >   Metadata:
>> >     major_brand     : mp42
>> >     minor_version   : 0
>> >     compatible_brands: isommp42
>> >     creation_time   : 2019-02-11T22:01:43.000000Z
>> >     location        : +40.7298-073.9904/
>> >     location-eng    : +40.7298-073.9904/
>> >     com.android.version: 9
>> >     com.android.capture.fps: 30.000000
>> >   Duration: 00:01:42.85, start: 0.000000, bitrate: 42251 kb/s
>> >     Stream #0:0(eng): Video: h264 (High) (avc1 / 0x31637661),
>> yuvj420p(pc,
>> > bt470bg/bt470bg/smpte170m), 3840x2160, 42033 kb/s, SAR 1:1 DAR 16:9,
>> 29.95
>> > fps, 30 tbr, 90k tbn, 180k tbc (default)
>> >     Metadata:
>> >       creation_time   : 2019-02-11T22:01:43.000000Z
>> >       handler_name    : VideoHandle
>> >     Stream #0:1(eng): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz,
>> > stereo, fltp, 156 kb/s (default)
>> >     Metadata:
>> >       creation_time   : 2019-02-11T22:01:43.000000Z
>> >       handler_name    : SoundHandle
>> > Stream mapping:
>> >   Stream #0:0 -> #0:0 (h264 (native) -> h264 (libx264))
>> > Press [q] to stop, [?] for help
>> > [libx264 @ 0x7fe0e4803e00] using SAR=1/1
>> > [libx264 @ 0x7fe0e4803e00] using cpu capabilities: MMX2 SSE2Fast SSSE3
>> > SSE4.2 AVX FMA3 BMI2 AVX2
>> > [libx264 @ 0x7fe0e4803e00] profile High, level 5.1
>> > Output #0, mpegts, to 'http://live.nycv.biz/push':
>> >   Metadata:
>> >     major_brand     : mp42
>> >     minor_version   : 0
>> >     compatible_brands: isommp42
>> >     com.android.capture.fps: 30.000000
>> >     location        : +40.7298-073.9904/
>> >     location-eng    : +40.7298-073.9904/
>> >     com.android.version: 9
>> >     encoder         : Lavf58.20.100
>> >     Stream #0:0(eng): Video: h264 (libx264), yuvj420p(pc), 3840x2160
>> [SAR
>> > 1:1 DAR 16:9], q=-1--1, 30 fps, 90k tbn, 30 tbc (default)
>> >     Metadata:
>> >       creation_time   : 2019-02-11T22:01:43.000000Z
>> >       handler_name    : VideoHandle
>> >       encoder         : Lavc58.35.100 libx264
>> >     Side data:
>> >       cpb: bitrate max/min/avg: 0/0/0 buffer size: 0 vbv_delay: -1
>> > frame= 3080 fps= 11 q=-1.0 Lsize=  254544kB time=00:01:42.76
>> > bitrate=20290.8kbits/s speed=0.379x
>> > video:235782kB audio:0kB subtitle:0kB other streams:0kB global
>> headers:0kB
>> > muxing overhead: 7.957043%
>> > [libx264 @ 0x7fe0e4803e00] frame I:13    Avg QP:20.17  size:930179
>> > [libx264 @ 0x7fe0e4803e00] frame P:992   Avg QP:23.19  size:154103
>> > [libx264 @ 0x7fe0e4803e00] frame B:2075  Avg QP:27.27  size: 36857
>> > [libx264 @ 0x7fe0e4803e00] consecutive B-frames:  9.0%  2.2%  3.7% 85.1%
>> > [libx264 @ 0x7fe0e4803e00] mb I  I16..4:  0.9% 86.0% 13.1%
>> > [libx264 @ 0x7fe0e4803e00] mb P  I16..4:  0.1%  4.5%  0.3%  P16..4:
>> 48.4%
>> > 9.9%  8.0%  0.0%  0.0%    skip:28.8%
>> > [libx264 @ 0x7fe0e4803e00] mb B  I16..4:  0.0%  1.5%  0.1%  B16..8:
>> 42.0%
>> > 1.4%  0.4%  direct: 1.0%  skip:53.7%  L0:42.0% L1:56.0% BI: 2.1%
>> > [libx264 @ 0x7fe0e4803e00] 8x8 transform intra:92.0% inter:60.7%
>> > [libx264 @ 0x7fe0e4803e00] coded y,uvDC,uvAC intra: 91.2% 56.8% 13.3%
>> > inter: 14.0% 8.8% 0.2%
>> > [libx264 @ 0x7fe0e4803e00] i16 v,h,dc,p: 17% 29% 23% 30%
>> > [libx264 @ 0x7fe0e4803e00] i8 v,h,dc,ddl,ddr,vr,hd,vl,hu: 13% 16% 26%
>> 6%
>> > 7%  8%  8%  7%  9%
>> > [libx264 @ 0x7fe0e4803e00] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 17% 22% 12%
>> 7%
>> > 10%  8%  9%  7%  8%
>> > [libx264 @ 0x7fe0e4803e00] i8c dc,h,v,p: 59% 21% 17%  3%
>> > [libx264 @ 0x7fe0e4803e00] Weighted P-Frames: Y:0.7% UV:0.0%
>> > [libx264 @ 0x7fe0e4803e00] ref P L0: 69.0% 13.9% 14.2%  2.8%  0.0%
>> > [libx264 @ 0x7fe0e4803e00] ref B L0: 93.7%  5.6%  0.8%
>> > [libx264 @ 0x7fe0e4803e00] ref B L1: 94.1%  5.9%
>> > [libx264 @ 0x7fe0e4803e00] kb/s:18777.01
>> >
>> > Looks like everything went through alright from client perspective, *no
>> > more `broken pipe error`*.
>> >
>> > *However, *
>> >
>> > From Server Side (receiving):
>> >
>> > I am still not getting any data through:
>> >
>> > Inside my kubernetes pod:
>> >
>> > ```
>> > / # . scripts/ffmpeg-listen.sh
>> > current time @ 1553099678
>> > ffmpeg version 4.1.1 Copyright (c) 2000-2019 the FFmpeg developers
>> >   built with gcc 6.4.0 (Alpine 6.4.0)
>> >   configuration: --disable-debug --disable-doc --disable-ffplay
>> > --enable-ffmpeg --enable-protocol=rtp --enable-protocol=udp
>> > --enable-protocol=file --enable-protocol=crypto --enable-protocol=data
>> > --enable-encoder=mp4 --enable-encoder=rtp --enable-decoder=rtp
>> > --enable-encoder='rawvideo,libx264' --enable-decoder=h264
>> > --enable-encoder=h264 --enable-muxer=segment
>> > --enable-muxer='stream_segment,ssegment' --enable-muxer='rawvideo,mp4'
>> > --enable-muxer=rtsp --enable-muxer=h264 --enable-demuxer=rawvideo
>> > --enable-demuxer=mov --enable-demuxer=h264 --enable-demuxer=rtsp
>> > --enable-parser=h264 --enable-parser=mpeg4 --enable-avcodec
>> > --enable-avformat --enable-avfilter --enable-gpl --enable-small
>> > --enable-libx264 --enable-nonfree --enable-openssl
>> >   libavutil      56. 22.100 / 56. 22.100
>> >   libavcodec     58. 35.100 / 58. 35.100
>> >   libavformat    58. 20.100 / 58. 20.100
>> >   libavdevice    58.  5.100 / 58.  5.100
>> >   libavfilter     7. 40.101 /  7. 40.101
>> >   libswscale      5.  3.100 /  5.  3.100
>> >   libswresample   3.  3.100 /  3.  3.100
>> >   libpostproc    55.  3.100 / 55.  3.100
>> > Splitting the commandline.
>> > Reading option '-loglevel' ... matched as option 'loglevel' (set logging
>> > level) with argument 'debug'.
>> > Reading option '-listen' ... matched as AVOption 'listen' with argument
>> > '1'.
>> > Reading option '-i' ... matched as input url with argument '
>> > http://0.0.0.0:5558'.
>> > Reading option '-c:v' ... matched as option 'c' (codec name) with
>> argument
>> > 'h264'.
>> > Reading option '-r' ... matched as option 'r' (set frame rate (Hz value,
>> > fraction or abbreviation)) with argument '30'.
>> > Reading option '-flags' ... matched as AVOption 'flags' with argument
>> > '+cgop'.
>> > Reading option '-g' ... matched as AVOption 'g' with argument '30'.
>> > Reading option '-hls_segment_filename' ... matched as AVOption
>> > 'hls_segment_filename' with argument '/fuse/tmp/file%03d.ts'.
>> > Reading option '-hls_time' ... matched as AVOption 'hls_time' with
>> argument
>> > '1'.
>> > Reading option '/fuse/tmp/out.m3u8' ... matched as output url.
>> > Reading option '-y' ... matched as option 'y' (overwrite output files)
>> with
>> > argument '1'.
>> > Finished splitting the commandline.
>> > Parsing a group of options: global .
>> > Applying option loglevel (set logging level) with argument debug.
>> > Applying option y (overwrite output files) with argument 1.
>> > Successfully parsed a group of options.
>> > Parsing a group of options: input url http://0.0.0.0:5558.
>> > Successfully parsed a group of options.
>> > Opening an input file: http://0.0.0.0:5558.
>> > [NULL @ 0x5610666ab240] Opening 'http://0.0.0.0:5558' for reading
>> > [http @ 0x5610666abc00] Setting default whitelist
>> > 'http,https,tls,rtp,tcp,udp,crypto,httpproxy'
>> > http://0.0.0.0:5558: End of file
>> > ```
>> >
>> > With no indication that any data actually made it though to the pod,
>> > however, I did notice that the EOF did come about the exact same time
>> that
>> > the client side process finished, which is quite peculiar.
>> >
>> >
>> > And finally, here are the logs from the nginx-controller:
>> >
>> > ```
>> > 10.52.0.1 - [10.52.0.1] - - [20/Mar/2019:16:50:47 +0000] "POST /push
>> > HTTP/1.1" 499 0 "-" "Lavf/58.20.100" 260727893 270.979
>> > [default-live-rtsp-in-5558] 10.52.0.32:5558 0 0.001 -
>> > 8a27399690c628bd357ccf7216bf4aa6
>> > ```
>> >
>> > Simply a POST with no error... this would indicate strangely that a
>> single
>> > chunked POST is coming with after all the packets have been sent, which
>> is
>> > a bit crazy. I would much rather it break it up into many chunked POSTs.
>> >
>> >
>> > This is quite a mystery to me what is going wrong. I really appreciate
>> your
>> > help in getting to the bottom of this.
>> >
>> > Best,
>> > Glenn W
>> >
>> > On Wed, Mar 20, 2019 at 8:20 AM Ted Park <kumowoon1025 at gmail.com>
>> wrote:
>> >
>> > > > In my trace which I had analyzed as a proof of concept, HTTP was
>> > > > perfectly recognized. I had used port 8888, while my Wireshark's
>> HTTP
>> > > > protocol seems to be configured to
>> > > > "80,3128,3132,5985,8080,8088,11371,1900,2869,2710". So Wireshark
>> should
>> > > > be smart enough...
>> > >
>> > > You must be right, the only thing I can think of is if the capture was
>> > > started after ffmpeg was run and only the chunked content was captured
>> > that
>> > > can’t be decoded without the headers.
>> > >
>> > > >> The more important question is if there is an issue: Segmentation
>> > Fault
>> > > 11
>> > > >
>> > > > This is not an issue. I can segment the mpegts chunks just fine.
>> This
>> > > error
>> > > > is coming due to the nature of how I am running my server side `-f
>> null
>> > > -`
>> > > > to output null to stdin (not how I would normally) for the sole
>> purpose
>> > > of
>> > > > testing network transport.
>> > >
>> > > You misunderstand, the message isn’t regarding segmenting the stream,
>> it
>> > > might indicate an issue within ffmpeg itself
>> > > _______________________________________________
>> > > ffmpeg-user mailing list
>> > > ffmpeg-user at ffmpeg.org
>> > > https://ffmpeg.org/mailman/listinfo/ffmpeg-user
>> > >
>> > > To unsubscribe, visit link above, or email
>> > > ffmpeg-user-request at ffmpeg.org with subject "unsubscribe".
>> > _______________________________________________
>> > ffmpeg-user mailing list
>> > ffmpeg-user at ffmpeg.org
>> > https://ffmpeg.org/mailman/listinfo/ffmpeg-user
>> >
>> > To unsubscribe, visit link above, or email
>> > ffmpeg-user-request at ffmpeg.org with subject "unsubscribe".
>> _______________________________________________
>> ffmpeg-user mailing list
>> ffmpeg-user at ffmpeg.org
>> https://ffmpeg.org/mailman/listinfo/ffmpeg-user
>>
>> To unsubscribe, visit link above, or email
>> ffmpeg-user-request at ffmpeg.org with subject "unsubscribe".
>
>


More information about the ffmpeg-user mailing list