Recherche avancée

Médias (1)

Mot : - Tags -/lev manovitch

Autres articles (97)

  • Les tâches Cron régulières de la ferme

    1er décembre 2010, par

    La gestion de la ferme passe par l’exécution à intervalle régulier de plusieurs tâches répétitives dites Cron.
    Le super Cron (gestion_mutu_super_cron)
    Cette tâche, planifiée chaque minute, a pour simple effet d’appeler le Cron de l’ensemble des instances de la mutualisation régulièrement. Couplée avec un Cron système sur le site central de la mutualisation, cela permet de simplement générer des visites régulières sur les différents sites et éviter que les tâches des sites peu visités soient trop (...)

  • 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 (...)

  • 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 (...)

Sur d’autres sites (12143)

  • Using ffmpeg to convert voice recording captured by HTML5

    8 juillet 2014, par user3789242

    I’m building an HTML5 voice recording software with visualizer.I want the user when recording the voice, and after uploading the file as wave in a blob (server-side), the user should be able to select the audio format of that file using ffmpeg. what I Have achieved so far is uploading the file as wave.what I still want to do is :

    • On the server
    • side pick your preferable web programming framework
    • The web programming framework accepts the upload and stores the file on the server
    • The web programming framework runs a ffmpeg (command line) which processes the file
    • The user can download the processed file

    here is my code so far :

    // variables
    var leftchannel = [];
    var rightchannel = [];
    var recorder = null;
    var recording = false;
    var recordingLength = 0;
    var volume = null;
    var audioInput = null;
    var sampleRate = 44100;
    var audioContext = null;
    var context = null;
    var outputString;



    if (!navigator.getUserMedia)
       navigator.getUserMedia = navigator.getUserMedia ||
       navigator.webkitGetUserMedia ||
       navigator.mozGetUserMedia ||
       navigator.msGetUserMedia;

    if (navigator.getUserMedia) {
       navigator.getUserMedia({
           audio: true
       }, success, function (e) {
           alert('Error capturing audio.');
       });
    } else alert('getUserMedia not supported in this browser.');



    function getVal(value) {

       // if R is pressed, we start recording
       if (value == "record") {
           recording = true;
           // reset the buffers for the new recording
           leftchannel.length = rightchannel.length = 0;
           recordingLength = 0;
           document.getElementById('output').innerHTML = "Recording now...";

           // if S is pressed, we stop the recording and package the WAV file
       } else if (value == "stop") {

           // we stop recording
           recording = false;
           document.getElementById('output').innerHTML = "Building wav file...";

           // we flat the left and right channels down
           var leftBuffer = mergeBuffers(leftchannel, recordingLength);
           var rightBuffer = mergeBuffers(rightchannel, recordingLength);
           // we interleave both channels together
           var interleaved = interleave(leftBuffer, rightBuffer);



           var buffer = new ArrayBuffer(44 + interleaved.length * 2);
           var view = new DataView(buffer);

           // RIFF chunk descriptor
           writeUTFBytes(view, 0, 'RIFF');
           view.setUint32(4, 44 + interleaved.length * 2, true);
           writeUTFBytes(view, 8, 'WAVE');
           // FMT sub-chunk
           writeUTFBytes(view, 12, 'fmt ');
           view.setUint32(16, 16, true);
           view.setUint16(20, 1, true);
           // stereo (2 channels)
           view.setUint16(22, 2, true);
           view.setUint32(24, sampleRate, true);
           view.setUint32(28, sampleRate * 4, true);
           view.setUint16(32, 4, true);
           view.setUint16(34, 16, true);
           // data sub-chunk
           writeUTFBytes(view, 36, 'data');
           view.setUint32(40, interleaved.length * 2, true);


           var lng = interleaved.length;
           var index = 44;
           var volume = 1;
           for (var i = 0; i < lng; i++) {
               view.setInt16(index, interleaved[i] * (0x7FFF * volume), true);
               index += 2;
           }

           var blob = new Blob([view], {
               type: 'audio/wav'
           });

           // let's save it locally

           document.getElementById('output').innerHTML = 'Handing off the file now...';
           var url = (window.URL || window.webkitURL).createObjectURL(blob);

           var li = document.createElement('li');
           var au = document.createElement('audio');
           var hf = document.createElement('a');

           au.controls = true;
           au.src = url;
           hf.href = url;
           hf.download = 'audio_recording_' + new Date().getTime() + '.wav';
           hf.innerHTML = hf.download;
           li.appendChild(au);
           li.appendChild(hf);
           recordingList.appendChild(li);

       }
    }


    function success(e) {

       audioContext = window.AudioContext || window.webkitAudioContext;
       context = new audioContext();


       volume = context.createGain();

       // creates an audio node from the microphone incoming stream(source)
       source = context.createMediaStreamSource(e);

       // connect the stream(source) to the gain node
       source.connect(volume);

       var bufferSize = 2048;

       recorder = context.createScriptProcessor(bufferSize, 2, 2);

       //node for the visualizer
       analyser = context.createAnalyser();
       analyser.smoothingTimeConstant = 0.3;
       analyser.fftSize = 512;

       splitter = context.createChannelSplitter();
       //when recording happens
       recorder.onaudioprocess = function (e) {

           if (!recording) return;
           var left = e.inputBuffer.getChannelData(0);
           var right = e.inputBuffer.getChannelData(1);

           leftchannel.push(new Float32Array(left));
           rightchannel.push(new Float32Array(right));
           recordingLength += bufferSize;

           // get the average for the first channel
           var array = new Uint8Array(analyser.frequencyBinCount);
           analyser.getByteFrequencyData(array);

           var c = document.getElementById("myCanvas");
           var ctx = c.getContext("2d");
           // clear the current state
           ctx.clearRect(0, 0, 1000, 325);
           var gradient = ctx.createLinearGradient(0, 0, 0, 300);
           gradient.addColorStop(1, '#000000');
           gradient.addColorStop(0.75, '#ff0000');
           gradient.addColorStop(0.25, '#ffff00');
           gradient.addColorStop(0, '#ffffff');
           // set the fill style
           ctx.fillStyle = gradient;
           drawSpectrum(array);

           function drawSpectrum(array) {
               for (var i = 0; i < (array.length); i++) {
                   var value = array[i];
                   ctx.fillRect(i * 5, 325 - value, 3, 325);
               }

           }
       }

       function getAverageVolume(array) {
           var values = 0;
           var average;

           var length = array.length;

           // get all the frequency amplitudes
           for (var i = 0; i < length; i++) {
               values += array[i];
           }

           average = values / length;
           return average;
       }

       // we connect the recorder(node to destination(speakers))
       volume.connect(splitter);
       splitter.connect(analyser, 0, 0);

       analyser.connect(recorder);
       recorder.connect(context.destination);

    }




    function mergeBuffers(channelBuffer, recordingLength) {
       var result = new Float32Array(recordingLength);
       var offset = 0;
       var lng = channelBuffer.length;
       for (var i = 0; i < lng; i++) {
           var buffer = channelBuffer[i];
           result.set(buffer, offset);
           offset += buffer.length;
       }
       return result;
    }

    function interleave(leftChannel, rightChannel) {
       var length = leftChannel.length + rightChannel.length;
       var result = new Float32Array(length);

       var inputIndex = 0;

       for (var index = 0; index < length;) {
           result[index++] = leftChannel[inputIndex];
           result[index++] = rightChannel[inputIndex];
           inputIndex++;
       }
       return result;
    }


    function writeUTFBytes(view, offset, string) {
       var lng = string.length;
       for (var i = 0; i < lng; i++) {

           view.setUint8(offset + i, string.charCodeAt(i));
       }
    }
  • VLC command line : RTSP to mp4 file (video + audio)

    8 février 2016, par Dmitriy Gerashenko

    Win 7 x64.

    When I watch this link in VLC player all is fine :

    rtsp ://184.72.239.149/vod/mp4:BigBuckBunny_175k.mov

    When I try to capture link to file and to display :

    • There is video without sound on display.
    • Created file is not playable.

    Command :

    vlc.exe -vvv "rtsp://184.72.239.149/vod/mp4:BigBuckBunny_175k.mov" --sout="#transcode{venc=ffmpeg,vcodec=mp4v,vfilter=canvas{width=800,height=600},aenc=ffmpeg{strict=-2},acodec=mp4a}:duplicate{dst=display,dst=standard{access=file,mux=mp4,dst=video.mp4}"

    There are some errors in log, for example : MPEG4GenericRTPSource Warning: Unknown or unsupported "mode": AAC-hbr. Is it cause of my problems ? How to solve my issue ?

    Complete log (from VLCJ) :

    cd C:\Users\gda\Documents\NetBeansProjects\Video; "JAVA_HOME=C:\\Program Files (x86)\\Java\\jdk1.8.0_71" cmd /c "\"\"C:\\Users\\gda\\AppData\\Roaming\\NetBeans\\8.0.2\\maven\\bin\\mvn.bat\" -Dexec.args=\"-classpath %classpath ru.cherezweb.app.video.Video\" -Dexec.executable=\"C:\\Program Files (x86)\\Java\\jdk1.8.0_71\\bin\\java.exe\" -Dmaven.ext.class.path=C:\\Users\\gda\\AppData\\Roaming\\NetBeans\\8.0.2\\maven-nblib\\netbeans-eventspy.jar -Dfile.encoding=UTF-8 process-classes org.codehaus.mojo:exec-maven-plugin:1.2.1:exec\""
    Scanning for projects...

    ------------------------------------------------------------------------
    Building Video 1.0-SNAPSHOT
    ------------------------------------------------------------------------

    --- maven-resources-plugin:2.5:resources (default-resources) @ Video ---
    [debug] execute contextualize
    Using 'UTF-8' encoding to copy filtered resources.
    skip non existing resourceDirectory C:\Users\gda\Documents\NetBeansProjects\Video\src\main\resources

    --- maven-compiler-plugin:2.3.2:compile (default-compile) @ Video ---
    Nothing to compile - all classes are up to date

    --- exec-maven-plugin:1.2.1:exec (default-cli) @ Video ---
    20:37:29.097 [main] INFO  uk.co.caprica.vlcj.Info - vlcj: 3.10.1
    20:37:29.101 [main] INFO  uk.co.caprica.vlcj.Info - java: 1.8.0_71 Oracle Corporation
    20:37:29.101 [main] INFO  uk.co.caprica.vlcj.Info - java home: C:\Program Files (x86)\Java\jdk1.8.0_71\jre
    20:37:29.101 [main] INFO  uk.co.caprica.vlcj.Info - os: Windows 10 10.0 x86
    20:37:29.103 [main] DEBUG u.c.c.vlcj.discovery.NativeDiscovery - discover()
    20:37:29.103 [main] DEBUG u.c.c.vlcj.discovery.NativeDiscovery - jnaLibraryPath=null
    20:37:29.103 [main] DEBUG u.c.c.vlcj.discovery.NativeDiscovery - discoveryStrategy=uk.co.caprica.vlcj.discovery.linux.DefaultLinuxNativeDiscoveryStrategy@176c05c
    20:37:29.104 [main] DEBUG u.c.c.vlcj.discovery.NativeDiscovery - supported=false
    20:37:29.104 [main] DEBUG u.c.c.vlcj.discovery.NativeDiscovery - discoveryStrategy=uk.co.caprica.vlcj.discovery.windows.DefaultWindowsNativeDiscoveryStrategy@1eb6432
    20:37:29.104 [main] DEBUG u.c.c.vlcj.discovery.NativeDiscovery - supported=true
    20:37:29.104 [main] DEBUG u.c.c.v.d.AbstractNativeDiscoveryStrategy - discover()
    20:37:29.105 [main] DEBUG u.c.c.v.r.windows.WindowsRuntimeUtil - getVlcInstallDir()
    20:37:29.430 [main] DEBUG u.c.c.v.d.AbstractNativeDiscoveryStrategy - directoryNames=[C:\Program Files (x86)\VideoLAN\VLC, C:\Users\gda\Documents\NetBeansProjects\Video, C:\Program Files\Broadcom\Broadcom 802.11 Network Adapter, C:\Program Files (x86)\Intel\iCLS Client\, C:\Program Files\Intel\iCLS Client\, C:\PROGRAMDATA\ORACLE\JAVA\JAVAPATH, C:\Windows\SYSTEM32, C:\Windows, C:\Windows\SYSTEM32\WBEM, C:\Windows\SYSTEM32\WINDOWSPOWERSHELL\V1.0\, C:\PROGRAM FILES\INTEL\INTEL(R) MANAGEMENT ENGINE COMPONENTS\DAL, C:\PROGRAM FILES\INTEL\INTEL(R) MANAGEMENT ENGINE COMPONENTS\IPT, C:\PROGRAM FILES (X86)\INTEL\INTEL(R) MANAGEMENT ENGINE COMPONENTS\DAL, C:\PROGRAM FILES (X86)\INTEL\INTEL(R) MANAGEMENT ENGINE COMPONENTS\IPT, C:\Program Files\Intel\Intel(R) Management Engine Components\DAL, C:\Program Files\Intel\Intel(R) Management Engine Components\IPT, C:\Program Files (x86)\Intel\Intel(R) Management Engine Components\DAL, C:\Program Files (x86)\Intel\Intel(R) Management Engine Components\IPT, C:\Program Files\WIDCOMM\Bluetooth Software\, C:\Program Files\WIDCOMM\Bluetooth Software\syswow64, C:\Program Files\TortoiseSVN\bin, C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common, C:\Program Files\OpenVPN\bin, C:\WINDOWS\system32, C:\WINDOWS, C:\WINDOWS\System32\Wbem, C:\WINDOWS\System32\WindowsPowerShell\v1.0\, C:\Program Files\TortoiseGit\bin, C:\Program Files (x86)\Skype\Phone\]
    20:37:29.430 [main] DEBUG u.c.c.v.d.AbstractNativeDiscoveryStrategy - directoryName=C:\Program Files (x86)\VideoLAN\VLC
    20:37:29.430 [main] DEBUG u.c.c.v.d.AbstractNativeDiscoveryStrategy - Matched 'libvlc.dll' in 'C:\Program Files (x86)\VideoLAN\VLC'
    20:37:29.430 [main] DEBUG u.c.c.v.d.AbstractNativeDiscoveryStrategy - Matched 'libvlccore.dll' in 'C:\Program Files (x86)\VideoLAN\VLC'
    20:37:29.430 [main] DEBUG u.c.c.v.d.AbstractNativeDiscoveryStrategy - Matched all required files
    20:37:29.430 [main] DEBUG u.c.c.v.d.AbstractNativeDiscoveryStrategy - result=C:\Program Files (x86)\VideoLAN\VLC
    20:37:29.430 [main] DEBUG u.c.c.vlcj.discovery.NativeDiscovery - path=C:\Program Files (x86)\VideoLAN\VLC
    20:37:29.431 [main] INFO  u.c.c.vlcj.discovery.NativeDiscovery - Discovery found libvlc at 'C:\Program Files (x86)\VideoLAN\VLC'
    true
    2.2.1 Terry Pratchett (Weatherwax)
    20:37:29.490 [main] DEBUG u.c.c.vlcj.player.MediaPlayerFactory - initX=null
    20:37:29.494 [main] INFO  u.c.c.vlcj.binding.LibVlcFactory - vlc: 2.2.1 Terry Pratchett (Weatherwax), changeset 2.2.1-0-ga425c42
    20:37:29.494 [main] INFO  u.c.c.vlcj.binding.LibVlcFactory - libvlc: C:\Program Files (x86)\VideoLAN\VLC\libvlc.dll
    20:37:29.494 [main] DEBUG u.c.c.vlcj.player.MediaPlayerFactory - MediaPlayerFactory(libvlc=Proxy interface to Native Library ,libvlcArgs=[])
    20:37:29.494 [main] DEBUG u.c.c.vlcj.player.MediaPlayerFactory - jna.library.path=null
    20:37:29.494 [main] DEBUG u.c.c.vlcj.player.MediaPlayerFactory - VLC_PLUGIN_PATH=null
    20:37:29.529 [main] DEBUG u.c.c.vlcj.player.MediaPlayerFactory - instance=native@0x1195650 (uk.co.caprica.vlcj.binding.internal.libvlc_instance_t@1195650)
    20:37:29.529 [main] DEBUG u.c.c.vlcj.player.MediaPlayerFactory - equalizerAvailable=true
    20:37:29.529 [main] DEBUG u.c.c.vlcj.player.MediaPlayerFactory - createEqualizerBandFrequencies()
    20:37:29.529 [main] DEBUG u.c.c.vlcj.player.MediaPlayerFactory - numBands=10
    20:37:29.530 [main] DEBUG u.c.c.vlcj.player.MediaPlayerFactory - result=[31.25, 62.5, 125.0, 250.0, 500.0, 1000.0, 2000.0, 4000.0, 8000.0, 16000.0]
    20:37:29.530 [main] DEBUG u.c.c.vlcj.player.MediaPlayerFactory - createEqualizerPresetNames()
    20:37:29.530 [main] DEBUG u.c.c.vlcj.player.MediaPlayerFactory - numPresets=18
    20:37:29.530 [main] DEBUG u.c.c.vlcj.player.MediaPlayerFactory - result=[Flat, Classical, Club, Dance, Full bass, Full bass and treble, Full treble, Headphones, Large Hall, Live, Party, Pop, Reggae, Rock, Ska, Soft, Soft rock, Techno]
    20:37:29.530 [main] DEBUG u.c.c.vlcj.player.MediaPlayerFactory - newHeadlessMediaPlayer()
    20:37:29.538 [main] DEBUG u.c.c.vlcj.player.DefaultMediaPlayer - DefaultMediaPlayer(libvlc=Proxy interface to Native Library , instance=native@0x1195650 (uk.co.caprica.vlcj.binding.internal.libvlc_instance_t@1195650))
    20:37:29.538 [main] DEBUG u.c.c.vlcj.player.DefaultMediaPlayer - createInstance()
    20:37:29.543 [main] DEBUG u.c.c.vlcj.player.DefaultMediaPlayer - mediaPlayerInstance=native@0x16853ac4 (uk.co.caprica.vlcj.binding.internal.libvlc_media_player_t@16853ac4)
    20:37:29.544 [main] DEBUG u.c.c.vlcj.player.DefaultMediaPlayer - mediaPlayerEventManager=native@0x16878818 (uk.co.caprica.vlcj.binding.internal.libvlc_event_manager_t@16878818)
    20:37:29.544 [main] DEBUG u.c.c.vlcj.player.DefaultMediaPlayer - registerEventListener()
    20:37:29.546 [main] DEBUG u.c.c.vlcj.player.DefaultMediaPlayer - event=libvlc_MediaPlayerMediaChanged
    20:37:29.567 [main] DEBUG u.c.c.vlcj.player.DefaultMediaPlayer - result=0
    20:37:29.567 [main] DEBUG u.c.c.vlcj.player.DefaultMediaPlayer - event=libvlc_MediaPlayerNothingSpecial
    20:37:29.567 [main] DEBUG u.c.c.vlcj.player.DefaultMediaPlayer - result=0
    20:37:29.567 [main] DEBUG u.c.c.vlcj.player.DefaultMediaPlayer - event=libvlc_MediaPlayerOpening
    20:37:29.567 [main] DEBUG u.c.c.vlcj.player.DefaultMediaPlayer - result=0
    20:37:29.567 [main] DEBUG u.c.c.vlcj.player.DefaultMediaPlayer - event=libvlc_MediaPlayerBuffering
    20:37:29.567 [main] DEBUG u.c.c.vlcj.player.DefaultMediaPlayer - result=0
    20:37:29.567 [main] DEBUG u.c.c.vlcj.player.DefaultMediaPlayer - event=libvlc_MediaPlayerPlaying
    20:37:29.567 [main] DEBUG u.c.c.vlcj.player.DefaultMediaPlayer - result=0
    20:37:29.567 [main] DEBUG u.c.c.vlcj.player.DefaultMediaPlayer - event=libvlc_MediaPlayerPaused
    20:37:29.568 [main] DEBUG u.c.c.vlcj.player.DefaultMediaPlayer - result=0
    20:37:29.568 [main] DEBUG u.c.c.vlcj.player.DefaultMediaPlayer - event=libvlc_MediaPlayerStopped
    20:37:29.568 [main] DEBUG u.c.c.vlcj.player.DefaultMediaPlayer - result=0
    20:37:29.568 [main] DEBUG u.c.c.vlcj.player.DefaultMediaPlayer - event=libvlc_MediaPlayerForward
    20:37:29.568 [main] DEBUG u.c.c.vlcj.player.DefaultMediaPlayer - result=0
    20:37:29.568 [main] DEBUG u.c.c.vlcj.player.DefaultMediaPlayer - event=libvlc_MediaPlayerBackward
    20:37:29.568 [main] DEBUG u.c.c.vlcj.player.DefaultMediaPlayer - result=0
    20:37:29.568 [main] DEBUG u.c.c.vlcj.player.DefaultMediaPlayer - event=libvlc_MediaPlayerEndReached
    20:37:29.568 [main] DEBUG u.c.c.vlcj.player.DefaultMediaPlayer - result=0
    20:37:29.569 [main] DEBUG u.c.c.vlcj.player.DefaultMediaPlayer - event=libvlc_MediaPlayerEncounteredError
    20:37:29.569 [main] DEBUG u.c.c.vlcj.player.DefaultMediaPlayer - result=0
    20:37:29.569 [main] DEBUG u.c.c.vlcj.player.DefaultMediaPlayer - event=libvlc_MediaPlayerTimeChanged
    20:37:29.569 [main] DEBUG u.c.c.vlcj.player.DefaultMediaPlayer - result=0
    20:37:29.569 [main] DEBUG u.c.c.vlcj.player.DefaultMediaPlayer - event=libvlc_MediaPlayerPositionChanged
    20:37:29.569 [main] DEBUG u.c.c.vlcj.player.DefaultMediaPlayer - result=0
    20:37:29.569 [main] DEBUG u.c.c.vlcj.player.DefaultMediaPlayer - event=libvlc_MediaPlayerSeekableChanged
    20:37:29.569 [main] DEBUG u.c.c.vlcj.player.DefaultMediaPlayer - result=0
    20:37:29.569 [main] DEBUG u.c.c.vlcj.player.DefaultMediaPlayer - event=libvlc_MediaPlayerPausableChanged
    20:37:29.569 [main] DEBUG u.c.c.vlcj.player.DefaultMediaPlayer - result=0
    20:37:29.569 [main] DEBUG u.c.c.vlcj.player.DefaultMediaPlayer - event=libvlc_MediaPlayerTitleChanged
    20:37:29.569 [main] DEBUG u.c.c.vlcj.player.DefaultMediaPlayer - result=0
    20:37:29.569 [main] DEBUG u.c.c.vlcj.player.DefaultMediaPlayer - event=libvlc_MediaPlayerSnapshotTaken
    20:37:29.570 [main] DEBUG u.c.c.vlcj.player.DefaultMediaPlayer - result=0
    20:37:29.570 [main] DEBUG u.c.c.vlcj.player.DefaultMediaPlayer - event=libvlc_MediaPlayerLengthChanged
    20:37:29.570 [main] DEBUG u.c.c.vlcj.player.DefaultMediaPlayer - result=0
    20:37:29.570 [main] DEBUG u.c.c.vlcj.player.DefaultMediaPlayer - event=libvlc_MediaPlayerVout
    20:37:29.570 [main] DEBUG u.c.c.vlcj.player.DefaultMediaPlayer - result=0
    20:37:29.570 [main] DEBUG u.c.c.vlcj.player.DefaultMediaPlayer - event=libvlc_MediaPlayerScrambledChanged
    20:37:29.570 [main] DEBUG u.c.c.vlcj.player.DefaultMediaPlayer - result=0
    20:37:29.572 [main] DEBUG u.c.c.vlcj.player.DefaultMediaPlayer - playMedia(mrl=rtsp://184.72.239.149/vod/mp4:BigBuckBunny_175k.mov,mediaOptions=[:sout=#transcode{venc=ffmpeg,vcodec=mp4v,vfilter=canvas{width=800,height=600},aenc=ffmpeg{strict=-2},acodec=mp4a}:duplicate{dst=display,dst=standard{access=file,mux=mp4,dst=yahoo.m4v}}])
    20:37:29.573 [main] DEBUG u.c.c.v.player.MediaResourceLocator - encodeMrl(mrl=rtsp://184.72.239.149/vod/mp4:BigBuckBunny_175k.mov)
    20:37:29.573 [main] DEBUG u.c.c.v.player.MediaResourceLocator - MRL does not contain any Unicode characters
    20:37:29.573 [main] DEBUG u.c.c.v.player.MediaResourceLocator - result=rtsp://184.72.239.149/vod/mp4:BigBuckBunny_175k.mov
    20:37:29.574 [main] DEBUG u.c.c.vlcj.player.DefaultMediaPlayer - playMedia(media=SimpleMedia[mrl=rtsp://184.72.239.149/vod/mp4:BigBuckBunny_175k.mov,mediaOptions=[Ljava.lang.String;@17c74e5])
    20:37:29.574 [main] DEBUG u.c.c.vlcj.player.DefaultMediaPlayer - prepareMedia(media=SimpleMedia[mrl=rtsp://184.72.239.149/vod/mp4:BigBuckBunny_175k.mov,mediaOptions=[Ljava.lang.String;@17c74e5])
    20:37:29.574 [main] DEBUG u.c.c.vlcj.player.DefaultMediaPlayer - setMedia(media=SimpleMedia[mrl=rtsp://184.72.239.149/vod/mp4:BigBuckBunny_175k.mov,mediaOptions=[Ljava.lang.String;@17c74e5])
    20:37:29.574 [main] DEBUG u.c.c.vlcj.player.DefaultMediaPlayer - createMediaInstance(media=SimpleMedia[mrl=rtsp://184.72.239.149/vod/mp4:BigBuckBunny_175k.mov,mediaOptions=[Ljava.lang.String;@17c74e5])
    20:37:29.574 [main] DEBUG u.c.c.vlcj.player.DefaultMediaPlayer - Treating mrl as a location
    20:37:29.574 [main] DEBUG u.c.c.vlcj.player.DefaultMediaPlayer - mediaInstance=native@0x16876500 (uk.co.caprica.vlcj.binding.internal.libvlc_media_t@16876500)
    20:37:29.574 [main] DEBUG u.c.c.vlcj.player.DefaultMediaPlayer - mediaOption=:sout=#transcode{venc=ffmpeg,vcodec=mp4v,vfilter=canvas{width=800,height=600},aenc=ffmpeg{strict=-2},acodec=mp4a}:duplicate{dst=display,dst=standard{access=file,mux=mp4,dst=yahoo.m4v}}
    20:37:29.575 [main] DEBUG u.c.c.vlcj.player.DefaultMediaPlayer - registerMediaEventListener()
    20:37:29.575 [main] DEBUG u.c.c.vlcj.player.DefaultMediaPlayer - event=libvlc_MediaMetaChanged
    20:37:29.575 [main] DEBUG u.c.c.vlcj.player.DefaultMediaPlayer - result=0
    20:37:29.575 [main] DEBUG u.c.c.vlcj.player.DefaultMediaPlayer - event=libvlc_MediaSubItemAdded
    20:37:29.575 [main] DEBUG u.c.c.vlcj.player.DefaultMediaPlayer - result=0
    20:37:29.576 [main] DEBUG u.c.c.vlcj.player.DefaultMediaPlayer - event=libvlc_MediaDurationChanged
    20:37:29.576 [main] DEBUG u.c.c.vlcj.player.DefaultMediaPlayer - result=0
    20:37:29.576 [main] DEBUG u.c.c.vlcj.player.DefaultMediaPlayer - event=libvlc_MediaParsedChanged
    20:37:29.576 [main] DEBUG u.c.c.vlcj.player.DefaultMediaPlayer - result=0
    20:37:29.576 [main] DEBUG u.c.c.vlcj.player.DefaultMediaPlayer - event=libvlc_MediaFreed
    20:37:29.576 [main] DEBUG u.c.c.vlcj.player.DefaultMediaPlayer - result=0
    20:37:29.576 [main] DEBUG u.c.c.vlcj.player.DefaultMediaPlayer - event=libvlc_MediaStateChanged
    20:37:29.576 [main] DEBUG u.c.c.vlcj.player.DefaultMediaPlayer - result=0
    20:37:29.576 [main] DEBUG u.c.c.vlcj.player.DefaultMediaPlayer - event=libvlc_MediaSubItemTreeAdded
    20:37:29.576 [main] DEBUG u.c.c.vlcj.player.DefaultMediaPlayer - result=0
    20:37:29.585 [main] DEBUG u.c.c.vlcj.player.DefaultMediaPlayer - mrl(mediaInstance=native@0x16876500 (uk.co.caprica.vlcj.binding.internal.libvlc_media_t@16876500))
    20:37:29.587 [pool-2-thread-1] DEBUG u.c.c.vlcj.player.DefaultMediaPlayer - mediaChanged(mediaPlayer=uk.co.caprica.vlcj.player.headless.DefaultHeadlessMediaPlayer@1727f27,media=native@0x16876500 (uk.co.caprica.vlcj.binding.internal.libvlc_media_t@16876500),mrl=rtsp://184.72.239.149/vod/mp4:BigBuckBunny_175k.mov)
    20:37:29.588 [pool-2-thread-1] DEBUG u.c.c.vlcj.player.DefaultMediaPlayer - Raising event for new media
    20:37:29.588 [main] DEBUG u.c.c.vlcj.player.DefaultMediaPlayer - result=true
    20:37:29.588 [main] DEBUG u.c.c.vlcj.player.DefaultMediaPlayer - play()
    20:37:29.593 [main] DEBUG u.c.c.vlcj.player.DefaultMediaPlayer - after play
    MPEG4GenericRTPSource Warning: Unknown or unsupported "mode": AAC-hbr
    [1682c9cc] core input error: ES_OUT_RESET_PCR called
    [16f79744] core decoder error: cannot continue streaming due to errors
    [1682c9cc] core input error: ES_OUT_RESET_PCR called
    [h264 @ 1702ba80] decode_slice_header error
    [h264 @ 1702ba80] decode_slice_header error
    [16828134] stream_out_transcode stream out: input interval 41666 (base 2)
    [16828134] stream_out_transcode stream out: output interval 41666 (base 1)
  • audio convert to mp3,pcm and vox using ffmpeg

    8 juillet 2014, par user3789242

    Please can someone help me with the code for ffmpeg.
    I have to use ffmpeg to convert a recorder voice (using HTML5) into mp3,pcm or vox depending on the user’s selection.
    I don’t know how to write the code for ffmpeg if some one can help me with the code or libraries.
    Thank you in advance.

    Here is my code for recording the voice with a visualizer :

    // variables
    var leftchannel = [];
    var rightchannel = [];
    var recorder = null;
    var recording = false;
    var recordingLength = 0;
    var volume = null;
    var audioInput = null;
    var sampleRate = 44100;
    var audioContext = null;
    var context = null;
    var outputString;



    if (!navigator.getUserMedia)
      navigator.getUserMedia = navigator.getUserMedia ||
                            navigator.webkitGetUserMedia ||
                            navigator.mozGetUserMedia ||
                            navigator.msGetUserMedia;

    if (navigator.getUserMedia){
    navigator.getUserMedia({audio:true}, success, function(e) {
    alert('Error capturing audio.');
    });
    } else alert('getUserMedia not supported in this browser.');



    function getVal(value)
     {

    // if R is pressed, we start recording
    if ( value == "record"){
       recording = true;
       // reset the buffers for the new recording
       leftchannel.length = rightchannel.length = 0;
       recordingLength = 0;
       document.getElementById('output').innerHTML="Recording now...";

    // if S is pressed, we stop the recording and package the WAV file
    } else if ( value == "stop" ){

       // we stop recording
       recording = false;
       document.getElementById('output').innerHTML="Building wav file...";

       // we flat the left and right channels down
       var leftBuffer = mergeBuffers ( leftchannel, recordingLength );
       var rightBuffer = mergeBuffers ( rightchannel, recordingLength );
       // we interleave both channels together
       var interleaved = interleave ( leftBuffer, rightBuffer );



       var buffer = new ArrayBuffer(44 + interleaved.length * 2);
       var view = new DataView(buffer);

       // RIFF chunk descriptor
       writeUTFBytes(view, 0, 'RIFF');
       view.setUint32(4, 44 + interleaved.length * 2, true);
       writeUTFBytes(view, 8, 'WAVE');
       // FMT sub-chunk
       writeUTFBytes(view, 12, 'fmt ');
       view.setUint32(16, 16, true);
       view.setUint16(20, 1, true);
       // stereo (2 channels)
       view.setUint16(22, 2, true);
       view.setUint32(24, sampleRate, true);
       view.setUint32(28, sampleRate * 4, true);
       view.setUint16(32, 4, true);
       view.setUint16(34, 16, true);
       // data sub-chunk
       writeUTFBytes(view, 36, 'data');
       view.setUint32(40, interleaved.length * 2, true);


       var lng = interleaved.length;
       var index = 44;
       var volume = 1;
       for (var i = 0; i < lng; i++){
           view.setInt16(index, interleaved[i] * (0x7FFF * volume), true);
           index += 2;
       }

       var blob = new Blob ( [ view ], { type : 'audio/wav' } );

       // let's save it locally

       document.getElementById('output').innerHTML='Handing off the file now...';
       var url = (window.URL || window.webkitURL).createObjectURL(blob);

       var li = document.createElement('li');
       var au = document.createElement('audio');
       var hf = document.createElement('a');

       au.controls = true;
       au.src = url;
       hf.href = url;
       hf.download = 'audio_recording_' + new Date().getTime() + '.wav';
       hf.innerHTML = hf.download;
       li.appendChild(au);
       li.appendChild(hf);
       recordingList.appendChild(li);

    }
    }


    function success(e){

    audioContext = window.AudioContext || window.webkitAudioContext;
    context = new audioContext();


    volume = context.createGain();

    // creates an audio node from the microphone incoming stream(source)
    source = context.createMediaStreamSource(e);

    // connect the stream(source) to the gain node
    source.connect(volume);

    var bufferSize = 2048;

    recorder = context.createScriptProcessor(bufferSize, 2, 2);

    //node for the visualizer
    analyser = context.createAnalyser();
    analyser.smoothingTimeConstant = 0.3;
    analyser.fftSize = 512;

    splitter = context.createChannelSplitter();
    //when recording happens
    recorder.onaudioprocess = function(e){

       if (!recording) return;
       var left = e.inputBuffer.getChannelData (0);
       var right = e.inputBuffer.getChannelData (1);

       leftchannel.push (new Float32Array (left));
       rightchannel.push (new Float32Array (right));
       recordingLength += bufferSize;

       // get the average for the first channel
       var array =  new Uint8Array(analyser.frequencyBinCount);
       analyser.getByteFrequencyData(array);

       var c=document.getElementById("myCanvas");
       var ctx = c.getContext("2d");
       // clear the current state
       ctx.clearRect(0, 0, 1000, 325);
       var gradient = ctx.createLinearGradient(0,0,0,300);
       gradient.addColorStop(1,'#000000');
       gradient.addColorStop(0.75,'#ff0000');
       gradient.addColorStop(0.25,'#ffff00');
       gradient.addColorStop(0,'#ffffff');
       // set the fill style
       ctx.fillStyle=gradient;
       drawSpectrum(array);
       function drawSpectrum(array) {
           for ( var i = 0; i < (array.length); i++ ){
                   var value = array[i];
                   ctx.fillRect(i*5,325-value,3,325);
               }

       }
    }

    function getAverageVolume(array) {
       var values = 0;
       var average;

       var length = array.length;

       // get all the frequency amplitudes
       for (var i = 0; i < length; i++) {
           values += array[i];
       }

       average = values / length;
       return average;
    }

       // we connect the recorder(node to destination(speakers))
       volume.connect(splitter);
       splitter.connect(analyser, 0, 0);

       analyser.connect(recorder);
       recorder.connect(context.destination);

    }




    function mergeBuffers(channelBuffer, recordingLength){
    var result = new Float32Array(recordingLength);
    var offset = 0;
    var lng = channelBuffer.length;
    for (var i = 0; i < lng; i++){
    var buffer = channelBuffer[i];
    result.set(buffer, offset);
    offset += buffer.length;
    }
       return result;
      }

    function interleave(leftChannel, rightChannel){  
    var length = leftChannel.length + rightChannel.length;
    var result = new Float32Array(length);

    var inputIndex = 0;

    for (var index = 0; index < length; ){
    result[index++] = leftChannel[inputIndex];
    result[index++] = rightChannel[inputIndex];
    inputIndex++;
    }
    return result;
    }


    function writeUTFBytes(view, offset, string){
    var lng = string.length;
    for (var i = 0; i < lng; i++){

    view.setUint8(offset + i, string.charCodeAt(i));
    }
    }