[FFmpeg-user] ffmpeg segmenter starves when using -re and high bitrate

Fing Cmo fingcmo at gmail.com
Tue May 28 20:14:27 CEST 2013


ulf,

Have you tried using the "-hls*" options instead of -segment.* options?

e.g.

ffmpeg -re -i VIDSOURCE -y  -c:v libx264 -b:v BITRATE -vprofile baseline
-preset medium -x264opts level=41 -threads 4 -s RESOLUTION -map 0:v
-map 0:a:0  -c:a libfaac -b:a 160000 -ac 2   -hls_time 10
-hls_list_size 6 -hls_wrap 18 -start_number 1 stream.m3u8

Would be curious to see if it changes anything.

FC.
...............................


On Tue, May 28, 2013 at 10:43 AM, ulf johansson <epkuson at gmail.com> wrote:

> Hi again,
> anyone have any ideas to isolate/remedy the problem?
> br
> uffe
>
>
> On Mon, May 27, 2013 at 8:30 AM, ulf johansson <epkuson at gmail.com> wrote:
>
> > Hello,
> > I would need some help with ffmpeg.
> >
> >
> > Project:
> > I'm trying to configure ffmpeg to provide live TV HLS streaming and
> > transcoding to my Ipad in my home.
> >
> > Input:
> > Video source: Hauppauge HD PVR(CBR) - analogue Component + OPTICAL =>
> h264
> > AAC mpegts
> > CPU: quadcore when full transcoding is used~ 19-39-% load on all cores.
> > (the lower bitrate => higher CPU load )
> > OS: LInux Ubuntu
> >
> > I had to break down the streaming in two steps. (I had some problem with
> > buffer handling, i.e. the HD PVR stopped streaming, when I performed
> > transcoding directly from /dev/video0)
> >
> > 1.) Record input stream to file and store the file in a mpeg TS file.
> > $ /usr/local/bin/ffmpeg -i /dev/video0 -vcodec copy -acodec copy -y
> > ~/repository/recorded_stream.ts
> >
> >
> > Approx. 10s delay until starting transcoding process on 'ts' file.
> >
> > 2.)Transcode 'ts' and stream using HLS of live TV to IPAD.
> > $/usr/local/bin/ffmpeg -re -i ~/repository/recorded_stream.ts  -vcodec
> > libx264 -b:v 2000k -acodec copy -s 1024x768 -aspect 4:3 -flags
> > -global_header -map 0 -f segment -segment_time 10 -segment_list test.m3u8
> > -segment_list_flags live -segment_list_size 0 -y -segment_format mpegts
> >  stream%05d.ts
> >
> > Problem Description:
> > ===============
> > When performing transcoding and using bitrate of approx > 1.2 M (b:v
> > 1000k), the live streaming to the IPAD starves after approximately a few
> > minutes when new segments are not produced quick enough, i.e. playing the
> > segments catches up with the available segments from the playlist even if
> > the player is not started until 3-4 segments are available in playlist.
> The
> > QOE result in a short stalls of the live video, and can be reduced by
> using
> > pause for a while , but will eventually catch up again and the stalls
> > resumes.
> >
> > When the higher bitrate is selected the transcoding FPS goes down 25-27,
> > which I believe could be the reason for starving the client. TV signal is
> > NTSC 1080i 59.94 interlaced, or 29.97 FPS, so I would expect the FPS
> output
> > to also be 30 FPS for the live transcoded HLS segments.
> > When I use 1M bitrate an output of 30 FPS is achieved and I don't
> > experience the starving of file segments.
> >
> > The same problem can be re-produced with using VLC for viewing the HLS
> > stream.
> >
> > I've tried to use forced FPS '-r 30' or '-r 29.97' on the transcoding
> > process but it seems to have no affect when higher bitrates are used.
> E.g.
> > if I set it to -r 32 it will only take affect if bitrate is < 1M.
> >
> > Would truly appreciate some help to solve the starving file segments
> since
> > is significantly impacts the QOE for the end user.
> >
> > ============================
> > 1) Recording file
> >
> > $ /usr/local/bin/ffmpeg -i /dev/video0 -vcodec copy -acodec copy -y
> > ~/repository/recorded_stream.ts
> > ffmpeg version git-2013-04-10-2383068 Copyright (c) 2000-2013 the FFmpeg
> > developers
> >   built on Apr 10 2013 00:29:02 with gcc 4.6 (Ubuntu/Linaro
> 4.6.3-1ubuntu5)
> >   configuration: --enable-gpl --enable-libass --enable-libfaac
> > --enable-libfdk-aac --enable-libmp3lame --enable-libopencore-amrnb
> > --enable-libopencore-amrwb --enable-libspeex --enable-librtmp
> > --enable-libtheora --enable-libvorbis --enable-libvpx --enable-x11grab
> > --enable-libx264 --enable-nonfree --enable-version3
> >   libavutil      52. 25.100 / 52. 25.100
> >   libavcodec     55.  2.100 / 55.  2.100
> >   libavformat    55.  1.100 / 55.  1.100
> >   libavdevice    55.  0.100 / 55.  0.100
> >   libavfilter     3. 50.100 /  3. 50.100
> >   libswscale      2.  2.100 /  2.  2.100
> >   libswresample   0. 17.102 /  0. 17.102
> >   libpostproc    52.  2.100 / 52.  2.100
> > [mpegts @ 0x29eefc0] max_analyze_duration 5000000 reached at 5013333
> > microseconds
> > Input #0, mpegts, from '/dev/video0':
> >   Duration: N/A, start: 0.387044, bitrate: 130 kb/s
> >   Program 1
> >     Stream #0:0[0x1011]: Video: h264 (Main) (HDMV / 0x564D4448), yuv420p,
> > 1920x1080 [SAR 1:1 DAR 16:9], 29.97 fps, 59.94 tbr, 90k tbn, 59.94 tbc
> >     Stream #0:1[0x1100]: Audio: aac ([15][0][0][0] / 0x000F), 48000 Hz,
> > stereo, fltp, 130 kb/s
> > Output #0, mpegts, to '/home/jocho/repository/recorded_stream.ts':
> >   Metadata:
> >     encoder         : Lavf55.1.100
> >     Stream #0:0: Video: h264 (HDMV / 0x564D4448), yuv420p, 1920x1080 [SAR
> > 1:1 DAR 16:9], q=2-31, 29.97 fps, 90k tbn, 29.97 tbc
> >     Stream #0:1: Audio: aac ([15][0][0][0] / 0x000F), 48000 Hz, stereo,
> > 130 kb/s
> > Stream mapping:
> >   Stream #0:0 -> #0:0 (copy)
> >   Stream #0:1 -> #0:1 (copy)
> > Press [q] to stop, [?] for help
> > frame=10219 fps= 62 q=-1.0 Lsize=  150029kB time=00:02:50.53
> > bitrate=7206.8kbits/s
> > video:135224kB audio:2719kB subtitle:0 global headers:0kB muxing overhead
> > 8.760707%
> > $
> > !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!1
> > 2.1) bitrate 1M, "no starve", no -r, FPS stats => 30 FPS (below 29FPS
> > which was the last stat output)
> >
> > $ /usr/local/bin/ffmpeg -re -i ~/repository/recorded_stream.ts -vcodec
> > libx264 -b:v 1000k -acodec copy -s 1024x768 -aspect 4:3 -flags
> > -global_header -map 0 -f segment -segment_time 10 -segment_list test.m3u8
> > -segment_list_flags live -segment_list_size 0 -y -segment_format mpegts
> >  stream%05d.ts
> > ffmpeg version git-2013-04-10-2383068 Copyright (c) 2000-2013 the FFmpeg
> > developers
> >   built on Apr 10 2013 00:29:02 with gcc 4.6 (Ubuntu/Linaro
> 4.6.3-1ubuntu5)
> >   configuration: --enable-gpl --enable-libass --enable-libfaac
> > --enable-libfdk-aac --enable-libmp3lame --enable-libopencore-amrnb
> > --enable-libopencore-amrwb --enable-libspeex --enable-librtmp
> > --enable-libtheora --enable-libvorbis --enable-libvpx --enable-x11grab
> > --enable-libx264 --enable-nonfree --enable-version3
> >   libavutil      52. 25.100 / 52. 25.100
> >   libavcodec     55.  2.100 / 55.  2.100
> >   libavformat    55.  1.100 / 55.  1.100
> >   libavdevice    55.  0.100 / 55.  0.100
> >   libavfilter     3. 50.100 /  3. 50.100
> >   libswscale      2.  2.100 /  2.  2.100
> >   libswresample   0. 17.102 /  0. 17.102
> >   libpostproc    52.  2.100 / 52.  2.100
> > [mpegts @ 0x2c4e760] max_analyze_duration 5000000 reached at 5003333
> > microseconds
> > Input #0, mpegts, from '/home/jocho/repository/recorded_stream.ts':
> >   Duration: 00:02:50.60, start: 1.400000, bitrate: 7204 kb/s
> >   Program 1
> >     Metadata:
> >       service_name    : Service01
> >       service_provider: FFmpeg
> >     Stream #0:0[0x100]: Video: h264 (Main) ([27][0][0][0] / 0x001B),
> > yuv420p, 1920x1080 [SAR 1:1 DAR 16:9], 29.97 fps, 59.94 tbr, 90k tbn,
> 59.94
> > tbc
> >     Stream #0:1[0x101]: Audio: aac ([15][0][0][0] / 0x000F), 48000 Hz,
> > stereo, fltp, 118 kb/s
> > [libx264 @ 0x2c549a0] using SAR=1/1
> > [libx264 @ 0x2c549a0] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.1
> > Cache64
> > [libx264 @ 0x2c549a0] profile High, level 3.1
> > [segment @ 0x2c53f00] Codec for stream 0 does not use global headers but
> > container format requires global headers
> > [segment @ 0x2c53f00] Codec for stream 1 does not use global headers but
> > container format requires global headers
> > Output #0, segment, to 'stream%05d.ts':
> >   Metadata:
> >     encoder         : Lavf55.1.100
> >     Stream #0:0: Video: h264, yuv420p, 1024x768 [SAR 1:1 DAR 4:3],
> > q=-1--1, 1000 kb/s, 90k tbn, 29.97 tbc
> >     Stream #0:1: Audio: aac ([15][0][0][0] / 0x000F), 48000 Hz, stereo,
> > 118 kb/s
> > Stream mapping:
> >   Stream #0:0 -> #0:0 (h264 -> libx264)
> >   Stream #0:1 -> #0:1 (copy)
> > Press [q] to stop, [?] for help
> > frame= 1105 fps= 29 q=32766.0 Lsize=N/A time=00:00:36.84 bitrate=N/A
> dup=1
> > drop=0
> > video:4368kB audio:588kB subtitle:0 global headers:0kB muxing overhead
> > -100.000434%
> > [libx264 @ 0x2c549a0] frame I:22    Avg QP:20.97  size: 18575
> > [libx264 @ 0x2c549a0] frame P:474   Avg QP:22.31  size:  6433
> > [libx264 @ 0x2c549a0] frame B:609   Avg QP:23.91  size:  1666
> > [libx264 @ 0x2c549a0] consecutive B-frames: 14.7% 27.3% 24.7% 33.3%
> > [libx264 @ 0x2c549a0] mb I  I16..4: 41.2% 50.9%  8.0%
> > [libx264 @ 0x2c549a0] mb P  I16..4:  6.8%  6.8%  0.6%  P16..4: 30.3%
>  5.2%
> >  3.1%  0.0%  0.0%    skip:47.2%
> > [libx264 @ 0x2c549a0] mb B  I16..4:  0.3%  0.3%  0.0%  B16..8: 23.2%
>  0.9%
> >  0.2%  direct: 1.0%  skip:74.2%  L0:36.7% L1:61.4% BI: 1.9%
> > [libx264 @ 0x2c549a0] final ratefactor: 22.56
> > [libx264 @ 0x2c549a0] 8x8 transform intra:48.6% inter:91.1%
> > [libx264 @ 0x2c549a0] coded y,uvDC,uvAC intra: 30.9% 34.7% 7.6% inter:
> > 6.1% 9.0% 0.3%
> > [libx264 @ 0x2c549a0] i16 v,h,dc,p: 36% 36%  4% 24%
> > [libx264 @ 0x2c549a0] i8 v,h,dc,ddl,ddr,vr,hd,vl,hu: 29% 19% 25%  3%  5%
> >  6%  5%  5%  4%
> > [libx264 @ 0x2c549a0] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 33% 32% 11%  3%  5%
> >  6%  4%  4%  2%
> > [libx264 @ 0x2c549a0] i8c dc,h,v,p: 65% 18% 14%  3%
> > [libx264 @ 0x2c549a0] Weighted P-Frames: Y:1.9% UV:0.4%
> > [libx264 @ 0x2c549a0] ref P L0: 66.4%  8.2% 18.6%  6.8%  0.0%
> > [libx264 @ 0x2c549a0] ref B L0: 81.7% 16.0%  2.3%
> > [libx264 @ 0x2c549a0] ref B L1: 94.4%  5.6%
> > [libx264 @ 0x2c549a0] kb/s:970.43
> >
> >
> >
> !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!1
> >
> > 2.2) bitrate 2M, "starve", no -r, FPS stats => 26-28 FPS (below 27FPS
> > which was the last stat output, but alternating 26-28 throughout the
> > trasnscoding)
> >
> >
> > $ /usr/local/bin/ffmpeg -re -i ~/repository/recorded_stream.ts -vcodec
> > libx264 -b:v 2000k -acodec copy -s 1024x768 -aspect 4:3 -flags
> > -global_header -map 0 -f segment -segment_time 10 -segment_list test.m3u8
> > -segment_list_flags live -segment_list_size 0 -y -segment_format mpegts
> >  stream%05d.ts
> > ffmpeg version git-2013-04-10-2383068 Copyright (c) 2000-2013 the FFmpeg
> > developers
> >   built on Apr 10 2013 00:29:02 with gcc 4.6 (Ubuntu/Linaro
> 4.6.3-1ubuntu5)
> >   configuration: --enable-gpl --enable-libass --enable-libfaac
> > --enable-libfdk-aac --enable-libmp3lame --enable-libopencore-amrnb
> > --enable-libopencore-amrwb --enable-libspeex --enable-librtmp
> > --enable-libtheora --enable-libvorbis --enable-libvpx --enable-x11grab
> > --enable-libx264 --enable-nonfree --enable-version3
> >   libavutil      52. 25.100 / 52. 25.100
> >   libavcodec     55.  2.100 / 55.  2.100
> >   libavformat    55.  1.100 / 55.  1.100
> >   libavdevice    55.  0.100 / 55.  0.100
> >   libavfilter     3. 50.100 /  3. 50.100
> >   libswscale      2.  2.100 /  2.  2.100
> >   libswresample   0. 17.102 /  0. 17.102
> >   libpostproc    52.  2.100 / 52.  2.100
> > [mpegts @ 0x1cb5760] max_analyze_duration 5000000 reached at 5003333
> > microseconds
> > Input #0, mpegts, from '/home/jocho/repository/recorded_stream.ts':
> >   Duration: 00:02:50.60, start: 1.400000, bitrate: 7204 kb/s
> >   Program 1
> >     Metadata:
> >       service_name    : Service01
> >       service_provider: FFmpeg
> >     Stream #0:0[0x100]: Video: h264 (Main) ([27][0][0][0] / 0x001B),
> > yuv420p, 1920x1080 [SAR 1:1 DAR 16:9], 29.97 fps, 59.94 tbr, 90k tbn,
> 59.94
> > tbc
> >     Stream #0:1[0x101]: Audio: aac ([15][0][0][0] / 0x000F), 48000 Hz,
> > stereo, fltp, 118 kb/s
> > [libx264 @ 0x1cbb9a0] using SAR=1/1
> > [libx264 @ 0x1cbb9a0] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.1
> > Cache64
> > [libx264 @ 0x1cbb9a0] profile High, level 3.1
> > [segment @ 0x1cbaf00] Codec for stream 0 does not use global headers but
> > container format requires global headers
> > [segment @ 0x1cbaf00] Codec for stream 1 does not use global headers but
> > container format requires global headers
> > Output #0, segment, to 'stream%05d.ts':
> >   Metadata:
> >     encoder         : Lavf55.1.100
> >     Stream #0:0: Video: h264, yuv420p, 1024x768 [SAR 1:1 DAR 4:3],
> > q=-1--1, 2000 kb/s, 90k tbn, 29.97 tbc
> >     Stream #0:1: Audio: aac ([15][0][0][0] / 0x000F), 48000 Hz, stereo,
> > 118 kb/s
> > Stream mapping:
> >   Stream #0:0 -> #0:0 (h264 -> libx264)
> >   Stream #0:1 -> #0:1 (copy)
> > Press [q] to stop, [?] for help
> > frame=  649 fps= 27 q=32766.0 Lsize=N/A time=00:00:21.71 bitrate=N/A
> dup=1
> > drop=0
> > video:5349kB audio:346kB subtitle:0 global headers:0kB muxing overhead
> > -100.000377%
> > [libx264 @ 0x1cbb9a0] frame I:15    Avg QP:17.04  size: 27166
> > [libx264 @ 0x1cbb9a0] frame P:301   Avg QP:18.57  size: 12511
> > [libx264 @ 0x1cbb9a0] frame B:333   Avg QP:20.28  size:  3916
> > [libx264 @ 0x1cbb9a0] consecutive B-frames: 18.2% 30.8% 28.2% 22.8%
> > [libx264 @ 0x1cbb9a0] mb I  I16..4: 31.2% 53.9% 15.0%
> > [libx264 @ 0x1cbb9a0] mb P  I16..4:  6.9% 10.2%  1.7%  P16..4: 36.1%
> 11.1%
> >  5.2%  0.0%  0.0%    skip:28.7%
> > [libx264 @ 0x1cbb9a0] mb B  I16..4:  0.6%  0.4%  0.1%  B16..8: 31.3%
>  2.9%
> >  0.5%  direct: 2.6%  skip:61.6%  L0:37.8% L1:57.2% BI: 5.1%
> > [libx264 @ 0x1cbb9a0] final ratefactor: 18.84
> > [libx264 @ 0x1cbb9a0] 8x8 transform intra:53.4% inter:86.7%
> > [libx264 @ 0x1cbb9a0] coded y,uvDC,uvAC intra: 44.7% 47.5% 18.7% inter:
> > 13.8% 13.3% 1.2%
> > [libx264 @ 0x1cbb9a0] i16 v,h,dc,p: 29% 35%  4% 31%
> > [libx264 @ 0x1cbb9a0] i8 v,h,dc,ddl,ddr,vr,hd,vl,hu: 32% 22% 19%  3%  5%
> >  6%  5%  5%  4%
> > [libx264 @ 0x1cbb9a0] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 34% 35% 12%  2%  4%
> >  4%  3%  3%  2%
> > [libx264 @ 0x1cbb9a0] i8c dc,h,v,p: 59% 20% 17%  3%
> > [libx264 @ 0x1cbb9a0] Weighted P-Frames: Y:2.7% UV:0.7%
> > [libx264 @ 0x1cbb9a0] ref P L0: 65.2%  7.0% 20.1%  7.6%  0.1%
> > [libx264 @ 0x1cbb9a0] ref B L0: 79.6% 18.4%  1.9%
> > [libx264 @ 0x1cbb9a0] ref B L1: 93.8%  6.2%
> > [libx264 @ 0x1cbb9a0] kb/s:2023.47
> >
> > !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!1
> >
> > 2.3) bitrate 4M, "starve", no -r, FPS stats => 22-24 FPS (below 21FPS
> > which was the last stat output, but alternating 21-24 throughout the
> > transcoding)
> >
> > $ /usr/local/bin/ffmpeg -re -i ~/repository/recorded_stream.ts -vcodec
> > libx264 -b:v 4000k -acodec copy -s 1024x768 -aspect 4:3 -flags
> > -global_header -map 0 -f segment -segment_time 10 -segment_list test.m3u8
> > -segment_list_flags live -segment_list_size 0 -y -segment_format mpegts
> >  stream%05d.ts
> > ffmpeg version git-2013-04-10-2383068 Copyright (c) 2000-2013 the FFmpeg
> > developers
> >   built on Apr 10 2013 00:29:02 with gcc 4.6 (Ubuntu/Linaro
> 4.6.3-1ubuntu5)
> >   configuration: --enable-gpl --enable-libass --enable-libfaac
> > --enable-libfdk-aac --enable-libmp3lame --enable-libopencore-amrnb
> > --enable-libopencore-amrwb --enable-libspeex --enable-librtmp
> > --enable-libtheora --enable-libvorbis --enable-libvpx --enable-x11grab
> > --enable-libx264 --enable-nonfree --enable-version3
> >   libavutil      52. 25.100 / 52. 25.100
> >   libavcodec     55.  2.100 / 55.  2.100
> >   libavformat    55.  1.100 / 55.  1.100
> >   libavdevice    55.  0.100 / 55.  0.100
> >   libavfilter     3. 50.100 /  3. 50.100
> >   libswscale      2.  2.100 /  2.  2.100
> >   libswresample   0. 17.102 /  0. 17.102
> >   libpostproc    52.  2.100 / 52.  2.100
> > [mpegts @ 0x301a760] max_analyze_duration 5000000 reached at 5003333
> > microseconds
> > Input #0, mpegts, from '/home/jocho/repository/recorded_stream.ts':
> >   Duration: 00:02:50.60, start: 1.400000, bitrate: 7204 kb/s
> >   Program 1
> >     Metadata:
> >       service_name    : Service01
> >       service_provider: FFmpeg
> >     Stream #0:0[0x100]: Video: h264 (Main) ([27][0][0][0] / 0x001B),
> > yuv420p, 1920x1080 [SAR 1:1 DAR 16:9], 29.97 fps, 59.94 tbr, 90k tbn,
> 59.94
> > tbc
> >     Stream #0:1[0x101]: Audio: aac ([15][0][0][0] / 0x000F), 48000 Hz,
> > stereo, fltp, 118 kb/s
> > [libx264 @ 0x30209a0] using SAR=1/1
> > [libx264 @ 0x30209a0] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.1
> > Cache64
> > [libx264 @ 0x30209a0] profile High, level 3.1
> > [segment @ 0x301ff00] Codec for stream 0 does not use global headers but
> > container format requires global headers
> > [segment @ 0x301ff00] Codec for stream 1 does not use global headers but
> > container format requires global headers
> > Output #0, segment, to 'stream%05d.ts':
> >   Metadata:
> >     encoder         : Lavf55.1.100
> >     Stream #0:0: Video: h264, yuv420p, 1024x768 [SAR 1:1 DAR 4:3],
> > q=-1--1, 4000 kb/s, 90k tbn, 29.97 tbc
> >     Stream #0:1: Audio: aac ([15][0][0][0] / 0x000F), 48000 Hz, stereo,
> > 118 kb/s
> > Stream mapping:
> >   Stream #0:0 -> #0:0 (h264 -> libx264)
> >   Stream #0:1 -> #0:1 (copy)
> > Press [q] to stop, [?] for help
> > frame=  484 fps= 21 q=32766.0 Lsize=N/A time=00:00:16.10 bitrate=N/A
> dup=1
> > drop=0
> > video:8041kB audio:257kB subtitle:0 global headers:0kB muxing overhead
> > -100.000259%
> > [libx264 @ 0x30209a0] frame I:10    Avg QP:12.15  size: 45657
> > [libx264 @ 0x30209a0] frame P:231   Avg QP:13.81  size: 24621
> > [libx264 @ 0x30209a0] frame B:243   Avg QP:15.47  size:  8599
> > [libx264 @ 0x30209a0] consecutive B-frames: 18.8% 33.1% 29.1% 19.0%
> > [libx264 @ 0x30209a0] mb I  I16..4: 24.8% 58.3% 16.9%
> > [libx264 @ 0x30209a0] mb P  I16..4:  6.2% 15.3%  3.5%  P16..4: 31.4%
> 19.2%
> >  9.5%  0.0%  0.0%    skip:14.9%
> > [libx264 @ 0x30209a0] mb B  I16..4:  0.8%  0.7%  0.2%  B16..8: 32.3%
>  9.2%
> >  2.2%  direct: 7.5%  skip:47.2%  L0:39.1% L1:49.7% BI:11.3%
> > [libx264 @ 0x30209a0] final ratefactor: 14.08
> > [libx264 @ 0x30209a0] 8x8 transform intra:59.8% inter:71.0%
> > [libx264 @ 0x30209a0] coded y,uvDC,uvAC intra: 65.1% 63.2% 43.7% inter:
> > 26.2% 18.8% 3.4%
> > [libx264 @ 0x30209a0] i16 v,h,dc,p: 26% 30%  5% 39%
> > [libx264 @ 0x30209a0] i8 v,h,dc,ddl,ddr,vr,hd,vl,hu: 34% 23% 18%  3%  4%
> >  6%  4%  5%  4%
> > [libx264 @ 0x30209a0] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 36% 33% 12%  2%  4%
> >  4%  3%  3%  2%
> > [libx264 @ 0x30209a0] i8c dc,h,v,p: 56% 20% 19%  4%
> > [libx264 @ 0x30209a0] Weighted P-Frames: Y:2.6% UV:0.9%
> > [libx264 @ 0x30209a0] ref P L0: 65.6%  5.7% 20.9%  7.7%  0.1%
> > [libx264 @ 0x30209a0] ref B L0: 80.2% 18.3%  1.5%
> > [libx264 @ 0x30209a0] ref B L1: 93.7%  6.3%
> > [libx264 @ 0x30209a0] kb/s:4078.74
> >
> >
> >
> >
> > !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!1
> >
> > 2.4) bitrate 2M, "starve", -r 30 , FPS stats => 26-28 FPS (below 28FPS
> > which was the last stat output, but alternating 26-28 throughout the
> > transcoding)
> > OBS, same result as 2.2 without -r 30
> >
> >
> > $ /usr/local/bin/ffmpeg -re -i ~/repository/recorded_stream.ts -r 30
> > -vcodec libx264 -b:v 2000k -acodec copy -s 1024x768 -aspect 4:3 -flags
> > -global_header -map 0 -f segment -segment_time 10 -segment_list test.m3u8
> > -segment_list_flags live -segment_list_size 0 -y -segment_format mpegts
> >  stream%05d.ts
> > ffmpeg version git-2013-04-10-2383068 Copyright (c) 2000-2013 the FFmpeg
> > developers
> >   built on Apr 10 2013 00:29:02 with gcc 4.6 (Ubuntu/Linaro
> 4.6.3-1ubuntu5)
> >   configuration: --enable-gpl --enable-libass --enable-libfaac
> > --enable-libfdk-aac --enable-libmp3lame --enable-libopencore-amrnb
> > --enable-libopencore-amrwb --enable-libspeex --enable-librtmp
> > --enable-libtheora --enable-libvorbis --enable-libvpx --enable-x11grab
> > --enable-libx264 --enable-nonfree --enable-version3
> >   libavutil      52. 25.100 / 52. 25.100
> >   libavcodec     55.  2.100 / 55.  2.100
> >   libavformat    55.  1.100 / 55.  1.100
> >   libavdevice    55.  0.100 / 55.  0.100
> >   libavfilter     3. 50.100 /  3. 50.100
> >   libswscale      2.  2.100 /  2.  2.100
> >   libswresample   0. 17.102 /  0. 17.102
> >   libpostproc    52.  2.100 / 52.  2.100
> > [mpegts @ 0x37db780] max_analyze_duration 5000000 reached at 5003333
> > microseconds
> > Input #0, mpegts, from '/home/jocho/repository/recorded_stream.ts':
> >   Duration: 00:02:50.60, start: 1.400000, bitrate: 7204 kb/s
> >   Program 1
> >     Metadata:
> >       service_name    : Service01
> >       service_provider: FFmpeg
> >     Stream #0:0[0x100]: Video: h264 (Main) ([27][0][0][0] / 0x001B),
> > yuv420p, 1920x1080 [SAR 1:1 DAR 16:9], 29.97 fps, 59.94 tbr, 90k tbn,
> 59.94
> > tbc
> >     Stream #0:1[0x101]: Audio: aac ([15][0][0][0] / 0x000F), 48000 Hz,
> > stereo, fltp, 118 kb/s
> > [libx264 @ 0x37e1d20] using SAR=1/1
> > [libx264 @ 0x37e1d20] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.1
> > Cache64
> > [libx264 @ 0x37e1d20] profile High, level 3.1
> > [segment @ 0x37e1060] Codec for stream 0 does not use global headers but
> > container format requires global headers
> > [segment @ 0x37e1060] Codec for stream 1 does not use global headers but
> > container format requires global headers
> > Output #0, segment, to 'stream%05d.ts':
> >   Metadata:
> >     encoder         : Lavf55.1.100
> >     Stream #0:0: Video: h264, yuv420p, 1024x768 [SAR 1:1 DAR 4:3],
> > q=-1--1, 2000 kb/s, 90k tbn, 30 tbc
> >     Stream #0:1: Audio: aac ([15][0][0][0] / 0x000F), 48000 Hz, stereo,
> > 118 kb/s
> > Stream mapping:
> >   Stream #0:0 -> #0:0 (h264 -> libx264)
> >   Stream #0:1 -> #0:1 (copy)
> > Press [q] to stop, [?] for help
> > frame=  851 fps= 28 q=32766.0 Lsize=N/A time=00:00:28.30 bitrate=N/A
> dup=2
> > drop=0
> > video:6738kB audio:451kB subtitle:0 global headers:0kB muxing overhead
> > -100.000299%
> > [libx264 @ 0x37e1d20] frame I:18    Avg QP:16.76  size: 30818
> > [libx264 @ 0x37e1d20] frame P:370   Avg QP:18.19  size: 12310
> > [libx264 @ 0x37e1d20] frame B:463   Avg QP:19.80  size:  3867
> > [libx264 @ 0x37e1d20] consecutive B-frames: 15.5% 27.0% 26.4% 31.0%
> > [libx264 @ 0x37e1d20] mb I  I16..4: 28.9% 55.1% 16.0%
> > [libx264 @ 0x37e1d20] mb P  I16..4:  6.6%  9.3%  1.6%  P16..4: 36.1%
> 11.1%
> >  5.5%  0.0%  0.0%    skip:29.9%
> > [libx264 @ 0x37e1d20] mb B  I16..4:  0.6%  0.5%  0.1%  B16..8: 30.8%
>  2.7%
> >  0.5%  direct: 2.7%  skip:62.2%  L0:38.6% L1:56.9% BI: 4.5%
> > [libx264 @ 0x37e1d20] final ratefactor: 18.40
> > [libx264 @ 0x37e1d20] 8x8 transform intra:53.0% inter:86.6%
> > [libx264 @ 0x37e1d20] coded y,uvDC,uvAC intra: 44.7% 48.5% 20.8% inter:
> > 13.2% 13.7% 1.3%
> > [libx264 @ 0x37e1d20] i16 v,h,dc,p: 31% 36%  5% 28%
> > [libx264 @ 0x37e1d20] i8 v,h,dc,ddl,ddr,vr,hd,vl,hu: 31% 22% 20%  3%  5%
> >  6%  5%  5%  4%
> > [libx264 @ 0x37e1d20] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 33% 34% 13%  3%  4%
> >  4%  4%  3%  2%
> > [libx264 @ 0x37e1d20] i8c dc,h,v,p: 59% 20% 18%  3%
> > [libx264 @ 0x37e1d20] Weighted P-Frames: Y:2.2% UV:0.5%
> > [libx264 @ 0x37e1d20] ref P L0: 65.1%  6.6% 20.4%  7.8%  0.0%
> > [libx264 @ 0x37e1d20] ref B L0: 79.4% 18.3%  2.3%
> > [libx264 @ 0x37e1d20] ref B L1: 93.2%  6.8%
> > [libx264 @ 0x37e1d20] kb/s:1946.00
> >
> > !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!1
> >
> > 2.5) bitrate 512k, "no starve", -r 32 , FPS stats => 32 FPS (below 31 FPS
> > which was the last stat output, but after initially a few around 29, it
> > stabilized to 32 fairly quickly.
> >
> > It shows that FPS can be forced.
> >
> >
> > $ /usr/local/bin/ffmpeg -re -i ~/repository/recorded_stream.ts -r 32
> > -vcodec libx264 -b:v 512k -acodec copy -s 1024x768 -aspect 4:3 -flags
> > -global_header -map 0 -f segment -segment_time 10 -segment_list test.m3u8
> > -segment_list_flags live -segment_list_size 0 -y -segment_format mpegts
> >  stream%05d.ts
> > ffmpeg version git-2013-04-10-2383068 Copyright (c) 2000-2013 the FFmpeg
> > developers
> >   built on Apr 10 2013 00:29:02 with gcc 4.6 (Ubuntu/Linaro
> 4.6.3-1ubuntu5)
> >   configuration: --enable-gpl --enable-libass --enable-libfaac
> > --enable-libfdk-aac --enable-libmp3lame --enable-libopencore-amrnb
> > --enable-libopencore-amrwb --enable-libspeex --enable-librtmp
> > --enable-libtheora --enable-libvorbis --enable-libvpx --enable-x11grab
> > --enable-libx264 --enable-nonfree --enable-version3
> >   libavutil      52. 25.100 / 52. 25.100
> >   libavcodec     55.  2.100 / 55.  2.100
> >   libavformat    55.  1.100 / 55.  1.100
> >   libavdevice    55.  0.100 / 55.  0.100
> >   libavfilter     3. 50.100 /  3. 50.100
> >   libswscale      2.  2.100 /  2.  2.100
> >   libswresample   0. 17.102 /  0. 17.102
> >   libpostproc    52.  2.100 / 52.  2.100
> > [mpegts @ 0x1dda780] max_analyze_duration 5000000 reached at 5003333
> > microseconds
> > Input #0, mpegts, from '/home/jocho/repository/recorded_stream.ts':
> >   Duration: 00:02:50.60, start: 1.400000, bitrate: 7204 kb/s
> >   Program 1
> >     Metadata:
> >       service_name    : Service01
> >       service_provider: FFmpeg
> >     Stream #0:0[0x100]: Video: h264 (Main) ([27][0][0][0] / 0x001B),
> > yuv420p, 1920x1080 [SAR 1:1 DAR 16:9], 29.97 fps, 59.94 tbr, 90k tbn,
> 59.94
> > tbc
> >     Stream #0:1[0x101]: Audio: aac ([15][0][0][0] / 0x000F), 48000 Hz,
> > stereo, fltp, 118 kb/s
> > [libx264 @ 0x1de0d20] using SAR=1/1
> > [libx264 @ 0x1de0d20] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.1
> > Cache64
> > [libx264 @ 0x1de0d20] profile High, level 3.1
> > [segment @ 0x1de0060] Codec for stream 0 does not use global headers but
> > container format requires global headers
> > [segment @ 0x1de0060] Codec for stream 1 does not use global headers but
> > container format requires global headers
> > Output #0, segment, to 'stream%05d.ts':
> >   Metadata:
> >     encoder         : Lavf55.1.100
> >     Stream #0:0: Video: h264, yuv420p, 1024x768 [SAR 1:1 DAR 4:3],
> > q=-1--1, 512 kb/s, 90k tbn, 32 tbc
> >     Stream #0:1: Audio: aac ([15][0][0][0] / 0x000F), 48000 Hz, stereo,
> > 118 kb/s
> > Stream mapping:
> >   Stream #0:0 -> #0:0 (h264 -> libx264)
> >   Stream #0:1 -> #0:1 (copy)
> > Press [q] to stop, [?] for help
> > frame=  914 fps= 31 q=32766.0 Lsize=N/A time=00:00:28.60 bitrate=N/A
> > dup=59 drop=0
> > video:1654kB audio:456kB subtitle:0 global headers:0kB muxing overhead
> > -100.001018%
> > [libx264 @ 0x1de0d20] frame I:18    Avg QP:27.26  size: 10046
> > [libx264 @ 0x1de0d20] frame P:407   Avg QP:29.04  size:  2918
> > [libx264 @ 0x1de0d20] frame B:489   Avg QP:31.59  size:   665
> > [libx264 @ 0x1de0d20] consecutive B-frames: 18.2% 24.3% 21.7% 35.9%
> > [libx264 @ 0x1de0d20] mb I  I16..4: 53.8% 42.9%  3.3%
> > [libx264 @ 0x1de0d20] mb P  I16..4:  7.1%  4.7%  0.3%  P16..4: 18.2%
>  2.0%
> >  0.8%  0.0%  0.0%    skip:66.8%
> > [libx264 @ 0x1de0d20] mb B  I16..4:  0.1%  0.2%  0.0%  B16..8: 13.5%
>  0.4%
> >  0.1%  direct: 0.2%  skip:85.5%  L0:30.1% L1:68.9% BI: 1.1%
> > [libx264 @ 0x1de0d20] final ratefactor: 28.13
> > [libx264 @ 0x1de0d20] 8x8 transform intra:40.7% inter:92.4%
> > [libx264 @ 0x1de0d20] coded y,uvDC,uvAC intra: 19.6% 19.0% 1.5% inter:
> > 2.0% 1.9% 0.0%
> > [libx264 @ 0x1de0d20] i16 v,h,dc,p: 43% 33%  5% 19%
> > [libx264 @ 0x1de0d20] i8 v,h,dc,ddl,ddr,vr,hd,vl,hu: 33% 18% 26%  3%  4%
> >  5%  4%  5%  3%
> > [libx264 @ 0x1de0d20] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 37% 27% 11%  3%  4%
> >  6%  4%  5%  2%
> > [libx264 @ 0x1de0d20] i8c dc,h,v,p: 80% 11%  9%  1%
> > [libx264 @ 0x1de0d20] Weighted P-Frames: Y:2.0% UV:0.5%
> > [libx264 @ 0x1de0d20] ref P L0: 66.6% 11.2% 16.4%  5.8%  0.0%
> > [libx264 @ 0x1de0d20] ref B L0: 85.0% 12.6%  2.4%
> > [libx264 @ 0x1de0d20] ref B L1: 96.2%  3.8%
> > [libx264 @ 0x1de0d20] kb/s:474.38
> >
> > !!!!!!!
> >
> > Would truly appreciate some help to solve the starving file segments
> since
> > is significantly impacts the QOE for the end user.
> > best regard
> > uffe
> >
> >
> _______________________________________________
> ffmpeg-user mailing list
> ffmpeg-user at ffmpeg.org
> http://ffmpeg.org/mailman/listinfo/ffmpeg-user
>


More information about the ffmpeg-user mailing list