Recherche avancée

Médias (91)

Autres articles (34)

  • Des sites réalisés avec MediaSPIP

    2 mai 2011, par

    Cette page présente quelques-uns des sites fonctionnant sous MediaSPIP.
    Vous pouvez bien entendu ajouter le votre grâce au formulaire en bas de page.

  • Support audio et vidéo HTML5

    10 avril 2011

    MediaSPIP utilise les balises HTML5 video et audio pour la lecture de documents multimedia en profitant des dernières innovations du W3C supportées par les navigateurs modernes.
    Pour les navigateurs plus anciens, le lecteur flash Flowplayer est utilisé.
    Le lecteur HTML5 utilisé a été spécifiquement créé pour MediaSPIP : il est complètement modifiable graphiquement pour correspondre à un thème choisi.
    Ces technologies permettent de distribuer vidéo et son à la fois sur des ordinateurs conventionnels (...)

  • HTML5 audio and video support

    13 avril 2011, par

    MediaSPIP uses HTML5 video and audio tags to play multimedia files, taking advantage of the latest W3C innovations supported by modern browsers.
    The MediaSPIP player used has been created specifically for MediaSPIP and can be easily adapted to fit in with a specific theme.
    For older browsers the Flowplayer flash fallback is used.
    MediaSPIP allows for media playback on major mobile platforms with the above (...)

