[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