Recherche avancée

Médias (0)

Mot : - Tags -/protocoles

Aucun média correspondant à vos critères n’est disponible sur le site.

Autres articles (47)

  • Configurer la prise en compte des langues

    15 novembre 2010, par

    Accéder à la configuration et ajouter des langues prises en compte
    Afin de configurer la prise en compte de nouvelles langues, il est nécessaire de se rendre dans la partie "Administrer" du site.
    De là, dans le menu de navigation, vous pouvez accéder à une partie "Gestion des langues" permettant d’activer la prise en compte de nouvelles langues.
    Chaque nouvelle langue ajoutée reste désactivable tant qu’aucun objet n’est créé dans cette langue. Dans ce cas, elle devient grisée dans la configuration et (...)

  • Soumettre améliorations et plugins supplémentaires

    10 avril 2011

    Si vous avez développé une nouvelle extension permettant d’ajouter une ou plusieurs fonctionnalités utiles à MediaSPIP, faites le nous savoir et son intégration dans la distribution officielle sera envisagée.
    Vous pouvez utiliser la liste de discussion de développement afin de le faire savoir ou demander de l’aide quant à la réalisation de ce plugin. MediaSPIP étant basé sur SPIP, il est également possible d’utiliser le liste de discussion SPIP-zone de SPIP pour (...)

  • Support de tous types de médias

    10 avril 2011

    Contrairement à beaucoup de logiciels et autres plate-formes modernes de partage de documents, MediaSPIP a l’ambition de gérer un maximum de formats de documents différents qu’ils soient de type : images (png, gif, jpg, bmp et autres...) ; audio (MP3, Ogg, Wav et autres...) ; vidéo (Avi, MP4, Ogv, mpg, mov, wmv et autres...) ; contenu textuel, code ou autres (open office, microsoft office (tableur, présentation), web (html, css), LaTeX, Google Earth) (...)

