[FFmpeg-user] ffplay with -vf histogram | waveform at full range luma
Paul B Mahol
onemda at gmail.com
Fri Dec 6 13:09:41 CET 2013
On 12/5/13, Husinsky Matthias <Matthias.Husinsky at fhstp.ac.at> wrote:
> Hello,
>
> The histogram video filter behaves odd in waveform mode when using an
> input file that has full range luma (yuvj420p).
> Please check with this file (recorded by a Canon 5DmII):
> http://www.datafilehost.com/d/acd54299
>
> When applying the histogram filter as follows the histogram is fine (luma
> values streched from 0-255)
>
> ---
> mhusinsky$ ffplay -vf histogram fullrange_y.mp4
> ffplay version 2.1.git-65f41b5 Copyright (c) 2003-2013 the FFmpeg
> developers
> built on Dec 3 2013 21:42:13 with Apple LLVM version 5.0
> (clang-500.2.79) (based on LLVM 3.3svn)
> configuration: --prefix=/opt/local --enable-swscale --enable-avfilter
> --enable-avresample --enable-libmp3lame --enable-libvorbis
> --enable-libopus --enable-libtheora --enable-libschroedinger
> --enable-libopenjpeg --enable-libmodplug --enable-libvpx --enable-libspeex
> --enable-libass --enable-libbluray --enable-gnutls --enable-libfreetype
> --disable-indev=jack --disable-outdev=xv --mandir=/opt/local/share/man
> --enable-shared --enable-pthreads --cc=/usr/bin/clang --arch=x86_64
> --enable-yasm --enable-gpl --enable-postproc --enable-libx264
> --enable-libxvid --enable-version3 --enable-libopencore-amrnb
> --enable-libopencore-amrwb --enable-nonfree --enable-libfaac
> libavutil 52. 56.100 / 52. 56.100
> libavcodec 55. 44.100 / 55. 44.100
> libavformat 55. 21.102 / 55. 21.102
> libavdevice 55. 5.102 / 55. 5.102
> libavfilter 3. 91.100 / 3. 91.100
> libavresample 1. 1. 0 / 1. 1. 0
> libswscale 2. 5.101 / 2. 5.101
> libswresample 0. 17.104 / 0. 17.104
> libpostproc 52. 3.100 / 52. 3.100
> Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'fullrange_y.mp4':B f=0/0
> Metadata:
> major_brand : isom
> minor_version : 512
> compatible_brands: isomiso2avc1mp41
> encoder : Lavf55.21.102
> Duration: 00:00:02.00, start: 0.000000, bitrate: 37435 kb/s
> Stream #0:0(eng): Video: h264 (Constrained Baseline) (avc1 /
> 0x31637661), yuvj420p(pc, smpte170m), 1920x1080, 37431 kb/s, 30 fps, 30
> tbr, 12k tbn, 24k tbc (default)
> Metadata:
> handler_name : VideoHandler
> [swscaler @ 0x7f8857004e00] deprecated pixel format used, make sure you
> did set range correctly
> [swscaler @ 0x7f8857040600] deprecated pixel format used, make sure you
> did set range correctly
> 2.45 M-V: -0.028 fd= 0 aq= 0KB vq= 0KB sq= 0B f=0/0
> ---
>
> When using the waveform mode the values are compressed into broadcast
> range and waveform output of luma does not reflect the actual content
> (clearly visible with the regular spikes shown as "lines" at regular
> intervals in the luma spectrum):
>
> ---
> mhusinsky$ ffplay -color_range 2 -vf
> histogram=mode=waveform:waveform_mode=column:waveform_mirror=1
> fullrange_y.mp4
> ffplay version 2.1.git-65f41b5 Copyright (c) 2003-2013 the FFmpeg
> developers
> built on Dec 3 2013 21:42:13 with Apple LLVM version 5.0
> (clang-500.2.79) (based on LLVM 3.3svn)
> configuration: --prefix=/opt/local --enable-swscale --enable-avfilter
> --enable-avresample --enable-libmp3lame --enable-libvorbis
> --enable-libopus --enable-libtheora --enable-libschroedinger
> --enable-libopenjpeg --enable-libmodplug --enable-libvpx --enable-libspeex
> --enable-libass --enable-libbluray --enable-gnutls --enable-libfreetype
> --disable-indev=jack --disable-outdev=xv --mandir=/opt/local/share/man
> --enable-shared --enable-pthreads --cc=/usr/bin/clang --arch=x86_64
> --enable-yasm --enable-gpl --enable-postproc --enable-libx264
> --enable-libxvid --enable-version3 --enable-libopencore-amrnb
> --enable-libopencore-amrwb --enable-nonfree --enable-libfaac
> libavutil 52. 56.100 / 52. 56.100
> libavcodec 55. 44.100 / 55. 44.100
> libavformat 55. 21.102 / 55. 21.102
> libavdevice 55. 5.102 / 55. 5.102
> libavfilter 3. 91.100 / 3. 91.100
> libavresample 1. 1. 0 / 1. 1. 0
> libswscale 2. 5.101 / 2. 5.101
> libswresample 0. 17.104 / 0. 17.104
> libpostproc 52. 3.100 / 52. 3.100
> Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'fullrange_y.mp4':B f=0/0
> Metadata:
> major_brand : isom
> minor_version : 512
> compatible_brands: isomiso2avc1mp41
> encoder : Lavf55.21.102
> Duration: 00:00:02.00, start: 0.000000, bitrate: 37435 kb/s
> Stream #0:0(eng): Video: h264 (Constrained Baseline) (avc1 /
> 0x31637661), yuvj420p(pc, smpte170m), 1920x1080, 37431 kb/s, 30 fps, 30
> tbr, 12k tbn, 24k tbc (default)
> Metadata:
> handler_name : VideoHandler
> [swscaler @ 0x7f80fd11f400] deprecated pixel format used, make sure you
> did set range correctly
> 1.62 M-V: -0.001 fd= 1 aq= 0KB vq= 163KB sq= 0B f=0/0
>
> ---
>
>
>
> Trying to force a certain format like this does not improve the situation:
> ffplay -color_range 2 -vf
> format=pix_fmts=yuvj420p,histogram=mode=waveform:waveform_mode=column:wavef
> orm_mirror=1 fullrange_y.mp4
>
>
>
> I found that applying the filter in ffmpeg and piping the output to ffplay
> actually works as intended.
>
> ---
> mhusinsky$ ffmpeg -i fullrange_y.mp4 -vf
> histogram=mode=waveform:waveform_mode=column:waveform_mirror=1 -c:v
> rawvideo -f nut - |ffplay -
> ffmpeg version 2.1.git-65f41b5 Copyright (c) 2000-2013 the FFmpeg
> developers
> built on Dec 3 2013 21:42:13 with Apple LLVM version 5.0
> (clang-500.2.79) (based on LLVM 3.3svn)
> configuration: --prefix=/opt/local --enable-swscale --enable-avfilter
> --enable-avresample --enable-libmp3lame --enable-libvorbis
> --enable-libopus --enable-libtheora --enable-libschroedinger
> --enable-libopenjpeg --enable-libmodplug --enable-libvpx --enable-libspeex
> --enable-libass --enable-libbluray --enable-gnutls --enable-libfreetype
> --disable-indev=jack --disable-outdev=xv --mandir=/opt/local/share/man
> --enable-shared --enable-pthreads --cc=/usr/bin/clang --arch=x86_64
> --enable-yasm --enable-gpl --enable-postproc --enable-libx264
> --enable-libxvid --enable-version3 --enable-libopencore-amrnb
> --enable-libopencore-amrwb --enable-nonfree --enable-libfaac
> libavutil 52. 56.100 / 52. 56.100
> libavcodec 55. 44.100 / 55. 44.100
> libavformat 55. 21.102 / 55. 21.102
> libavdevice 55. 5.102 / 55. 5.102
> libavfilter 3. 91.100 / 3. 91.100
> libavresample 1. 1. 0 / 1. 1. 0
> libswscale 2. 5.101 / 2. 5.101
> libswresample 0. 17.104 / 0. 17.104
> libpostproc 52. 3.100 / 52. 3.100
> Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'fullrange_y.mp4':
> Metadata:
> major_brand : isom
> minor_version : 512
> compatible_brands: isomiso2avc1mp41
> encoder : Lavf55.21.102
> Duration: 00:00:02.00, start: 0.000000, bitrate: 37435 kb/s
> Stream #0:0(eng): Video: h264 (Constrained Baseline) (avc1 /
> 0x31637661), yuvj420p(pc, smpte170m), 1920x1080, 37431 kb/s, 30 fps, 30
> tbr, 12k tbn, 24k tbc (default)
> Metadata:
> handler_name : VideoHandler
> Output #0, nut, to 'pipe:':
> Metadata:
> major_brand : isom
> minor_version : 512
> compatible_brands: isomiso2avc1mp41
> encoder : Lavf55.21.102
> Stream #0:0: Video: rawvideo (I420 / 0x30323449), yuvj420p, 1920x768
> [SAR 1:1 DAR 5:2], q=2-31, 200 kb/s, 61440 tbn, 30 tbc (default)
> Metadata:
> X-Language : eng
> handler_name : VideoHandler
> Stream mapping:
> Stream #0:0 -> #0:0 (h264 -> rawvideo)
> Press [q] to stop, [?] for help
> ffplay version 2.1.git-65f41b5 Copyright (c) 2003-2013 the FFmpeg
> developers
> built on Dec 3 2013 21:42:13 with Apple LLVM version 5.0
> (clang-500.2.79) (based on LLVM 3.3svn)
> configuration: --prefix=/opt/local --enable-swscale --enable-avfilter
> --enable-avresample --enable-libmp3lame --enable-libvorbis
> --enable-libopus --enable-libtheora --enable-libschroedinger
> --enable-libopenjpeg --enable-libmodplug --enable-libvpx --enable-libspeex
> --enable-libass --enable-libbluray --enable-gnutls --enable-libfreetype
> --disable-indev=jack --disable-outdev=xv --mandir=/opt/local/share/man
> --enable-shared --enable-pthreads --cc=/usr/bin/clang --arch=x86_64
> --enable-yasm --enable-gpl --enable-postproc --enable-libx264
> --enable-libxvid --enable-version3 --enable-libopencore-amrnb
> --enable-libopencore-amrwb --enable-nonfree --enable-libfaac
> libavutil 52. 56.100 / 52. 56.100
> libavcodec 55. 44.100 / 55. 44.100
> libavformat 55. 21.102 / 55. 21.102
> libavdevice 55. 5.102 / 55. 5.102
> libavfilter 3. 91.100 / 3. 91.100
> libavresample 1. 1. 0 / 1. 1. 0
> libswscale 2. 5.101 / 2. 5.101
> libswresample 0. 17.104 / 0. 17.104
> libpostproc 52. 3.100 / 52. 3.100
> Input #0, nut, from 'pipe:':aq= 0KB vq= 0KB sq= 0B f=0/0
> Metadata:
> major_brand : isom
> minor_version : 512
> compatible_brands: isomiso2avc1mp41
> encoder : Lavf55.21.102
> Duration: N/A, start: 0.000000, bitrate: N/A
> Stream #0:0(eng): Video: rawvideo (I420 / 0x30323449), yuv420p,
> 1920x768, SAR 1:1 DAR 5:2, 30 fps, 30 tbr, 61440 tbn, 61440 tbc (default)
> Metadata:
> handler_name : VideoHandler
> frame= 60 fps= 33 q=0.0 Lsize= 129602kB time=00:00:02.00
> bitrate=530851.7kbits/s
> video:129600kB audio:0kB subtitle:0 global headers:0kB muxing overhead
> 0.001901%
> 3.02 M-V: -0.033 fd= 4 aq= 0KB vq= 0KB sq= 0B f=0/0
> ---
>
>
> Now is there any possibility to achieve this behaviour in ffplay directly
> (i.e. by not piping outputs)? I find it confusing that the levels and
> waveform mode behave differently in ffplay.
Because ffplay somehow somewhere (in middle of filtergraph) inserts
another format
filter and output to something unexpected.
> Am I doing something wrong or is this a bug of ffplay? I^1m using the
> histogram mainly for inspection purposes and would prefer doing it
> directly in ffplay.
ffplay is a toy. You should use something that can use better graphic
output than SDL.
>
> Thank you,
> Matthias
>
> _______________________________________________
> ffmpeg-user mailing list
> ffmpeg-user at ffmpeg.org
> http://ffmpeg.org/mailman/listinfo/ffmpeg-user
>
More information about the ffmpeg-user
mailing list