Recherche avancée

Médias (91)

Autres articles (68)

  • Personnaliser en ajoutant son logo, sa bannière ou son image de fond

    5 septembre 2013, par

    Certains thèmes prennent en compte trois éléments de personnalisation : l’ajout d’un logo ; l’ajout d’une bannière l’ajout d’une image de fond ;

  • Ecrire une actualité

    21 juin 2013, par

    Présentez les changements dans votre MédiaSPIP ou les actualités de vos projets sur votre MédiaSPIP grâce à la rubrique actualités.
    Dans le thème par défaut spipeo de MédiaSPIP, les actualités sont affichées en bas de la page principale sous les éditoriaux.
    Vous pouvez personnaliser le formulaire de création d’une actualité.
    Formulaire de création d’une actualité Dans le cas d’un document de type actualité, les champs proposés par défaut sont : Date de publication ( personnaliser la date de publication ) (...)

  • Le profil des utilisateurs

    12 avril 2011, par

    Chaque utilisateur dispose d’une page de profil lui permettant de modifier ses informations personnelle. Dans le menu de haut de page par défaut, un élément de menu est automatiquement créé à l’initialisation de MediaSPIP, visible uniquement si le visiteur est identifié sur le site.
    L’utilisateur a accès à la modification de profil depuis sa page auteur, un lien dans la navigation "Modifier votre profil" est (...)