Sur d’autres sites (3672)

  • h264 annexb bitstream to flv mux ffmpeg library

    20 avril 2015, par Muhammad Ali

    I have an IP Camera which gives H264 annexb Bitstream through SDK calls.
    I want to pack this video stream into FLV container. So far I’ve got to know the following :-

    I have to convert H264 annexb to H264 AVCC :
    For this I’ll have to replace NAL header byte (0x00000001) with Size of NALU (big endian format).

    My question is, What do I do with SPS and PPS ? should I write (av_interleaved_write_frame) them as are after replacing the NAL header ? or do I not write these frames at all ?

    I read about AVCC requiring extra data. How do I construct that ? where do I pass that ?

  • What causes Firefox to refuse playing one specific MP4 that plays well on other browsers, resolution being the only difference ?

    3 décembre 2014, par Faro

    I’m a developer for a PHP powered website that allows the upload of videos which get converted to MP4 using ffmpeg. This setup worked pretty well so far, however today I came across a report of a user that couldn’t play one of the files in Firefox.

    I was unable to replicate the issue on my own machine at first, but using a fresh install of Windows 7 I actually got the same issue : The file will not play in Firefox, but works fine in Chrome. If called up directly, Firefox will say "Video can’t be played because the file is corrupt".
    When downloaded, Windows will also not create a thumbnail of the video for the file and WMP will only play the audio part.

    On my own machine the file works perfectly in WMP which made me wonder if it could be a codec issue (I do have the K-Lite Codec Pack installed), however I’ve compared the file to a working one and the only difference is the resolution, filesize and the format profile which is "High@L3.1" for a working file with a 720p resolution and "High@L4.0" for the non-working one (which is 1600x1200).

    I then read through the Wikipedia article on H.264/MPEG-4 AVC and began to wonder if the level might be the issue, and the tool I used (XMedia Recode) actually did not allow me to set a height bigger than 1080 on Level 4, however when I set the level to 5 and encoded the file again, it still wouldn’t play.

    I did find a note on the MDN page of supported formats which reads :

    Firefox/Firefox for Android/Firefox OS supports the format in some cases, but only when a third-party decoder is available, and the device hardware can handle the profile used to encode the MP4.

    I’m assuming that is why the codec pack would allow Firefox to play even the ’broken’ file on my machine, I still don’t understand though why Firefox does play some files but not this one, especially when Chrome on the same machine plays all of them.

    The line in PHP that starts the conversion is as follows :

    exec("/usr/local/bin/ffmpeg '-i' '" . $file_in . "' '-qscale' '4' '-y' '-threads' '1' '-acodec' 'libvo_aacenc' '-vcodec' 'h264' '" . $file_out . "' 2>&1", $buffer, $success);

    This should produce correct files, and this is indeed the first time a file has issues.

    MediaInfo provides this data for the file stream :

    Video
    ID                                       : 1
    Format                                   : AVC
    Format/Info                              : Advanced Video Codec
    Format profile                           : High@L4.0
    Format settings, CABAC                   : Yes
    Format settings, ReFrames                : 4 frames
    Codec ID                                 : avc1
    Codec ID/Info                            : Advanced Video Coding
    Duration                                 : 12mn 26s
    Bit rate                                 : 77.7 Kbps
    Width                                    : 1 600 pixels
    Height                                   : 1 200 pixels
    Display aspect ratio                     : 4:3
    Frame rate mode                          : Constant
    Frame rate                               : 30.000 fps
    Color space                              : YUV
    Chroma subsampling                       : 4:2:0
    Bit depth                                : 8 bits
    Scan type                                : Progressive
    Bits/(Pixel*Frame)                       : 0.001
    Stream size                              : 6.92 MiB (36%)
    Writing library                          : x264 core 142 r14 956c8d8
    Encoding settings                        : 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=1 / lookahead_threads=1 / 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
    Language                                 : English

    Audio
    ID                                       : 2
    Format                                   : AAC
    Format/Info                              : Advanced Audio Codec
    Format profile                           : LC
    Codec ID                                 : 40
    Duration                                 : 12mn 26s
    Duration_LastFrame                       : -10ms
    Bit rate mode                            : Constant
    Bit rate                                 : 128 Kbps
    Channel(s)                               : 2 channels
    Channel positions                        : Front: L R
    Sampling rate                            : 44.1 KHz
    Compression mode                         : Lossy
    Stream size                              : 11.4 MiB (60%)
    Language                                 : English

    I’ve uploaded a zip with 3 versions of the file, the untouched one, the converted one with the same settings the website would use, and another converted one with level 5.

    Maybe I’m missing something obvious, but I couldn’t find anything wrong with it, what do I need to change in order to produce a file that will work natively in Firefox ?

    Also, this is my first question on SO, so if you see anything that I can improve, please let me know :-)

    Edit : This is the output of calling ffmpeg (with the faststart option)

    /usr/local/bin/ffmpeg '-i' '49cf594e91d0dac376aa0b2b96972ded.mp4' '-movflags' '+faststart' '-qscale' '4' '-y' '-threads' '1' '-acodec' 'libvo_aacenc' '-vcodec' 'h264' 'test.mp4'

    ffmpeg version 1.2.5-   http://johnvansickle.com/ffmpeg/    Copyright (c) 2000-2014 the FFmpeg developers
     built on Jan 22 2014 20:28:02 with gcc 4.8 (Debian 4.8.2-14)
     configuration: --enable-gpl --enable-version3 --disable-shared --disable-debug --enable-runtime-cpudetect --enable-libmp3lame --enable-libx264 --enable-libspeex --enable-libvorbis --enable-libvpx --enable-libxvid --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libtheora --enable-libvo-aacenc --enable-libvo-amrwbenc --enable-gray --enable-libopenjpeg --disable-ffserver
     libavutil      52. 18.100 / 52. 18.100
     libavcodec     54. 92.100 / 54. 92.100
     libavformat    54. 63.104 / 54. 63.104
     libavdevice    54.  3.103 / 54.  3.103
     libavfilter     3. 42.103 /  3. 42.103
     libswscale      2.  2.100 /  2.  2.100
     libswresample   0. 17.102 /  0. 17.102
     libpostproc    52.  2.100 / 52.  2.100
    Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '49cf594e91d0dac376aa0b2b96972ded.mp4':
     Metadata:
       major_brand     : isom
       minor_version   : 512
       compatible_brands: isomiso2avc1mp41
       encoder         : Lavf54.63.104
     Duration: 00:12:26.37, start: 0.036281, bitrate: 214 kb/s
       Stream #0:0(eng): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 1600x1200 [SAR 1:1 DAR 4:3], 77 kb/s, 30 fps, 30 tbr, 15360 tbn, 60 tbc
       Metadata:
         handler_name    : VideoHandler
       Stream #0:1(eng): Audio: aac (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 128 kb/s
       Metadata:
         handler_name    : SoundHandler
    Please use -q:a or -q:v, -qscale is ambiguous
    [libx264 @ 0x2802ac0] using SAR=1/1
    [libx264 @ 0x2802ac0] using cpu capabilities: MMX2 SSE2Fast LZCNT
    [libx264 @ 0x2802ac0] profile High, level 4.0
    [libx264 @ 0x2802ac0] 264 - core 142 r14 956c8d8 - H.264/MPEG-4 AVC codec - Copyleft 2003-2014 - 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=1 lookahead_threads=1 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
    Output #0, mp4, to 'test.mp4':
     Metadata:
       major_brand     : isom
       minor_version   : 512
       compatible_brands: isomiso2avc1mp41
       encoder         : Lavf54.63.104
       Stream #0:0(eng): Video: h264 ([33][0][0][0] / 0x0021), yuv420p, 1600x1200 [SAR 1:1 DAR 4:3], q=-1--1, 15360 tbn, 30 tbc
       Metadata:
         handler_name    : VideoHandler
       Stream #0:1(eng): Audio: aac ([64][0][0][0] / 0x0040), 44100 Hz, stereo, s16, 128 kb/s
       Metadata:
         handler_name    : SoundHandler
    Stream mapping:
     Stream #0:0 -> #0:0 (h264 -> libx264)
     Stream #0:1 -> #0:1 (aac -> libvo_aacenc)
    Press [q] to stop, [?] for help
    Starting second pass: moving header on top of the file30.77 bitrate= 202.5kbits/s dup=1 drop=0
    frame=15331 fps= 13 q=29.0 Lsize=   13201kB time=00:08:31.03 bitrate= 211.6kbits/s dup=1 drop=0
    video:4673kB audio:7986kB subtitle:0 global headers:0kB muxing overhead 4.286767%
    [libx264 @ 0x2802ac0] frame I:63    Avg QP:12.37  size: 39759
    [libx264 @ 0x2802ac0] frame P:3905  Avg QP:20.36  size:   313
    [libx264 @ 0x2802ac0] frame B:11363 Avg QP:33.67  size:    93
    [libx264 @ 0x2802ac0] consecutive B-frames:  1.1%  0.1%  0.2% 98.6%
    [libx264 @ 0x2802ac0] mb I  I16..4: 48.0% 41.5% 10.5%
    [libx264 @ 0x2802ac0] mb P  I16..4:  0.1%  0.2%  0.0%  P16..4:  0.5%  0.0%  0.0%  0.0%  0.0%    skip:99.1%
    [libx264 @ 0x2802ac0] mb B  I16..4:  0.0%  0.0%  0.0%  B16..8:  0.3%  0.0%  0.0%  direct: 0.0%  skip:99.7%  L0:50.2% L1:48.9% BI: 0.8%
    [libx264 @ 0x2802ac0] 8x8 transform intra:42.4% inter:36.9%
    [libx264 @ 0x2802ac0] coded y,uvDC,uvAC intra: 6.9% 13.4% 9.4% inter: 0.0% 0.1% 0.0%
    [libx264 @ 0x2802ac0] i16 v,h,dc,p: 82% 17%  1%  0%
    [libx264 @ 0x2802ac0] i8 v,h,dc,ddl,ddr,vr,hd,vl,hu: 30% 20% 49%  0%  0%  0%  0%  0%  0%
    [libx264 @ 0x2802ac0] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 41% 20% 18%  3%  4%  4%  4%  4%  3%
    [libx264 @ 0x2802ac0] i8c dc,h,v,p: 80% 12%  7%  1%
    [libx264 @ 0x2802ac0] Weighted P-Frames: Y:0.3% UV:0.3%
    [libx264 @ 0x2802ac0] ref P L0: 74.7%  3.8% 10.6% 10.9%  0.0%
    [libx264 @ 0x2802ac0] ref B L0: 70.3% 28.9%  0.8%
    [libx264 @ 0x2802ac0] ref B L1: 97.9%  2.1%
    [libx264 @ 0x2802ac0] kb/s:74.90
  • stout to textarea from ffmpeg command

    21 septembre 2014, par Brett

    Hi im trying to get the output of a ffmpeg command into a text level here is my code i am posting the lot as im brand new to java and am not sure where ive gone wrong i want to run the command and have the progress bar update and the output to show on a text area.
    any help would appreciated

    package MyPackage;
    import java.util.*;
    import java.io.BufferedReader;
    import java.io.File;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.util.logging.Level;
    import java.util.logging.Logger;


    /**
    *
    * @author brett
    */
    public class NumberAdditionUI extends javax.swing.JFrame {
       private static final long serialVersionUID = 1L;

       /**
        * Creates new form NumberAdditionUI
        */
       public NumberAdditionUI() {
           initComponents();
       }

       /**
        * This method is called from within the constructor to initialize the form.
        * WARNING: Do NOT modify this code. The content of this method is always
        * regenerated by the Form Editor.
        */
       @SuppressWarnings("unchecked")
       //
       private void initComponents() {

           db = new javax.swing.JFileChooser();
           jButton1 = new javax.swing.JButton();
           jButton2 = new javax.swing.JButton();
           jTextField1 = new javax.swing.JTextField();
           jButton3 = new javax.swing.JButton();
           jLabel1 = new javax.swing.JLabel();
           jProgressBar1 = new javax.swing.JProgressBar();
           jScrollPane1 = new javax.swing.JScrollPane();
           jTextArea1 = new javax.swing.JTextArea();

           db.setBackground(java.awt.Color.white);
           db.setCurrentDirectory(new java.io.File("C:\\Users\\brett\\Documents\\convert"));
           db.setDialogTitle("grabAFile");

           setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
           setTitle("Smoke Goobies");
           setMaximumSize(getPreferredSize());

           jButton1.setText("Exit");
           jButton1.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
           jButton1.addActionListener(new java.awt.event.ActionListener() {
               public void actionPerformed(java.awt.event.ActionEvent evt) {
                   jButton1ActionPerformed(evt);
               }
           });

           jButton2.setText("Browse");
           jButton2.addActionListener(new java.awt.event.ActionListener() {
               public void actionPerformed(java.awt.event.ActionEvent evt) {
                   jButton2ActionPerformed(evt);
               }
           });

           jTextField1.setText("Select A File To Covert");

           jButton3.setText("Run This Puppy");
           jButton3.addActionListener(new java.awt.event.ActionListener() {
               public void actionPerformed(java.awt.event.ActionEvent evt) {
                   jButton3ActionPerformed(evt);
               }
           });

           jLabel1.setFont(new java.awt.Font("Goudy Old Style", 1, 56)); // NOI18N
           jLabel1.setIcon(jLabel1.getIcon());
           jLabel1.setText("   MASHiTuP");

           jProgressBar1.setValue(50);
           jProgressBar1.setBorder(new javax.swing.border.MatteBorder(null));

           jTextArea1.setColumns(20);
           jTextArea1.setRows(5);
           jTextArea1.setAutoscrolls(false);
           jScrollPane1.setViewportView(jTextArea1);

           javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
           getContentPane().setLayout(layout);
           layout.setHorizontalGroup(
               layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
               .addGroup(layout.createSequentialGroup()
                   .addContainerGap()
                   .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                       .addComponent(jProgressBar1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                       .addGroup(layout.createSequentialGroup()
                           .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                               .addComponent(jLabel1, javax.swing.GroupLayout.PREFERRED_SIZE, 355, javax.swing.GroupLayout.PREFERRED_SIZE)
                               .addGroup(layout.createSequentialGroup()
                                   .addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, 282, javax.swing.GroupLayout.PREFERRED_SIZE)
                                   .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                   .addComponent(jButton2, javax.swing.GroupLayout.PREFERRED_SIZE, 77, javax.swing.GroupLayout.PREFERRED_SIZE))
                               .addGroup(layout.createSequentialGroup()
                                   .addComponent(jButton3)
                                   .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                                   .addComponent(jButton1)))
                           .addGap(0, 0, Short.MAX_VALUE))
                       .addComponent(jScrollPane1))
                   .addContainerGap())
           );
           layout.setVerticalGroup(
               layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
               .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                   .addContainerGap()
                   .addComponent(jLabel1, javax.swing.GroupLayout.PREFERRED_SIZE, 73, javax.swing.GroupLayout.PREFERRED_SIZE)
                   .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                   .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                       .addComponent(jButton2)
                       .addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                   .addGap(34, 34, 34)
                   .addComponent(jProgressBar1, javax.swing.GroupLayout.PREFERRED_SIZE, 24, javax.swing.GroupLayout.PREFERRED_SIZE)
                   .addGap(18, 18, 18)
                   .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 84, javax.swing.GroupLayout.PREFERRED_SIZE)
                   .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 48, Short.MAX_VALUE)
                   .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                       .addComponent(jButton1)
                       .addComponent(jButton3))
                   .addContainerGap())
           );

           jProgressBar1.getAccessibleContext().setAccessibleName("MYsTATUS");

           pack();
       }//

       private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                        
           System.exit(0);
       }                                        

       private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {                                        
          int returnVal = db.showOpenDialog( this );
          File f = db.getSelectedFile();
           String filename = f.getAbsolutePath();
          jTextField1.setText(filename);

       }                                        

       private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) {                                        
           java.lang.Runtime rt = java.lang.Runtime.getRuntime();
           java.lang.Process proc = null;
           try {
               proc = rt.exec("ipconfig");

               //proc = rt.exec("ffmpeg -i C:\\Users\\brett\\Documents\\MASH_02.avi C:\\Users\\brett\\Documents\\mash09.avi");
           } catch (IOException ex) {
               Logger.getLogger(NumberAdditionUI.class.getName()).log(Level.SEVERE, null, ex);
           }
           BufferedReader stdInput = new BufferedReader(new InputStreamReader(proc.getInputStream()));
           BufferedReader stdError = new BufferedReader(new InputStreamReader(proc.getErrorStream()));

           // read the output from the command
           System.out.println("Here is the standard output of the command:\n");
           String s;
           try {
               while ((s = stdInput.readLine()) != null) {
                   System.out.println(s);

                   jTextArea1.append(s+"\n\n");

               }
           } catch (IOException ex) {
               Logger.getLogger(NumberAdditionUI.class.getName()).log(Level.SEVERE, null, ex);
           }

           // read any errors from the attempted command
           System.out.println("Here is the standard error of the command (if any):\n");
           try {
               while ((s = stdError.readLine()) != null) {
                   System.out.println(s);
               }
           } catch (IOException ex) {
               Logger.getLogger(NumberAdditionUI.class.getName()).log(Level.SEVERE, null, ex);
           }
       }                                        

       /**
        *
        * @param args the command line arguments
        */
       public static void main(String args[])
    {
           /*
            * Set the Nimbus look and feel
            */
           //
           /*
            * If Nimbus (introduced in Java SE 6) is not available, stay with the
            * default look and feel. For details see
            * http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html
            */
           try {
               for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
                   if ("Nimbus".equals(info.getName())) {
                       javax.swing.UIManager.setLookAndFeel(info.getClassName());
                       break;
                   }
               }
           } catch (ClassNotFoundException | InstantiationException | IllegalAccessException | javax.swing.UnsupportedLookAndFeelException ex) {
               java.util.logging.Logger.getLogger(NumberAdditionUI.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
           }
           //

           /*
            * Create and display the form
            */
           java.awt.EventQueue.invokeLater(new Runnable() {

               @Override
               public void run() {
                   new NumberAdditionUI().setVisible(true);
               }
           });
       }
       // Variables declaration - do not modify
       private javax.swing.JFileChooser db;
       private javax.swing.JButton jButton1;
       private javax.swing.JButton jButton2;
       private javax.swing.JButton jButton3;
       private javax.swing.JLabel jLabel1;
       private javax.swing.JProgressBar jProgressBar1;
       private javax.swing.JScrollPane jScrollPane1;
       private javax.swing.JTextArea jTextArea1;
       private javax.swing.JTextField jTextField1;
       // End of variables declaration
    }