[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