Sur d’autres sites (4535)

  • I am using ffmpeg java library to convert captured screenshots to video. Video output is blurry

    2 octobre 2020, par dark prince

    I am using ffmpeg java library to convert captured screenshots to video. Video which is generated as output is blurry.

    


    I am using bit rate as 9000, frames per sec as 25 and video size as that of desktop screen size.

    


    Any suggestions on how to solve this issue.

    


    P.S. I cannot use ffmpeg.exe and command line due to certain restrictions and hence I am opting for ffmpeg java library.

    


    Any suggestions on the issue or suggestions on any better approach will be helpful.

    


        import java.awt.AWTException;&#xA;    import java.awt.Dimension;&#xA;    import java.awt.FlowLayout;&#xA;    import java.awt.Rectangle;&#xA;    import java.awt.Robot;&#xA;    import java.awt.Toolkit;&#xA;    import java.awt.event.ActionEvent;&#xA;    import java.awt.event.ActionListener;&#xA;    import java.awt.image.BufferedImage;&#xA;    import java.io.File;&#xA;    import java.io.IOException;&#xA;    import java.util.Date;&#xA;    &#xA;    import javax.imageio.ImageIO;&#xA;    import javax.swing.JButton;&#xA;    import javax.swing.JFrame;&#xA;    import javax.swing.JLabel;&#xA;    import javax.swing.JOptionPane;&#xA;    &#xA;    import org.bytedeco.javacpp.avcodec;&#xA;    import org.bytedeco.javacv.FFmpegFrameRecorder;&#xA;    import org.bytedeco.javacv.OpenCVFrameConverter;&#xA;    &#xA;    public class ScreenRecorder{&#xA;    &#xA;        public static boolean videoComplete=false;&#xA;        public static String inputImageDir="inputImgFolder"&#x2B;File.separator;&#xA;        public static String inputImgExt="png";&#xA;        public static String outputVideo="recording.mp4"; &#xA;        public static int counter=0;&#xA;        public static int imgProcessed=0;&#xA;        public static FFmpegFrameRecorder recorder=null;&#xA;        public static int videoWidth=1920;&#xA;        public static int videoHeight=1080;&#xA;        public static int videoFrameRate=3;&#xA;        public static int videoQuality=0; // 0 is the max quality&#xA;        public static int videoBitRate=9000;&#xA;        public static String videoFormat="mp4";&#xA;        public static int videoCodec=avcodec.AV_CODEC_ID_MPEG4;&#xA;        public static Thread t1=null;&#xA;        public static Thread t2=null;&#xA;        public static JFrame frame=null;&#xA;        public static boolean isRegionSelected=false;&#xA;        public static int c1=0;&#xA;        public static int c2=0;&#xA;        public static int c3=0;&#xA;        public static int c4=0;&#xA;        &#xA;        &#xA;        public static void main(String[] args) {&#xA;            &#xA;            try {&#xA;                if(getRecorder()==null)&#xA;                {&#xA;                    System.out.println("Cannot make recorder object, Exiting program");&#xA;                    System.exit(0);&#xA;                }&#xA;                if(getRobot()==null)&#xA;                {&#xA;                    System.out.println("Cannot make robot object, Exiting program");&#xA;                    System.exit(0);&#xA;                }&#xA;                File scanFolder=new File(inputImageDir);&#xA;                scanFolder.delete();&#xA;                scanFolder.mkdirs();&#xA;                &#xA;                createGUI();&#xA;            } catch (Exception e) {&#xA;                System.out.println("Exception in program "&#x2B;e.getMessage());&#xA;            }&#xA;        }&#xA;        &#xA;        public static void createGUI()&#xA;        {&#xA;            frame=new JFrame("Screen Recorder");&#xA;            JButton b1=new JButton("Select Region for Recording");&#xA;            JButton b2=new JButton("Start Recording");&#xA;            JButton b3=new JButton("Stop Recording");&#xA;            JLabel l1=new JLabel("<br />If you dont select a region then full screen recording <br /> will be made when you click on Start Recording");&#xA;            l1.setFont (l1.getFont ().deriveFont (20.0f));&#xA;            b1.addActionListener(new ActionListener() {&#xA;                @Override&#xA;                public void actionPerformed(ActionEvent e) {&#xA;                    try {&#xA;                        JOptionPane.showMessageDialog(frame, "A new window will open. Use your mouse to select the region you like to record");&#xA;                        new CropRegion().getImage();&#xA;                    } catch (Exception e1) {&#xA;                        // TODO Auto-generated catch block&#xA;                        System.out.println("Issue while trying to call the module to crop region");&#xA;                        e1.printStackTrace();&#xA;                    } &#xA;                }&#xA;            });&#xA;            b2.addActionListener(new ActionListener() {&#xA;                @Override&#xA;                public void actionPerformed(ActionEvent e) {&#xA;                    counter=0;&#xA;                    startRecording();&#xA;                }&#xA;            });&#xA;            b3.addActionListener(new ActionListener() {&#xA;                @Override&#xA;                public void actionPerformed(ActionEvent e) {&#xA;                    stopRecording();&#xA;                    System.out.print("Exiting...");&#xA;                    System.exit(0);&#xA;                }&#xA;            });&#xA;            &#xA;            frame.add(b1);&#xA;            frame.add(b2);&#xA;            frame.add(b3);&#xA;            frame.add(l1);&#xA;            frame.setLayout(new FlowLayout(0));&#xA;            frame.setVisible(true);&#xA;            frame.setSize(1000, 170);&#xA;            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);&#xA;        }&#xA;        &#xA;        public static void startRecording()&#xA;        {&#xA;            t1=new Thread()&#xA;            {&#xA;                public void run() {&#xA;                    try {&#xA;                        takeScreenshot(getRobot());&#xA;                    } catch (Exception e) {&#xA;                        JOptionPane.showMessageDialog(frame, "Cannot make robot object, Exiting program "&#x2B;e.getMessage());&#xA;                        System.out.println("Cannot make robot object, Exiting program "&#x2B;e.getMessage());&#xA;                        System.exit(0);&#xA;                    }&#xA;                }&#xA;            };&#xA;            &#xA;            t2=new Thread()&#xA;            {&#xA;                public void run() {&#xA;                    prepareVideo();&#xA;                }&#xA;            };&#xA;            &#xA;            t1.start();&#xA;            t2.start();&#xA;            System.out.println("Started recording at "&#x2B;new Date());&#xA;        }&#xA;        &#xA;        public static Robot getRobot() throws Exception&#xA;        {&#xA;            Robot r=null;&#xA;            try {&#xA;                r = new Robot();&#xA;                return r;&#xA;            } catch (AWTException e) {&#xA;                JOptionPane.showMessageDialog(frame, "Issue while initiating Robot object "&#x2B;e.getMessage());&#xA;                System.out.println("Issue while initiating Robot object "&#x2B;e.getMessage());&#xA;                throw new Exception("Issue while initiating Robot object");&#xA;            }&#xA;        }&#xA;        &#xA;        public static void takeScreenshot(Robot r)&#xA;        {&#xA;            Dimension size = Toolkit.getDefaultToolkit().getScreenSize();&#xA;            Rectangle rec=new Rectangle(size);&#xA;            if(isRegionSelected)&#xA;            {&#xA;                rec=new Rectangle(c1, c2, c3-c1, c4-c2);&#xA;            }&#xA;            while(!videoComplete)&#xA;            {&#xA;            counter&#x2B;&#x2B;;&#xA;            BufferedImage img = r.createScreenCapture(rec);&#xA;            try {&#xA;                ImageIO.write(img, inputImgExt, new File(inputImageDir&#x2B;counter&#x2B;"."&#x2B;inputImgExt));&#xA;            } catch (IOException e) {&#xA;                JOptionPane.showMessageDialog(frame, "Got an issue while writing the screenshot to disk "&#x2B;e.getMessage());&#xA;                System.out.println("Got an issue while writing the screenshot to disk "&#x2B;e.getMessage());&#xA;                counter--;&#xA;            }&#xA;            }&#xA;        }&#xA;        &#xA;        public static void prepareVideo()&#xA;        {&#xA;            File scanFolder=new File(inputImageDir);&#xA;            while(!videoComplete)&#xA;            {&#xA;                File[] inputFiles=scanFolder.listFiles();&#xA;                try {&#xA;                    getRobot().delay(500);&#xA;                } catch (Exception e) {&#xA;                }&#xA;                //for(int i=0;i/imgProcessed&#x2B;&#x2B;;&#xA;                    addImageToVideo(inputFiles[i].getAbsolutePath());&#xA;                    //String imgToAdd=scanFolder.getAbsolutePath()&#x2B;File.separator&#x2B;imgProcessed&#x2B;"."&#x2B;inputImgExt;&#xA;                    //addImageToVideo(imgToAdd);&#xA;                    //new File(imgToAdd).delete();&#xA;                    inputFiles[i].delete();&#xA;                }&#xA;            }&#xA;            &#xA;            File[] inputFiles=scanFolder.listFiles();&#xA;            for(int i=0;i/ maximum quality&#xA;             recorder.start();&#xA;             }&#xA;             catch(Exception e)&#xA;             {&#xA;                 JOptionPane.showMessageDialog(frame, "Exception while starting the recorder object "&#x2B;e.getMessage());&#xA;                 System.out.println("Exception while starting the recorder object "&#x2B;e.getMessage());&#xA;                 throw new Exception("Unable to start recorder");&#xA;             }&#xA;             return recorder;&#xA;        }&#xA;        &#xA;        public static OpenCVFrameConverter.ToIplImage getFrameConverter()&#xA;        {&#xA;            OpenCVFrameConverter.ToIplImage grabberConverter = new OpenCVFrameConverter.ToIplImage();&#xA;            return grabberConverter;&#xA;        }&#xA;        &#xA;        public static void addImageToVideo(String imgPath)&#xA;        {&#xA;            try {&#xA;                getRecorder().record(getFrameConverter().convert(cvLoadImage(imgPath)));&#xA;            } catch (Exception e) {&#xA;                JOptionPane.showMessageDialog(frame, "Exception while adding image to video "&#x2B;e.getMessage());&#xA;                System.out.println("Exception while adding image to video "&#x2B;e.getMessage());&#xA;            }&#xA;        }&#xA;        &#xA;        public static void stopRecording()&#xA;        {&#xA;            try {&#xA;                videoComplete=true;&#xA;                System.out.println("Stopping recording at "&#x2B;new Date());&#xA;                t1.join();&#xA;                System.out.println("Screenshot thread complete");&#xA;                t2.join();&#xA;                System.out.println("Video maker thread complete");&#xA;                getRecorder().stop();&#xA;                System.out.println("Recording has been saved successfully at "&#x2B;new File(outputVideo).getAbsolutePath());&#xA;                JOptionPane.showMessageDialog(frame, "Recording has been saved successfully at "&#x2B;new File(outputVideo).getAbsolutePath());&#xA;            } catch (Exception e) {&#xA;                System.out.println("Exception while stopping the recorder "&#x2B;e.getMessage());&#xA;            }&#xA;        }&#xA;    }&#xA;

    &#xA;

    Imagepanel.java

    &#xA;

    import java.awt.Dimension;&#xA;import java.awt.Graphics;&#xA;import java.awt.Image;&#xA;import javax.swing.ImageIcon;&#xA;import javax.swing.JPanel;&#xA;&#xA;class ImagePanel&#xA;  extends JPanel&#xA;{&#xA;  private Image img;&#xA;  &#xA;  public ImagePanel(String img)&#xA;  {&#xA;    this(new ImageIcon(img).getImage());&#xA;  }&#xA;  &#xA;  public ImagePanel(Image img)&#xA;  {&#xA;    this.img = img;&#xA;    Dimension size = new Dimension(img.getWidth(null), img.getHeight(null));&#xA;    &#xA;    setPreferredSize(size);&#xA;    setMinimumSize(size);&#xA;    setMaximumSize(size);&#xA;    setSize(size);&#xA;    setLayout(null);&#xA;  }&#xA;  &#xA;  public void paintComponent(Graphics g)&#xA;  {&#xA;    g.drawImage(this.img, 0, 0, null);&#xA;  }&#xA;}&#xA;

    &#xA;

    CropRegion.java

    &#xA;

    import java.awt.AWTException;&#xA;import java.awt.Dimension;&#xA;import java.awt.FlowLayout;&#xA;import java.awt.Graphics;&#xA;import java.awt.Rectangle;&#xA;import java.awt.Robot;&#xA;import java.awt.Toolkit;&#xA;import java.awt.event.MouseEvent;&#xA;import java.awt.event.MouseListener;&#xA;import java.awt.event.MouseMotionListener;&#xA;import java.awt.image.BufferedImage;&#xA;import java.io.IOException;&#xA;import javax.swing.JFrame;&#xA;import javax.swing.JLabel;&#xA;import javax.swing.JOptionPane;&#xA;&#xA;&#xA;public class CropRegion implements MouseListener,&#xA;        MouseMotionListener {&#xA;&#xA;    int drag_status = 0;&#xA;    int c1;&#xA;    int c2;&#xA;    int c3;&#xA;    int c4;&#xA;    JFrame frame=null;&#xA;    static int counter=0;&#xA;    JLabel background=null;&#xA;&#xA;    &#xA;    public void getImage() throws AWTException, IOException, InterruptedException {&#xA;        Dimension size = Toolkit.getDefaultToolkit().getScreenSize();&#xA;        Robot robot = new Robot();&#xA;        BufferedImage img = robot.createScreenCapture(new Rectangle(size));&#xA;        ImagePanel panel = new ImagePanel(img);&#xA;        frame=new JFrame();&#xA;        frame.add(panel);&#xA;        frame.setLocation(0, 0);&#xA;        frame.setSize(size);&#xA;        frame.setLayout(new FlowLayout());&#xA;        frame.setUndecorated(true);&#xA;        frame.setVisible(true);&#xA;        frame.addMouseListener(this);&#xA;        frame.addMouseMotionListener(this);&#xA;        frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);&#xA;    }&#xA;&#xA;    public void draggedScreen() throws Exception {&#xA;        ScreenRecorder.c1=c1;&#xA;        ScreenRecorder.c2=c2;&#xA;        ScreenRecorder.c3=c3;&#xA;        ScreenRecorder.c4=c4;&#xA;        ScreenRecorder.isRegionSelected=true;&#xA;        JOptionPane.showMessageDialog(frame, "Region Selected.Please click on Start Recording button to record the selected region.");&#xA;        frame.dispose();&#xA;    }&#xA;&#xA;    public void mouseClicked(MouseEvent arg0) {&#xA;    }&#xA;&#xA;    public void mouseEntered(MouseEvent arg0) {&#xA;    }&#xA;&#xA;    public void mouseExited(MouseEvent arg0) {&#xA;    }&#xA;&#xA;    public void mousePressed(MouseEvent arg0) {&#xA;        paint();&#xA;        this.c1 = arg0.getX();&#xA;        this.c2 = arg0.getY();&#xA;    }&#xA;&#xA;    public void mouseReleased(MouseEvent arg0) {&#xA;        paint();&#xA;        if (this.drag_status == 1) {&#xA;            this.c3 = arg0.getX();&#xA;            this.c4 = arg0.getY();&#xA;            try {&#xA;                draggedScreen();&#xA;            } catch (Exception e) {&#xA;                e.printStackTrace();&#xA;            }&#xA;        }&#xA;    }&#xA;&#xA;    public void mouseDragged(MouseEvent arg0) {&#xA;        paint();&#xA;        this.drag_status = 1;&#xA;        this.c3 = arg0.getX();&#xA;        this.c4 = arg0.getY();&#xA;    }&#xA;&#xA;    public void mouseMoved(MouseEvent arg0) {&#xA;    }&#xA;&#xA;    public void paint() {&#xA;        Graphics g = frame.getGraphics();&#xA;        frame.repaint();&#xA;        int w = this.c1 - this.c3;&#xA;        int h = this.c2 - this.c4;&#xA;        w *= -1;&#xA;        h *= -1;&#xA;        if (w &lt; 0) {&#xA;            w *= -1;&#xA;        }&#xA;        g.drawRect(this.c1, this.c2, w, h);&#xA;    }&#xA;}&#xA;

    &#xA;

  • ffmpeg - how to pass all streams audio/tmcd, etc from input->output unchanged

    22 avril 2021, par QRrabbit

    Please help me, with hopefully specific ffmpeg arguments to include in my video encoding.

    &#xA;

    My work is only related to video stream, so this is the only one I'm changing.&#xA;I receive a .mov file(s) that have already been pre-compiled for a specific broadcaster, some of those selfcontained videos have 4 streams (1 video, 2 audio, and some other timecode stream). Others have up to 17 streams : 1-video, 15-audio streams and the final one is unsupported tmcd.

    &#xA;

    My process pipeline includes only re-encoding/re-processing video stream, and everything else I need to pass along to the output file - all other streams without any changes or alterations.

    &#xA;

    During this step of encoding, I insert icon.png into position 5:21 from sec 2-3, from 4-5, and from 6-8. To achieve this, I use map option, so my encoding string looks like this :

    &#xA;

    ffmpeg -i in.mov -i icon.png -i icon.png -i icon.png&#xA;    -filter_complex "  [0][1]overlay=5:21:enable=&#x27;between(t,2,3)&#x27;[v1];&#xA;                      [v1][2]overlay=5:21:enable=&#x27;between(t,4,5)&#x27;[v2];&#xA;                      [v2][3]overlay=5:21:enable=&#x27;between(t,6,8)&#x27;[v3]" -map &#x27;[v3]&#x27; -map 0:a&#xA;    -c:v dvvideo -pix_fmt yuv422p -b:v 115084915 -maxrate 115084915 -minrate 115084915 -r 29.97 -top 1 -color_primaries bt709 -color_trc bt709 -colorspace bt709 -vtag dvh6&#xA;    -c:a copy -c:s copy -y out.mov&#xA;

    &#xA;

    The problem is that the out.mov only shows with 2 streams instead of 17 (1-video, and 2-audio). All other 15 streams are truncated completely.&#xA;Reading some other stackoverflow posts I found a way to transfer all other streams, is by using -map 0 :

    &#xA;

    But as I tried adding -map 0 on my last line :

    &#xA;

        ...&#xA;    -map 0 -c:a copy -c:s copy -y out.mov&#xA;

    &#xA;

    but this doubles the number of streams from 17 to 34 - also double in output file size.&#xA;If I remove map '[v3]' -map 0:a from my original encoding string and only include -map 0, I get correct number of streams, but, of course icon.png is not getting inserted at the right time. What should I do ?

    &#xA;

    If there's a way to re-map my -filter_complex to overlay images without using this -map option ? Or, be specific at what each -map referring to ?

    &#xA;

    If not, what other arguments/parameters can I use, if such option even exists, to copy all streams, subs and all other audio, potentially some other signal for audio impairment, if such exists.

    &#xA;

    Please help, so I can finally wrap my output and submit my work.

    &#xA;

    EDIT 1 :&#xA;Here's my output :

    &#xA;

    ffprobe version N-99345-g904ab5365c Copyright (c) 2007-2020 the FFmpeg developers&#xA;  built with Apple LLVM version 10.0.0 (clang-1000.11.45.5)&#xA;  configuration: --enable-filter=qrrabbit --enable-opengl --enable-gpl --enable-libx264 --extra-libs=&#x27;-lqrencode -lpthread&#x27;&#xA;  libavutil      56. 59.100 / 56. 59.100&#xA;  libavcodec     58.106.100 / 58.106.100&#xA;  libavformat    58. 58.100 / 58. 58.100&#xA;  libavdevice    58. 11.102 / 58. 11.102&#xA;  libavfilter     7. 87.100 /  7. 87.100&#xA;  libswscale      5.  8.100 /  5.  8.100&#xA;  libswresample   3.  8.100 /  3.  8.100&#xA;  libpostproc    55.  8.100 / 55.  8.100&#xA;Input #0, mov,mp4,m4a,3gp,3g2,mj2, from &#x27;output.mov&#x27;:&#xA;  Metadata:&#xA;    major_brand     : qt  &#xA;    minor_version   : 512&#xA;    compatible_brands: qt  &#xA;    creation_time   : 2020-02-29T22:07:42.000000Z&#xA;    encoder         : Lavf58.58.100&#xA;  Duration: 00:00:20.05, start: 0.000000, bitrate: 133544 kb/s&#xA;    Stream #0:0: Video: dvvideo (dvh6 / 0x36687664), yuv422p(bt709, top first), 1280x1080 [SAR 3:2 DAR 16:9], 115084 kb/s, 29.97 fps, 29.97 tbr, 11988 tbn, 29.97 tbc (default)&#xA;    Metadata:&#xA;      creation_time   : 2020-02-29T22:07:42.000000Z&#xA;      handler_name    : VideoHandler&#xA;      encoder         : Lavc58.106.100 dvvideo&#xA;      timecode        : 00:00:00;00&#xA;    Stream #0:1(eng): Audio: pcm_s24le (in24 / 0x34326E69), 48000 Hz, 1 channels, s32 (24 bit), 1152 kb/s (default)&#xA;    Metadata:&#xA;      creation_time   : 2020-02-29T22:07:42.000000Z&#xA;      handler_name    : Apple Sound Media Handler&#xA;    Stream #0:2(eng): Audio: pcm_s24le (in24 / 0x34326E69), 48000 Hz, 1 channels, s32 (24 bit), 1152 kb/s (default)&#xA;    Metadata:&#xA;      creation_time   : 2020-02-29T22:07:42.000000Z&#xA;      handler_name    : Apple Sound Media Handler&#xA;    Stream #0:3(eng): Audio: pcm_s24le (in24 / 0x34326E69), 48000 Hz, 1 channels, s32 (24 bit), 1152 kb/s (default)&#xA;    Metadata:&#xA;      creation_time   : 2020-02-29T22:07:42.000000Z&#xA;      handler_name    : Apple Sound Media Handler&#xA;    Stream #0:4(eng): Audio: pcm_s24le (in24 / 0x34326E69), 48000 Hz, 1 channels, s32 (24 bit), 1152 kb/s (default)&#xA;    Metadata:&#xA;      creation_time   : 2020-02-29T22:07:42.000000Z&#xA;      handler_name    : Apple Sound Media Handler&#xA;    Stream #0:5(eng): Audio: pcm_s24le (in24 / 0x34326E69), 48000 Hz, 1 channels, s32 (24 bit), 1152 kb/s (default)&#xA;    Metadata:&#xA;      creation_time   : 2020-02-29T22:07:42.000000Z&#xA;      handler_name    : Apple Sound Media Handler&#xA;    Stream #0:6(eng): Audio: pcm_s24le (in24 / 0x34326E69), 48000 Hz, 1 channels, s32 (24 bit), 1152 kb/s (default)&#xA;    Metadata:&#xA;      creation_time   : 2020-02-29T22:07:42.000000Z&#xA;      handler_name    : Apple Sound Media Handler&#xA;    Stream #0:7(eng): Audio: pcm_s24le (in24 / 0x34326E69), 48000 Hz, 1 channels, s32 (24 bit), 1152 kb/s (default)&#xA;    Metadata:&#xA;      creation_time   : 2020-02-29T22:07:42.000000Z&#xA;      handler_name    : Apple Sound Media Handler&#xA;    Stream #0:8(eng): Audio: pcm_s24le (in24 / 0x34326E69), 48000 Hz, 1 channels, s32 (24 bit), 1152 kb/s (default)&#xA;    Metadata:&#xA;      creation_time   : 2020-02-29T22:07:42.000000Z&#xA;      handler_name    : Apple Sound Media Handler&#xA;    Stream #0:9(eng): Audio: pcm_s24le (in24 / 0x34326E69), 48000 Hz, 1 channels, s32 (24 bit), 1152 kb/s (default)&#xA;    Metadata:&#xA;      creation_time   : 2020-02-29T22:07:42.000000Z&#xA;      handler_name    : Apple Sound Media Handler&#xA;    Stream #0:10(eng): Audio: pcm_s24le (in24 / 0x34326E69), 48000 Hz, 1 channels, s32 (24 bit), 1152 kb/s (default)&#xA;    Metadata:&#xA;      creation_time   : 2020-02-29T22:07:42.000000Z&#xA;      handler_name    : Apple Sound Media Handler&#xA;    Stream #0:11(eng): Audio: pcm_s24le (in24 / 0x34326E69), 48000 Hz, 1 channels, s32 (24 bit), 1152 kb/s (default)&#xA;    Metadata:&#xA;      creation_time   : 2020-02-29T22:07:42.000000Z&#xA;      handler_name    : Apple Sound Media Handler&#xA;    Stream #0:12(eng): Audio: pcm_s24le (in24 / 0x34326E69), 48000 Hz, 1 channels, s32 (24 bit), 1152 kb/s (default)&#xA;    Metadata:&#xA;      creation_time   : 2020-02-29T22:07:42.000000Z&#xA;      handler_name    : Apple Sound Media Handler&#xA;    Stream #0:13(eng): Audio: pcm_s24le (in24 / 0x34326E69), 48000 Hz, 1 channels, s32 (24 bit), 1152 kb/s (default)&#xA;    Metadata:&#xA;      creation_time   : 2020-02-29T22:07:42.000000Z&#xA;      handler_name    : Apple Sound Media Handler&#xA;    Stream #0:14(eng): Audio: pcm_s24le (in24 / 0x34326E69), 48000 Hz, 1 channels, s32 (24 bit), 1152 kb/s (default)&#xA;    Metadata:&#xA;      creation_time   : 2020-02-29T22:07:42.000000Z&#xA;      handler_name    : Apple Sound Media Handler&#xA;    Stream #0:15(eng): Audio: pcm_s24le (in24 / 0x34326E69), 48000 Hz, 1 channels, s32 (24 bit), 1152 kb/s (default)&#xA;    Metadata:&#xA;      creation_time   : 2020-02-29T22:07:42.000000Z&#xA;      handler_name    : Apple Sound Media Handler&#xA;    Stream #0:16(eng): Audio: pcm_s24le (in24 / 0x34326E69), 48000 Hz, 1 channels, s32 (24 bit), 1152 kb/s (default)&#xA;    Metadata:&#xA;      creation_time   : 2020-02-29T22:07:42.000000Z&#xA;      handler_name    : Apple Sound Media Handler&#xA;    Stream #0:17(eng): Data: none (tmcd / 0x64636D74), 0 kb/s&#xA;    Metadata:&#xA;      creation_time   : 2020-02-29T22:07:42.000000Z&#xA;      handler_name    : VideoHandler&#xA;      timecode        : 00:00:00;00&#xA;Unsupported codec with id 0 for input stream 17&#xA;

    &#xA;

    and here's ffprobe from the input file :

    &#xA;

    ffprobe version N-99345-g904ab5365c Copyright (c) 2007-2020 the FFmpeg developers&#xA;  built with Apple LLVM version 10.0.0 (clang-1000.11.45.5)&#xA;  configuration: --enable-filter=qrrabbit --enable-opengl --enable-gpl --enable-libx264 --extra-libs=&#x27;-lqrencode -lpthread&#x27;&#xA;  libavutil      56. 59.100 / 56. 59.100&#xA;  libavcodec     58.106.100 / 58.106.100&#xA;  libavformat    58. 58.100 / 58. 58.100&#xA;  libavdevice    58. 11.102 / 58. 11.102&#xA;  libavfilter     7. 87.100 /  7. 87.100&#xA;  libswscale      5.  8.100 /  5.  8.100&#xA;  libswresample   3.  8.100 /  3.  8.100&#xA;  libpostproc    55.  8.100 / 55.  8.100&#xA;Input #0, mov,mp4,m4a,3gp,3g2,mj2, from &#x27;input.mov&#x27;:&#xA;  Metadata:&#xA;    major_brand     : qt  &#xA;    minor_version   : 537199360&#xA;    compatible_brands: qt  &#xA;    creation_time   : 2020-02-29T22:07:42.000000Z&#xA;  Duration: 00:00:20.05, start: 0.000000, bitrate: 133935 kb/s&#xA;    Stream #0:0(eng): Video: dvvideo (dvh6 / 0x36687664), yuv422p(bt709, top coded first (swapped)), 1280x1080 [SAR 3:2 DAR 16:9], 115084 kb/s, 29.97 fps, 29.97 tbr, 30k tbn, 29.97 tbc (default)&#xA;    Metadata:&#xA;      creation_time   : 2020-02-29T22:07:42.000000Z&#xA;      handler_name    : Apple Video Media Handler&#xA;      encoder         : DVCPRO HD 1080i60&#xA;      timecode        : 00:00:00;00&#xA;    Stream #0:1(eng): Audio: pcm_s24le (in24 / 0x34326E69), 48000 Hz, 1 channels, s32 (24 bit), 1152 kb/s (default)&#xA;    Metadata:&#xA;      creation_time   : 2020-02-29T22:07:42.000000Z&#xA;      handler_name    : Apple Sound Media Handler&#xA;      timecode        : 00:00:00;00&#xA;    Stream #0:2(eng): Audio: pcm_s24le (in24 / 0x34326E69), 48000 Hz, 1 channels, s32 (24 bit), 1152 kb/s (default)&#xA;    Metadata:&#xA;      creation_time   : 2020-02-29T22:07:42.000000Z&#xA;      handler_name    : Apple Sound Media Handler&#xA;      timecode        : 00:00:00;00&#xA;    Stream #0:3(eng): Audio: pcm_s24le (in24 / 0x34326E69), 48000 Hz, 1 channels, s32 (24 bit), 1152 kb/s (default)&#xA;    Metadata:&#xA;      creation_time   : 2020-02-29T22:07:42.000000Z&#xA;      handler_name    : Apple Sound Media Handler&#xA;      timecode        : 00:00:00;00&#xA;    Stream #0:4(eng): Audio: pcm_s24le (in24 / 0x34326E69), 48000 Hz, 1 channels, s32 (24 bit), 1152 kb/s (default)&#xA;    Metadata:&#xA;      creation_time   : 2020-02-29T22:07:42.000000Z&#xA;      handler_name    : Apple Sound Media Handler&#xA;      timecode        : 00:00:00;00&#xA;    Stream #0:5(eng): Audio: pcm_s24le (in24 / 0x34326E69), 48000 Hz, 1 channels, s32 (24 bit), 1152 kb/s (default)&#xA;    Metadata:&#xA;      creation_time   : 2020-02-29T22:07:42.000000Z&#xA;      handler_name    : Apple Sound Media Handler&#xA;      timecode        : 00:00:00;00&#xA;    Stream #0:6(eng): Audio: pcm_s24le (in24 / 0x34326E69), 48000 Hz, 1 channels, s32 (24 bit), 1152 kb/s (default)&#xA;    Metadata:&#xA;      creation_time   : 2020-02-29T22:07:42.000000Z&#xA;      handler_name    : Apple Sound Media Handler&#xA;      timecode        : 00:00:00;00&#xA;    Stream #0:7(eng): Audio: pcm_s24le (in24 / 0x34326E69), 48000 Hz, 1 channels, s32 (24 bit), 1152 kb/s (default)&#xA;    Metadata:&#xA;      creation_time   : 2020-02-29T22:07:42.000000Z&#xA;      handler_name    : Apple Sound Media Handler&#xA;      timecode        : 00:00:00;00&#xA;    Stream #0:8(eng): Audio: pcm_s24le (in24 / 0x34326E69), 48000 Hz, 1 channels, s32 (24 bit), 1152 kb/s (default)&#xA;    Metadata:&#xA;      creation_time   : 2020-02-29T22:07:42.000000Z&#xA;      handler_name    : Apple Sound Media Handler&#xA;      timecode        : 00:00:00;00&#xA;    Stream #0:9(eng): Audio: pcm_s24le (in24 / 0x34326E69), 48000 Hz, 1 channels, s32 (24 bit), 1152 kb/s (default)&#xA;    Metadata:&#xA;      creation_time   : 2020-02-29T22:07:42.000000Z&#xA;      handler_name    : Apple Sound Media Handler&#xA;      timecode        : 00:00:00;00&#xA;    Stream #0:10(eng): Audio: pcm_s24le (in24 / 0x34326E69), 48000 Hz, 1 channels, s32 (24 bit), 1152 kb/s (default)&#xA;    Metadata:&#xA;      creation_time   : 2020-02-29T22:07:42.000000Z&#xA;      handler_name    : Apple Sound Media Handler&#xA;      timecode        : 00:00:00;00&#xA;    Stream #0:11(eng): Audio: pcm_s24le (in24 / 0x34326E69), 48000 Hz, 1 channels, s32 (24 bit), 1152 kb/s (default)&#xA;    Metadata:&#xA;      creation_time   : 2020-02-29T22:07:42.000000Z&#xA;      handler_name    : Apple Sound Media Handler&#xA;      timecode        : 00:00:00;00&#xA;    Stream #0:12(eng): Audio: pcm_s24le (in24 / 0x34326E69), 48000 Hz, 1 channels, s32 (24 bit), 1152 kb/s (default)&#xA;    Metadata:&#xA;      creation_time   : 2020-02-29T22:07:42.000000Z&#xA;      handler_name    : Apple Sound Media Handler&#xA;      timecode        : 00:00:00;00&#xA;    Stream #0:13(eng): Audio: pcm_s24le (in24 / 0x34326E69), 48000 Hz, 1 channels, s32 (24 bit), 1152 kb/s (default)&#xA;    Metadata:&#xA;      creation_time   : 2020-02-29T22:07:42.000000Z&#xA;      handler_name    : Apple Sound Media Handler&#xA;      timecode        : 00:00:00;00&#xA;    Stream #0:14(eng): Audio: pcm_s24le (in24 / 0x34326E69), 48000 Hz, 1 channels, s32 (24 bit), 1152 kb/s (default)&#xA;    Metadata:&#xA;      creation_time   : 2020-02-29T22:07:42.000000Z&#xA;      handler_name    : Apple Sound Media Handler&#xA;      timecode        : 00:00:00;00&#xA;    Stream #0:15(eng): Audio: pcm_s24le (in24 / 0x34326E69), 48000 Hz, 1 channels, s32 (24 bit), 1152 kb/s (default)&#xA;    Metadata:&#xA;      creation_time   : 2020-02-29T22:07:42.000000Z&#xA;      handler_name    : Apple Sound Media Handler&#xA;      timecode        : 00:00:00;00&#xA;    Stream #0:16(eng): Audio: pcm_s24le (in24 / 0x34326E69), 48000 Hz, 1 channels, s32 (24 bit), 1152 kb/s (default)&#xA;    Metadata:&#xA;      creation_time   : 2020-02-29T22:07:42.000000Z&#xA;      handler_name    : Apple Sound Media Handler&#xA;      timecode        : 00:00:00;00&#xA;    Stream #0:17(eng): Data: none (tmcd / 0x64636D74), 0 kb/s (default)&#xA;    Metadata:&#xA;      creation_time   : 2020-02-29T22:07:42.000000Z&#xA;      handler_name    : Time Code Media Handler&#xA;      timecode        : 00:00:00;00&#xA;Unsupported codec with id 0 for input stream 17&#xA;

    &#xA;

  • Duplicated frames when mering multiple videos with xfade filter (ffmpeg)

    25 février 2021, par tjk

    I'm stuck with merging multiple videos with audio. This used to work on most videos I merged before but with some videos, I get the "More than 1000 frames duplicated" warning, and the output video is broken (some videos won't play, just static picture and the sound is misaligned).

    &#xA;

    All videos are in the same format afaik. The only difference I see is that some are "yuvj420p(pc)" and most are "yuv420p". But I tried merging without those with "yuvj420p(pc)" and it didn't help.

    &#xA;

    Already tried adding "-vsync vfr", didn't help too.&#xA;Interestingly — if I remove the second or the last input video, no warning is given and it all works.

    &#xA;

    The command I use :

    &#xA;

    ffmpeg  -i intro.mp4 \&#xA;     -i 2043651222.mp4 \&#xA;     -i 2668231460.mp4 \&#xA;     -i 2342967217.mp4 \&#xA;     -i 2345792509.mp4 \&#xA;     -i 2764881879.mp4 \&#xA;     -i 3127825310.mp4 \&#xA;     -i 3058954129.mp4 \&#xA;     -i 2533841315.mp4 \&#xA;     -i 2334544474.mp4 \&#xA;     -i 2493440007.mp4 \&#xA;     -filter_complex \&#xA;"[0][1]xfade=transition=fade:duration=0.5:offset=3.5000000[V01]; \&#xA;[V01][2]xfade=transition=fade:duration=0.5:offset=7.67000[V02]; \&#xA;[V02][3]xfade=transition=fade:duration=0.5:offset=27.21000[V03]; \&#xA;[V03][4]xfade=transition=fade:duration=0.5:offset=37.01000[V04]; \&#xA;[V04][5]xfade=transition=fade:duration=0.5:offset=54.11000[V05]; \&#xA;[V05][6]xfade=transition=fade:duration=0.5:offset=56.63000[V06]; \&#xA;[V06][7]xfade=transition=fade:duration=0.5:offset=80.49000[V07]; \&#xA;[V07][8]xfade=transition=fade:duration=0.5:offset=107.23000[V08]; \&#xA;[V08][9]xfade=transition=fade:duration=0.5:offset=110.12000[V09]; \&#xA;[V09][10]xfade=transition=fade:duration=0.5:offset=118.31000,format=yuv420p[video]; \&#xA;[0:a]aresample=async=1:first_pts=0,apad,atrim=0:4[A0]; \&#xA;[1:a]aresample=async=1:first_pts=0,apad,atrim=0:4.67[A1]; \&#xA;[2:a]aresample=async=1:first_pts=0,apad,atrim=0:20.04[A2]; \&#xA;[3:a]aresample=async=1:first_pts=0,apad,atrim=0:10.3[A3]; \&#xA;[4:a]aresample=async=1:first_pts=0,apad,atrim=0:17.6[A4]; \&#xA;[5:a]aresample=async=1:first_pts=0,apad,atrim=0:3.02[A5]; \&#xA;[6:a]aresample=async=1:first_pts=0,apad,atrim=0:24.36[A6]; \&#xA;[7:a]aresample=async=1:first_pts=0,apad,atrim=0:27.24[A7]; \&#xA;[8:a]aresample=async=1:first_pts=0,apad,atrim=0:3.39[A8]; \&#xA;[9:a]aresample=async=1:first_pts=0,apad,atrim=0:8.69[A9]; \&#xA;[10:a]aresample=async=1:first_pts=0,apad,atrim=0:14.88[A10]; \&#xA;[A0][A1]acrossfade=d=0.5:c1=tri:c2=tri[A0001]; \&#xA;[A0001][A2]acrossfade=d=0.5:c1=tri:c2=tri[A0002]; \&#xA;[A0002][A3]acrossfade=d=0.5:c1=tri:c2=tri[A0003]; \&#xA;[A0003][A4]acrossfade=d=0.5:c1=tri:c2=tri[A0004]; \&#xA;[A0004][A5]acrossfade=d=0.5:c1=tri:c2=tri[A0005]; \&#xA;[A0005][A6]acrossfade=d=0.5:c1=tri:c2=tri[A0006]; \&#xA;[A0006][A7]acrossfade=d=0.5:c1=tri:c2=tri[A0007]; \&#xA;[A0007][A8]acrossfade=d=0.5:c1=tri:c2=tri[A0008]; \&#xA;[A0008][A9]acrossfade=d=0.5:c1=tri:c2=tri[A0009]; \&#xA;[A0009][A10]acrossfade=d=0.5:c1=tri:c2=tri[audio] \&#xA;" -map "[video]" -map "[audio]" -movflags &#x2B;faststart &#x27;compiled.mp4&#x27;&#xA;

    &#xA;

    Full log :

    &#xA;

    ffmpeg version 4.3.1 Copyright (c) 2000-2020 the FFmpeg developers&#xA;  built with Apple clang version 11.0.3 (clang-1103.0.32.62)&#xA;  configuration: --prefix=/usr/local/Cellar/ffmpeg/4.3.1 --enable-shared --enable-pthreads --enable-version3 --enable-avresample --cc=clang --host-cflags= --host-ldflags= --enable-ffplay --enable-gnutls --enable-gpl --enable-libaom --enable-libbluray --enable-libdav1d --enable-libmp3lame --enable-libopus --enable-librav1e --enable-librubberband --enable-libsnappy --enable-libsrt --enable-libtesseract --enable-libtheora --enable-libvidstab --enable-libvorbis --enable-libvpx --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxml2 --enable-libxvid --enable-lzma --enable-libfontconfig --enable-libfreetype --enable-frei0r --enable-libass --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-librtmp --enable-libspeex --enable-libsoxr --enable-videotoolbox --disable-libjack --disable-indev=jack&#xA;  libavutil      56. 51.100 / 56. 51.100&#xA;  libavcodec     58. 91.100 / 58. 91.100&#xA;  libavformat    58. 45.100 / 58. 45.100&#xA;  libavdevice    58. 10.100 / 58. 10.100&#xA;  libavfilter     7. 85.100 /  7. 85.100&#xA;  libavresample   4.  0.  0 /  4.  0.  0&#xA;  libswscale      5.  7.100 /  5.  7.100&#xA;  libswresample   3.  7.100 /  3.  7.100&#xA;  libpostproc    55.  7.100 / 55.  7.100&#xA;Input #0, mov,mp4,m4a,3gp,3g2,mj2, from &#x27;intro.mp4&#x27;:&#xA;  Metadata:&#xA;    major_brand     : isom&#xA;    minor_version   : 512&#xA;    compatible_brands: isomiso2avc1mp41&#xA;    encoder         : Lavf58.29.100&#xA;  Duration: 00:00:04.00, start: 0.000000, bitrate: 98 kb/s&#xA;    Stream #0:0(und): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 2 kb/s (default)&#xA;    Metadata:&#xA;      handler_name    : SoundHandler&#xA;    Stream #0:1(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 720x1280 [SAR 1:1 DAR 9:16], 85 kb/s, 30 fps, 30 tbr, 15360 tbn, 60 tbc (default)&#xA;    Metadata:&#xA;      handler_name    : VideoHandler&#xA;Input #1, mov,mp4,m4a,3gp,3g2,mj2, from &#x27;2043651222.mp4&#x27;:&#xA;  Metadata:&#xA;    major_brand     : isom&#xA;    minor_version   : 512&#xA;    compatible_brands: isomiso2avc1mp41&#xA;    encoder         : Lavf58.45.100&#xA;  Duration: 00:00:04.67, start: 0.000000, bitrate: 471 kb/s&#xA;    Stream #1:0(und): Video: h264 (High) (avc1 / 0x31637661), yuvj420p(pc), 720x1280 [SAR 1:1 DAR 9:16], 333 kb/s, 30 fps, 30 tbr, 15360 tbn, 60 tbc (default)&#xA;    Metadata:&#xA;      handler_name    : VideoHandler&#xA;    Stream #1:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 129 kb/s (default)&#xA;    Metadata:&#xA;      handler_name    : SoundHandler&#xA;Input #2, mov,mp4,m4a,3gp,3g2,mj2, from &#x27;2668231460.mp4&#x27;:&#xA;  Metadata:&#xA;    major_brand     : isom&#xA;    minor_version   : 512&#xA;    compatible_brands: isomiso2avc1mp41&#xA;    encoder         : Lavf58.45.100&#xA;  Duration: 00:00:20.04, start: 0.000000, bitrate: 1882 kb/s&#xA;    Stream #2:0(und): Video: h264 (Main) (avc1 / 0x31637661), yuv420p, 720x1280, 1685 kb/s, 30 fps, 30 tbr, 15360 tbn, 60 tbc (default)&#xA;    Metadata:&#xA;      handler_name    : Core Media Video&#xA;    Stream #2:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, mono, fltp, 191 kb/s (default)&#xA;    Metadata:&#xA;      handler_name    : Core Media Audio&#xA;Input #3, mov,mp4,m4a,3gp,3g2,mj2, from &#x27;2342967217.mp4&#x27;:&#xA;  Metadata:&#xA;    major_brand     : isom&#xA;    minor_version   : 512&#xA;    compatible_brands: isomiso2avc1mp41&#xA;    encoder         : Lavf58.45.100&#xA;  Duration: 00:00:10.30, start: 0.000000, bitrate: 446 kb/s&#xA;    Stream #3:0(eng): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 720x1280 [SAR 1:1 DAR 9:16], 367 kb/s, 30 fps, 30 tbr, 15360 tbn, 60 tbc (default)&#xA;    Metadata:&#xA;      handler_name    : VideoHandler&#xA;    Stream #3:1(eng): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, mono, fltp, 69 kb/s (default)&#xA;    Metadata:&#xA;      handler_name    : SoundHandler&#xA;Input #4, mov,mp4,m4a,3gp,3g2,mj2, from &#x27;2345792509.mp4&#x27;:&#xA;  Metadata:&#xA;    major_brand     : isom&#xA;    minor_version   : 512&#xA;    compatible_brands: isomiso2avc1mp41&#xA;    encoder         : Lavf58.45.100&#xA;  Duration: 00:00:17.60, start: 0.000000, bitrate: 2546 kb/s&#xA;    Stream #4:0(und): Video: h264 (Main) (avc1 / 0x31637661), yuv420p, 720x1280, 2342 kb/s, 30 fps, 30 tbr, 15360 tbn, 60 tbc (default)&#xA;    Metadata:&#xA;      handler_name    : Core Media Video&#xA;    Stream #4:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, mono, fltp, 199 kb/s (default)&#xA;    Metadata:&#xA;      handler_name    : Core Media Audio&#xA;Input #5, mov,mp4,m4a,3gp,3g2,mj2, from &#x27;2764881879.mp4&#x27;:&#xA;  Metadata:&#xA;    major_brand     : isom&#xA;    minor_version   : 512&#xA;    compatible_brands: isomiso2avc1mp41&#xA;    encoder         : Lavf58.45.100&#xA;  Duration: 00:00:03.02, start: 0.000000, bitrate: 1293 kb/s&#xA;    Stream #5:0(und): Video: h264 (Main) (avc1 / 0x31637661), yuv420p, 720x1280, 1110 kb/s, 30 fps, 30 tbr, 15360 tbn, 60 tbc (default)&#xA;    Metadata:&#xA;      handler_name    : Core Media Video&#xA;    Stream #5:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, mono, fltp, 178 kb/s (default)&#xA;    Metadata:&#xA;      handler_name    : Core Media Audio&#xA;Input #6, mov,mp4,m4a,3gp,3g2,mj2, from &#x27;3127825310.mp4&#x27;:&#xA;  Metadata:&#xA;    major_brand     : isom&#xA;    minor_version   : 512&#xA;    compatible_brands: isomiso2avc1mp41&#xA;    encoder         : Lavf58.45.100&#xA;  Duration: 00:00:24.36, start: 0.000000, bitrate: 401 kb/s&#xA;    Stream #6:0(eng): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 720x1280 [SAR 1:1 DAR 9:16], 323 kb/s, 30 fps, 30 tbr, 15360 tbn, 60 tbc (default)&#xA;    Metadata:&#xA;      handler_name    : VideoHandler&#xA;    Stream #6:1(eng): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, mono, fltp, 69 kb/s (default)&#xA;    Metadata:&#xA;      handler_name    : SoundHandler&#xA;Input #7, mov,mp4,m4a,3gp,3g2,mj2, from &#x27;3058954129.mp4&#x27;:&#xA;  Metadata:&#xA;    major_brand     : isom&#xA;    minor_version   : 512&#xA;    compatible_brands: isomiso2avc1mp41&#xA;    encoder         : Lavf58.45.100&#xA;  Duration: 00:00:27.24, start: 0.000000, bitrate: 1723 kb/s&#xA;    Stream #7:0(und): Video: h264 (Main) (avc1 / 0x31637661), yuv420p, 720x1280, 1519 kb/s, 30 fps, 30 tbr, 15360 tbn, 60 tbc (default)&#xA;    Metadata:&#xA;      handler_name    : Core Media Video&#xA;    Stream #7:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 194 kb/s (default)&#xA;    Metadata:&#xA;      handler_name    : Core Media Audio&#xA;Input #8, mov,mp4,m4a,3gp,3g2,mj2, from &#x27;2533841315.mp4&#x27;:&#xA;  Metadata:&#xA;    major_brand     : isom&#xA;    minor_version   : 512&#xA;    compatible_brands: isomiso2avc1mp41&#xA;    encoder         : Lavf58.45.100&#xA;  Duration: 00:00:03.39, start: 0.000000, bitrate: 1807 kb/s&#xA;    Stream #8:0(und): Video: h264 (Main) (avc1 / 0x31637661), yuv420p, 720x1280, 1657 kb/s, 30 fps, 30 tbr, 15360 tbn, 60 tbc (default)&#xA;    Metadata:&#xA;      handler_name    : Core Media Video&#xA;    Stream #8:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, mono, fltp, 150 kb/s (default)&#xA;    Metadata:&#xA;      handler_name    : Core Media Audio&#xA;Input #9, mov,mp4,m4a,3gp,3g2,mj2, from &#x27;2334544474.mp4&#x27;:&#xA;  Metadata:&#xA;    major_brand     : isom&#xA;    minor_version   : 512&#xA;    compatible_brands: isomiso2avc1mp41&#xA;    encoder         : Lavf58.45.100&#xA;  Duration: 00:00:08.69, start: 0.000000, bitrate: 2675 kb/s&#xA;    Stream #9:0(und): Video: h264 (Main) (avc1 / 0x31637661), yuv420p, 720x1280, 2500 kb/s, 30 fps, 30 tbr, 15360 tbn, 60 tbc (default)&#xA;    Metadata:&#xA;      handler_name    : Core Media Video&#xA;    Stream #9:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, mono, fltp, 180 kb/s (default)&#xA;    Metadata:&#xA;      handler_name    : Core Media Audio&#xA;Input #10, mov,mp4,m4a,3gp,3g2,mj2, from &#x27;2493440007.mp4&#x27;:&#xA;  Metadata:&#xA;    major_brand     : isom&#xA;    minor_version   : 512&#xA;    compatible_brands: isomiso2avc1mp41&#xA;    encoder         : Lavf58.45.100&#xA;  Duration: 00:00:14.88, start: 0.000000, bitrate: 966 kb/s&#xA;    Stream #10:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 720x1280, 889 kb/s, 30 fps, 30 tbr, 15360 tbn, 60 tbc (default)&#xA;    Metadata:&#xA;      handler_name    : Core Media Video&#xA;    Stream #10:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, mono, fltp, 69 kb/s (default)&#xA;    Metadata:&#xA;      handler_name    : Core Media Audio&#xA;File &#x27;compiled.mp4&#x27; already exists. Overwrite? [y/N] y&#xA;Stream mapping:&#xA;  Stream #0:0 (aac) -> aresample&#xA;  Stream #0:1 (h264) -> xfade:main&#xA;  Stream #1:0 (h264) -> xfade:xfade&#xA;  Stream #1:1 (aac) -> aresample&#xA;  Stream #2:0 (h264) -> xfade:xfade&#xA;  Stream #2:1 (aac) -> aresample&#xA;  Stream #3:0 (h264) -> xfade:xfade&#xA;  Stream #3:1 (aac) -> aresample&#xA;  Stream #4:0 (h264) -> xfade:xfade&#xA;  Stream #4:1 (aac) -> aresample&#xA;  Stream #5:0 (h264) -> xfade:xfade&#xA;  Stream #5:1 (aac) -> aresample&#xA;  Stream #6:0 (h264) -> xfade:xfade&#xA;  Stream #6:1 (aac) -> aresample&#xA;  Stream #7:0 (h264) -> xfade:xfade&#xA;  Stream #7:1 (aac) -> aresample&#xA;  Stream #8:0 (h264) -> xfade:xfade&#xA;  Stream #8:1 (aac) -> aresample&#xA;  Stream #9:0 (h264) -> xfade:xfade&#xA;  Stream #9:1 (aac) -> aresample&#xA;  Stream #10:0 (h264) -> xfade:xfade&#xA;  Stream #10:1 (aac) -> aresample&#xA;  format -> Stream #0:0 (libx264)&#xA;  acrossfade -> Stream #0:1 (aac)&#xA;Press [q] to stop, [?] for help&#xA;[swscaler @ 0x7ff21ef72000] deprecated pixel format used, make sure you did set range correctly&#xA;[libx264 @ 0x7ff227827800] using SAR=1/1&#xA;[libx264 @ 0x7ff227827800] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2 AVX FMA3 BMI2 AVX2&#xA;[libx264 @ 0x7ff227827800] profile High, level 3.1, 4:2:0, 8-bit&#xA;[libx264 @ 0x7ff227827800] 264 - core 160 r3011M cde9a93 - H.264/MPEG-4 AVC codec - Copyleft 2003-2020 - http://www.videolan.org/x264.html - options: cabac=1 ref=3 deblock=1:0:0 analyse=0x3:0x113 me=hex subme=7 psy=1 psy_rd=1.00:0.00 mixed_ref=1 me_range=16 chroma_me=1 trellis=1 8x8dct=1 cqm=0 deadzone=21,11 fast_pskip=1 chroma_qp_offset=-2 threads=12 lookahead_threads=2 sliced_threads=0 nr=0 decimate=1 interlaced=0 bluray_compat=0 constrained_intra=0 bframes=3 b_pyramid=2 b_adapt=1 b_bias=0 direct=1 weightb=1 open_gop=0 weightp=2 keyint=250 keyint_min=25 scenecut=40 intra_refresh=0 rc_lookahead=40 rc=crf mbtree=1 crf=23.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 ip_ratio=1.40 aq=1:1.00&#xA;Output #0, mp4, to &#x27;compiled.mp4&#x27;:&#xA;  Metadata:&#xA;    major_brand     : isom&#xA;    minor_version   : 512&#xA;    compatible_brands: isomiso2avc1mp41&#xA;    encoder         : Lavf58.45.100&#xA;    Stream #0:0: Video: h264 (libx264) (avc1 / 0x31637661), yuv420p(progressive), 720x1280 [SAR 1:1 DAR 9:16], q=-1--1, 30 fps, 15360 tbn, 30 tbc (default)&#xA;    Metadata:&#xA;      encoder         : Lavc58.91.100 libx264&#xA;    Side data:&#xA;      cpb: bitrate max/min/avg: 0/0/0 buffer size: 0 vbv_delay: N/A&#xA;    Stream #0:1: Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 128 kb/s (default)&#xA;    Metadata:&#xA;      encoder         : Lavc58.91.100 aac&#xA;More than 1000 frames duplicated    1024kB time=00:00:47.41 bitrate= 176.9kbits/s dup=597 drop=996 speed=5.81x    &#xA;[mp4 @ 0x7ff227815200] Starting second pass: moving the moov atom to the beginning of the filep=1954 speed=4.07x    &#xA;frame= 3989 fps=121 q=-1.0 Lsize=   13252kB time=00:02:12.98 bitrate= 816.3kbits/s dup=1946 drop=1954 speed=4.05x    &#xA;video:11094kB audio:2036kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.927680%&#xA;[libx264 @ 0x7ff227827800] frame I:23    Avg QP:14.09  size: 69236&#xA;[libx264 @ 0x7ff227827800] frame P:1195  Avg QP:18.60  size:  6527&#xA;[libx264 @ 0x7ff227827800] frame B:2771  Avg QP:21.69  size:   710&#xA;[libx264 @ 0x7ff227827800] consecutive B-frames:  3.3% 11.5%  2.6% 82.6%&#xA;[libx264 @ 0x7ff227827800] mb I  I16..4: 36.4% 41.9% 21.7%&#xA;[libx264 @ 0x7ff227827800] mb P  I16..4:  3.1%  6.0%  1.1%  P16..4: 15.4%  5.5%  2.9%  0.0%  0.0%    skip:66.0%&#xA;[libx264 @ 0x7ff227827800] mb B  I16..4:  0.1%  0.1%  0.0%  B16..8: 10.2%  0.6%  0.0%  direct: 0.4%  skip:88.5%  L0:42.8% L1:53.3% BI: 3.8%&#xA;[libx264 @ 0x7ff227827800] 8x8 transform intra:55.8% inter:63.6%&#xA;[libx264 @ 0x7ff227827800] coded y,uvDC,uvAC intra: 25.6% 42.8% 14.5% inter: 2.7% 2.5% 0.0%&#xA;[libx264 @ 0x7ff227827800] i16 v,h,dc,p: 45% 22% 14% 19%&#xA;[libx264 @ 0x7ff227827800] i8 v,h,dc,ddl,ddr,vr,hd,vl,hu: 38% 19% 28%  3%  2%  3%  2%  3%  2%&#xA;[libx264 @ 0x7ff227827800] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 32% 17% 15%  6%  7%  8%  5%  6%  4%&#xA;[libx264 @ 0x7ff227827800] i8c dc,h,v,p: 55% 15% 23%  7%&#xA;[libx264 @ 0x7ff227827800] Weighted P-Frames: Y:2.0% UV:1.7%&#xA;[libx264 @ 0x7ff227827800] ref P L0: 68.4% 13.3% 14.4%  3.9%  0.1%&#xA;[libx264 @ 0x7ff227827800] ref B L0: 86.0% 12.0%  2.1%&#xA;[libx264 @ 0x7ff227827800] ref B L1: 96.9%  3.1%&#xA;[libx264 @ 0x7ff227827800] kb/s:683.43&#xA;[aac @ 0x7ff22781fc00] Qavg: 2168.180&#xA;

    &#xA;