Sur d’autres sites (6920)

  • Ffmpeg - Convert Wav to OGG on Android (wrong metadata on some devices)

    13 décembre 2016, par Pepa Zapletal

    I have in the app Wav file and I want to convert it to the OGG format.

    I’m using ffmpeg library for it and this command :

    ffmpeg -i /storage/emulated/0/Test.wav -c:a libvorbis -q:a 5 /storage/emulated/0/Test.ogg

    But I have problem play correctly the generated OGG file on some Android devices. If I open this file in standard MediaPlayer then I get the wrong file duration, seeking is also not working very well BUT the file is played whole and correctly. This happens for example on Huawei M2 with Android 5.1 but on Samsung Galaxy S5 (with Android 5.1) the generated file is OK and playing is also OK.

    Do you have some idea where can be a problem ?

    Full output from ffmpeg :

    ffmpeg version n2.6.2 Copyright (c) 2000-2015 the FFmpeg developers
    built with gcc 4.9 (GCC) 20140827 (prerelease)
     configuration: --target-os=linux --cross-prefix=/home/chrono/ffmpeg-android/toolchain-android/bin/arm-linux-androideabi- --arch=arm --enable-runtime-cpudetect --sysroot=/home/chrono/ffmpeg-android/toolchain-android/sysroot --enable-pic --enable-libx264 --enable-libass --enable-libfreetype --enable-libfribidi --enable-libmp3lame --enable-libopus --enable-libvorbis --enable-libvpx --enable-libtheora --enable-libfdk-aac --enable-nonfree --enable-fontconfig --enable-pthreads --disable-debug --disable-ffserver --enable-version3 --enable-hardcoded-tables --disable-ffplay --disable-ffprobe --enable-gpl --enable-yasm --disable-doc --disable-shared --enable-static --pkg-config=/home/chrono/ffmpeg-android/ffmpeg-pkg-config --prefix=/home/chrono/ffmpeg-android/build/armeabi-v7a --extra-cflags='-I/home/chrono/ffmpeg-android/toolchain-android/include -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 -fno-strict-overflow -fstack-protector-all -march=armv7-a -mfpu=vfpv3-d16 -mfloat-abi=softfp' --extra-ldflags='-L/home/chrono/ffmpeg-android/toolchain-android/lib -Wl,-z,relro -Wl,-z,now -pie -Wl,--fix-cortex-a8' --extra-libs='-lpng -lexpat -lm' --extra-cxxflags=
     libavutil      54. 20.100 / 54. 20.100
     libavcodec     56. 26.100 / 56. 26.100
     libavformat    56. 25.101 / 56. 25.101
     libavdevice    56.  4.100 / 56.  4.100
     libavfilter     5. 11.102 /  5. 11.102
     libswscale      3.  1.101 /  3.  1.101
     libswresample   1.  1.100 /  1.  1.100
     libpostproc    53.  3.100 / 53.  3.100
    Guessed Channel Layout for  Input Stream #0.0 : stereo
    Input #0, wav, from '/storage/emulated/0/IAMDJ/MyLoops/mix folder/Test.wav':
      Metadata:
        encoder         : Lavf56.25.101
      Duration: 00:00:16.01, bitrate: 1411 kb/s
        Stream #0:0: Audio: pcm_s16le ([1][0][0][0] / 0x0001), 44100 Hz, 2 channels, s16, 1411 kb/s
    Output #0, ogg, to '/storage/emulated/0/Test.ogg':
      Metadata:
        encoder         : Lavf56.25.101
        Stream #0:0: Audio: vorbis (libvorbis), 44100 Hz, stereo, fltp
     Metadata:
         encoder         : Lavc56.26.100 libvorbis
    Stream mapping:
    Stream #0:0 -> #0:0 (pcm_s16le (native) -> vorbis (libvorbis))
    Press [q] to stop, [?] for help
    size=       4kB time=00:00:01.00 bitrate=  35.0kbits/s    
    size=      27kB time=00:00:02.01 bitrate= 107.8kbits/s    
    size=      48kB time=00:00:03.04 bitrate= 129.3kbits/s    
    size=      70kB time=00:00:04.06 bitrate= 140.3kbits/s    
    size=      91kB time=00:00:05.14 bitrate= 144.9kbits/s    
    size=     113kB time=00:00:06.15 bitrate= 149.7kbits/s    
    video:0kB audio:344kB subtitle:0kB other streams:0kB global headers:4kB muxing overhead: 1.994279%

    Edit : here is the result file : Test.ogg

    Edit 2 : Maybe there can be a problem with standard MediaPlayer but another Ogg file is played correctly.

  • fail continuous transfer video file into buffer

    9 décembre 2016, par chintitomasud

    here I want to process a video file transcoding on demand by using ffmpeg but I failed. without ffmpeg all code runs properly. but using ffmpeg I face some problem. it shows this message :

    Spawning new process /samiul113039/1080.mp4:GET
    piping ffmpeg output to client, pid 10016
    HTTP connection disrupted, killing ffmpeg : 10016
    Spawning new process /samiul113039/1080.mp4:GET
    piping ffmpeg output to client, pid 4796
    HTTP connection disrupted, killing ffmpeg : 4796
    ffmpeg didn’t quit on q, sending signals
    ffmpeg has exited : 10016, code null
    ffmpeg didn’t quit on q, sending signals
    ffmpeg has exited : 4796, code nul
    
    var fs=require('fs');

    var url=require("url");
    var urlvalue="http://csestudents.uiu.ac.bd/samiul113039/1080.mp4";


    var parseurl=url.parse(urlvalue);

    var HDHomeRunIP = parseurl.hostname;
    var HDHomeRunPort = parseurl.port;
    var childKillTimeoutMs = 1000;

    var parseArgs = require('minimist')(process.argv.slice(2));

    // define startsWith for string
    if (typeof String.prototype.startsWith != 'function') {
     // see below for better implementation!
     String.prototype.startsWith = function (str){
       return this.indexOf(str) == 0;
     };
    }
    // Called when the response object fires the 'close' handler, kills ffmpeg
    function responseCloseHandler(command) {
     if (command.exited != true) {
       console.log('HTTP connection disrupted, killing ffmpeg: ' + command.pid);
       // Send a 'q' which signals ffmpeg to quit.
       // Then wait half a second, send a nice signal, wait another half second
       // and send SIGKILL
       command.stdin.write('q\n');
       command.stdin.destroy();
       // install timeout and wait
       setTimeout(function() {
         if (command.exited != true) {
           console.log('ffmpeg didn\'t quit on q, sending signals');
           // still connected, do safe sig kills
           command.kill();
           try {
             command.kill('SIGQUIT');
           } catch (err) {}
           try {
             command.kill('SIGINT');
           } catch (err) {}
           // wait some more!
           setTimeout(function() {
             if (command.exited != true) {
               console.log('ffmpeg didn\'t quit on signals, sending SIGKILL');
               // at this point, just give up and whack it
               try {
                 command.kill('SIGKILL');
               } catch (err) {}
             }
           }, childKillTimeoutMs);
         }    
       }, childKillTimeoutMs);
     }
    }

    // Performs a proxy. Copies data from proxy_request into response
    function doProxy(request,response,http,options) {
     var proxy_request = http.request(options, function (proxy_response) {
       proxy_response.on('data', function(chunk) {
         response.write(chunk, 'binary');
       });
       proxy_response.on('end', function() {
         response.end();
       });
       response.writeHead(proxy_response.statusCode, proxy_response.headers);
     });
     request.on('data', function(chunk) {
       proxy_request.write(chunk, 'binary');
     });
     // error handler
     proxy_request.on('error', function(e) {
       console.log('problem with request: ' + e.message);
       response.writeHeader(500);
       response.end();
     });

     proxy_request.end();
    }

    var child_process = require('child_process');
    var auth = require('./auth');
    // Performs the transcoding after the URL is validated
    function doTranscode(request,response) {
     //res.setHeader("Accept-Ranges", "bytes");
     response.setHeader("Accept-Ranges", "bytes");
     response.setHeader("Content-Type", "video/mp4");        
     response.setHeader("Connection","close");
     response.setHeader("Cache-Control","no-cache");
     response.setHeader("Pragma","no-cache");

     // always write the header
     response.writeHeader(200);

     // if get, spawn command stream it
     if (request.method == 'GET') {
       console.log('Spawning new process ' + request.url + ":" + request.method);

    var command = child_process.spawn('ffmpeg',
                                         ['-i','http://csestudents.uiu.ac.bd/samiul113039/1080.mp4','-f','mpegts','-'],
                                         { stdio: ['pipe','pipe','ignore'] });

        command.exited = false;
       // handler for when ffmpeg dies unexpectedly
       command.on('exit',function(code,signal) {
         console.log('ffmpeg has exited: ' + command.pid + ", code " + code);
         // set flag saying we've quit
         command.exited = true;
         response.end();
       });
       command.on('error',function(error) {
         console.log('ffmpeg error handler - unable to kill: ' + command.pid);
         // on well, might as well give up
         command.exited = true;
         try {
           command.stdin.close();
         } catch (err) {}
         try {
           command.stdout.close();
         } catch (err) {}
         try {
           command.stderr.close();
         } catch (err) {}
         response.end();
       });
       // handler for when client closes the URL connection - stop ffmpeg
       response.on('end',function() {
        responseCloseHandler(command);
       });
       // handler for when client closes the URL connection - stop ffmpeg
       response.on('close',function() {
         responseCloseHandler(command);
       });

       // now stream
       console.log('piping ffmpeg output to client, pid ' + command.pid);
       command.stdout.pipe(response);
       command.stdin.on('error',function(err) {
         console.log("Weird error in stdin pipe ", err);
         response.end();
       });
       command.stdout.on('error',function(err) {
         console.log("Weird error in stdout pipe ",err);
         response.end();
       });
     }
     else {
       // not GET, so close response
       response.end();
     }
    }

    // Load the http module to create an http server.
    var http = require('http');

    // Configure our HTTP server to respond with Hello World to all requests.
    var server = http.createServer(function (request, response) {
     //console.log("New connection from " + request.socket.remoteAddress + ":" + request.url);

     if (auth.validate(request,response)) {
       // first send a HEAD request to our HD Home Run with the same url to see if the address is valid.
       // This prevents an ffmpeg instance to spawn when clients request invalid things - like robots.txt/etc
       var options = {method: 'HEAD', hostname: HDHomeRunIP, port: HDHomeRunPort, path: request.url};
       var req = http.request(options, function(res) {
         // if they do a get, and it returns good status
         if (request.method == "GET" &&
             res.statusCode == 200 &&
             res.headers["content-type"] != null &&
             res.headers["content-type"].startsWith("video")) {
           // transcode is possible, start it now!
           doTranscode(request,response);
         }
         else {
           // no video or error, cannot transcode, just forward the response from the HD Home run to the client
           if (request.method == "HEAD") {
             response.writeHead(res.statusCode,res.headers);
             response.end();
           }
           else {
             // do a 301 redirect and have the device response directly  

             // just proxy it, that way browser doesn't redirect to HDHomeRun IP but keeps the node.js server IP
             options = {method: request.method, hostname: HDHomeRunIP, /* port: HDHomeRunPort, */path: request.url};
             doProxy(request,response,http,options);
           }
         }
       });
       req.on('error', function(e) {
         console.log('problem with request: ' + e.message);
         response.writeHeader(500);
         response.end();
       });
       // finish the client request, rest of processing done in the async callbacks
       req.end();
     }
    });

    // turn on no delay for tcp
    server.on('connection', function (socket) {
     socket.setNoDelay(true);
    });
    server.listen(7000);
  • ffmpeg - Concat multi mp4 files with audio file not working

    29 mars 2017, par Thanh Dao

    I follow this thread to concat multi mp4 files with audio file.
    But its not success. Have a lots error notifications had been displayed. I dont know how to fix it.
    Below is my command :

    "ffmpeg" -f concat -safe 0 \
    -i /path/to/text.txt \
    -i /path/to/audio.mp3 -vsync vfr -vf scale="640:640" -pix_fmt yuv420p \
    /path/to/output.mp4 2>&1

    The detail contents of text.txt

    file '/path/to/file1.mp4'
    file '/path/to/file2.mp4'
    file '/path/to/file3.mp4'
    file '/path/to/file4.mp4'
    file '/path/to/file5.mp4'
    file '/path/to/file6.mp4'
    file '/path/to/file7.mp4'
    file '/path/to/file8.mp4'
    file '/path/to/file9.mp4'
    file '/path/to/file10.mp4'
    file '/path/to/file11.mp4'
    file '/path/to/file12.mp4'
    file '/path/to/file13.mp4'
    file '/path/to/file14.mp4'
    file '/path/to/file15.mp4'
    file '/path/to/file16.mp4'
    file '/path/to/file17.mp4'
    file '/path/to/file18.mp4'

    And some lines of output errors :

    [concat @ 0x357e620] DTS 192000 < 229888 out of order
    [h264 @ 0x36920e0] top block unavailable for requested intra mode -1
    [h264 @ 0x36920e0] error while decoding MB 32 0
    [h264 @ 0x36920e0] concealing 2025 DC, 2025 AC, 2025 MV errors in I frame
    [h264 @ 0x36b7a80] concealing 1449 DC, 1449 AC, 1449 MV errors in P frame
    [h264 @ 0x36ff440] corrupted macroblock 26 1 (total_coeff=-1)
    [h264 @ 0x36ff440] error while decoding MB 26 1
    [h264 @ 0x36ff440] concealing 2003 DC, 2003 AC, 2003 MV errors in P frame
    [h264 @ 0x371af40] concealing 1456 DC, 1456 AC, 1456 MV errors in P frame
    [h264 @ 0x3736a40] ref 5 overflow
    [h264 @ 0x3736a40] error while decoding MB 1 1
    [h264 @ 0x3736a40] concealing 2025 DC, 2025 AC, 2025 MV errors in P frame
    [h264 @ 0x3752520] concealing 1449 DC, 1449 AC, 1449 MV errors in P frame
    [h264 @ 0x376dfa0] P sub_mb_type 8 out of range at 2 1
    [h264 @ 0x376dfa0] error while decoding MB 2 1
    [h264 @ 0x376dfa0] concealing 2025 DC, 2025 AC, 2025 MV errors in P frame
    [h264 @ 0x37a55a0] ref 6 overflow
    [h264 @ 0x37a55a0] error while decoding MB 3 1
    [h264 @ 0x37a55a0] concealing 2025 DC, 2025 AC, 2025 MV errors in P frame
    [h264 @ 0x3789aa0] concealing 1449 DC, 1449 AC, 1449 MV errors in P frame
    [h264 @ 0x36b7a80] ref 5 overflow
    [h264 @ 0x36b7a80] error while decoding MB 4 1
    [h264 @ 0x36b7a80] concealing 2025 DC, 2025 AC, 2025 MV errors in P frame
    [h264 @ 0x36920e0] concealing 1449 DC, 1449 AC, 1449 MV errors in P frame