Newest 'ffmpeg' Questions - Stack Overflow

http://stackoverflow.com/questions/tagged/ffmpeg

Les articles publiés sur le site

  • FFMPEG : Set Opacity of audio waveform color

    13 août 2018, par Software Development Consultan

    I was trying to do transparency in waveform generated. It seems there is not direct option in 'showwaves' filter so I came across 'colorkey' which might help.

    I am trying with following:

    ffmpeg -y -loop 1 -threads 0 -i background.png -i input.mp3 -filter_complex "[1:a]aformat=channel_layouts=mono,showwaves=s=1280x100:rate=7:mode=cline:scale=sqrt:colors=0x0000ff,colorkey=color=0x0000ff:similarity=0.01:blend=0.1[v]; [0:v][v] overlay=0:155 [v1]" -map "[v1]" -map 1:a -c:v libx264 -crf 35 -ss 0 -t 5 -c:a copy -shortest -pix_fmt yuv420p -threads 0 test_org.mp4

    So I wanted to blue color waveform and wanted to set opacity of that 1 to 0 let say. But it seems this generates blackbox which is actual background of '1280x100'. I want to keep background of waveform transparent and just wanted to change opacity of waveform only.

    Result of my command: enter image description here

    enter image description here

    Can you please let me know your suggestion

    @Gyan, this is with reference to following question which you have answered.

    Related last question

    Thanks, Hardik

  • use ffmpeg to set start_time equal in audio and video elementary streams

    13 août 2018, par sajad

    I am using ffmpeg tool for offline transcoding of some input files to MPEG-TS format. I use ffprobe to analyze the output. I need the output video to have equal values for start_time for both video and audio elementary streams. This is necessary for streaming by Perception streamer server. My desired output is like this:

            
        ..../ codec_type="video" /.../ start_pts="YYY" start_time="XXX" /..../
            
            ..../ codec_type="audio" /.../ start_pts="YYY" start_time="XXX" /..../
            
        
    

    I use this profile for transcoding:

    -ss 0 -y -vcodec libx264 -vb 3404k -acodec libfdk_aac -profile:a aac_he -strict experimental -ar 48k -f adts -ab 96k -r 25 -g 50 -force_key_frames 'expr:gte(t,n_forced*2)' -x264-params keyint=50:min-keyint=50:scenecut=-1:force-cfr=1:nal-hrd=cbr -vsync 1 -async 1 -profile:v main -level 4.0 -s 1920x1080 -aspect 16:9 -avoid_negative_ts make_zero -strict experimental -muxdelay 0 -muxpreload 0 -output_ts_offset 0 -initial_offset 0 -start_at_zero -bufsize 3500K -minrate 3500K -maxrate 3500K -f mpegts
    

    How can I set start_time and start_pts like I explained?

  • FFMPEG : Fill/Change (part of) audio waveform color as per actual progress with respect to time progress

    13 août 2018, par Software Development Consultan

    I am trying to make command which is generating waveform from mp3 file and show on background image and play audio. Togethr with this, I want to change waveform color left to right (something like progressbar) as per overall video time elapses.

    I have created following command which shows progress bar using drawbox to fill box color as per current time position.

    ffmpeg -y -loop 1 -threads 0 -i sample_background.png -i input.mp3 -filter_complex "color=red@0.5:s=1280x100[Color];[0:v]drawbox=0:155:1280:100:gray@1:t=fill[baserect];[1:a]aformat=channel_layouts=mono,showwaves=s=1280x100:rate=7:mode=cline:scale=sqrt:colors=0xffffff[waveform]; [baserect][waveform] overlay=0:155 [v1];[v1][Color] overlay=x='if(gte(t,0), -W+(t)*64, NAN)':y=155:format=yuv444[v2]" -map "[v2]" -map 1:a -c:v libx264 -crf 35 -ss 0 -t 20 -c:a copy -shortest -pix_fmt yuv420p -threads 0 output_withwave_and_progresbar.mp4

    enter image description here

    But I want to show progress inside generated audio waveform instead of making / filling rectangle using drawbox.

    So I have tried to make 2 waveform of 2 different color and overlay on each other and I wanted to show such a way that top waveform should display only part from x position (left) respective to current time.

    ffmpeg -y -loop 1 -threads 0 -i sample_background.png -i input.mp3 -filter_complex "[0:v]drawbox=0:155:1280:100:gray@1:t=fill[baserect];[1:a]aformat=channel_layouts=mono,showwaves=s=1280x100:rate=7:mode=cline:scale=sqrt:colors=0xff0000[waveform];[1:a]aformat=channel_layouts=mono,showwaves=s=1280x100:rate=7:mode=cline:scale=sqrt:colors=0xffffff[waveform2]; [baserect][waveform] overlay=0:155 [v1];[v1][waveform2] overlay=x='if(gte(t,0), -W+(t)*64, NAN)':y=155:format=yuv444[v2]" -map "[v2]" -map 1:a -c:v libx264 -crf 35 -ss 0 -t 20 -c:a copy -shortest -pix_fmt yuv420p -threads 0 test.mp4

    But I am not able to find way to do Wipe effect from left to right, currently it is sliding (as I am changing x of overlay) It might be done using alpha merge and setting all other pixel to transparent and only show pixels which are less than x pos. but I am not able to find how to do this.

    Background image: enter image description here

    we can use any mp3 file file, currently I have set 20 sec duration.

    Can someone please guide how we can do this?

    Thanks.

  • Error in FFmpeg build with cmake

    13 août 2018, par hogan

    When I build ffmpeg with cmake, I found some errors:

    libavfilter/avf_showcqt.c:147: error: undefined reference to 'av_fft_end'
    libavfilter/avf_showcqt.c:718: error: undefined reference to 'avpriv_vga16_font'
    libavfilter/avf_showcqt.c:1383: error: undefined reference to 'av_fft_init'
    libavfilter/avf_showcqt.c:1151: error: undefined reference to 'av_fft_permute'
    libavfilter/avf_showcqt.c:1152: error: undefined reference to 'av_fft_calc'
    libavfilter/avf_showfreqs.c:183: error: undefined reference to 'av_audio_fifo_free'
    libavfilter/avf_showfreqs.c:184: error: undefined reference to 'av_fft_end'
    libavfilter/avf_showfreqs.c:185: error: undefined reference to 'av_fft_init'
    

    And this is my link configuration:

    lib_avformat
    lib_avcodec
    lib_swscale
    lib_avutil
    lib_avfilter
    lib_swresample
    lib_postproc
    lib_avdevice
    lib_mp3lame
    lib_fdk-aac
    lib_x264
    
  • FFMPEG. Combine rawAudio and rawVideo from named pipe

    13 août 2018, par user3882856

    I have 2 NamedPipeServerStreams. 1 for Audio (Stereo Mix). I am using WavIn from NAudio and 1 for Video (Screen Capture). Just converting BitBlt screen to Byte Array.

    I'm able to create an mp4 video for the rawvideo and changing code, a seperate wav for the rawaudio but am unable to combine/merge both into an mp4 video.

    These are the ffmpeg commands i'm using.

    To create the audio wav file:

    string args = @"-f s32le -channels 2 -sample_rate 44100 -i \\.\pipe\ffpipea -c copy output.wav";
    

    Audio plays really fast but it at least gets it.

    To create the video mp4 file:

    string inputArgs = @"-framerate 8 -f rawvideo -pix_fmt bgr24 -video_size 1920x1080 -i \\.\pipe\ffpipev";
    string outputArgs = "-vcodec libx264 -crf 23 -pix_fmt yuv420p -preset ultrafast -r 8 output.mp4";
    

    My attempt to combine/merge both:

    string args = @"-framerate 8 -f rawvideo -pix_fmt bgr24 -video_size 1920x1080 -i \\.\pipe\ffpipev " +
            @"-f s32le -channels 2 -sample_rate 44100 -i \\.\pipe\ffpipea " +
            "-map 0:0 -map 1:0 -vcodec libx264 -crf 23 -pix_fmt yuv420p -preset ultrafast -r 8 -c:a copy output.mp4";
    

    Depending on what i change in the args, either the WaitForConnection() never fires or the audiopipe breaks with pip is broken.

    Please let me know if i can provide further information. Any help greatly appreciated.