Search code examples
audioffmpegmetering

ffplay / ffmpeg with audio and video filters


i tried to modify a already existing code for ffplay for hours, but I could not get it. I could not find a manual for vertical and horizontal stacking parameters. I’m always getting invalid argument errors when I try to adopt it to my needs. So I’m asking here for help.

My idea is based on that: ffplay / ffmpeg setup table with audio and video filters

The working code that I modified a little but want to modify further without luck is:

ffplay -f lavfi \
         "amovie=in.mp4,asplit=3[sv][eb][av]; \
          [sv]showvolume=b=4:f=0:ds=log:c=VOLUME:w=720:h=68[sv-v]; \
          [eb]ebur128=video=1:size=720x540:meter=18[eb-v][out1]; \
          [av]avectorscope=s=720x540:zoom=1.3:rc=2:gc=200:bc=10:rf=1:gf=8:bf=7[av-v]; \
          [sv-v][eb-v][av-v]vstack=3[1c]; \
          movie=in.mp4,split=4[v][wf][wfc][vs]; \
          [wf]waveform=m=1:d=0:r=0:c=7[wf-vus]; \
          [wf-vus][v]scale2ref=iw:1220-ih[wf-va][sig]; \
          [wf-va]setsar=1[wf-v]; \
          [wfc]waveform=m=0:d=0:r=0:c=7,scale=610x610,setsar=1[wfc-v]; \
          [vs]vectorscope=m=color3:g=color,scale=610x610,setsar=1[vs-v]; \
          [sig][wf-v]vstack[2c]; \
          [wfc-v][vs-v]vstack[3c]; \
          [1c][2c][3c]hstack=3,scale=1920:-1[out0]"

I’d like to change it to that style - I'm not yet allowed to post images directly in this question, so I need to link it:

Link to image how I'd like the layout to be

I’d like to have the video shown in 1920x1080 (keeping aspect ratio, downscale if necessary).


Solution

  • Use

    ffplay -f lavfi \
             "amovie=in.mp4,asplit=3[sv][eb][av]; \
              [sv]showvolume=b=4:f=0:ds=log:c=VOLUME:w=400:h=200[sv-v]; \
              [eb]ebur128=video=1:size=800x800:meter=18[eb-v][out1]; \
              [eb-v]scale=400x400[eb-v]; \
              [av]avectorscope=s=400x480:zoom=1.3:rc=2:gc=200:bc=10:rf=1:gf=8:bf=7[av-v]; \
              [sv-v][eb-v][av-v]vstack=3[1c]; \
              movie=in.mp4,scale=-1:1080[v]; \
              [1c][v]hstack=2[out0]"
    

    The audio is assumed to be mono; for N channels, change showvolume h to N/200.