Recherche avancée

Médias (0)

Mot : - Tags -/interaction

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

Autres articles (64)

  • Contribute to a better visual interface

    13 avril 2011

    MediaSPIP is based on a system of themes and templates. Templates define the placement of information on the page, and can be adapted to a wide range of uses. Themes define the overall graphic appearance of the site.
    Anyone can submit a new graphic theme or template and make it available to the MediaSPIP community.

  • Qualité du média après traitement

    21 juin 2013, par

    Le bon réglage du logiciel qui traite les média est important pour un équilibre entre les partis ( bande passante de l’hébergeur, qualité du média pour le rédacteur et le visiteur, accessibilité pour le visiteur ). Comment régler la qualité de son média ?
    Plus la qualité du média est importante, plus la bande passante sera utilisée. Le visiteur avec une connexion internet à petit débit devra attendre plus longtemps. Inversement plus, la qualité du média est pauvre et donc le média devient dégradé voire (...)

  • Qu’est ce qu’un éditorial

    21 juin 2013, par

    Ecrivez votre de point de vue dans un article. Celui-ci sera rangé dans une rubrique prévue à cet effet.
    Un éditorial est un article de type texte uniquement. Il a pour objectif de ranger les points de vue dans une rubrique dédiée. Un seul éditorial est placé à la une en page d’accueil. Pour consulter les précédents, consultez la rubrique dédiée.
    Vous pouvez personnaliser le formulaire de création d’un éditorial.
    Formulaire de création d’un éditorial Dans le cas d’un document de type éditorial, les (...)

Sur d’autres sites (8886)

  • Working on images asynchronously

    15 décembre 2013, par Mikko Koppanen — Imagick, PHP stuff

    To get my quota on buzzwords for the day we are going to look at using ZeroMQ and Imagick to create a simple asynchronous image processing system. Why asynchronous ? First of all, separating the image handling from a interactive PHP scripts allows us to scale the image processing separately from the web heads. For example we could do the image processing on separate servers, which have SSDs attached and more memory. In this example making the images available to all worker nodes is left to the reader.

    Secondly, separating the image processing from a web script can provide more responsive experience to the user. This doesn’t necessarily mean faster, but let’s say in a multiple image upload scenario this method allows the user to do something else on the site while we process the images in the background. This can be beneficial especially in cases where users upload hundreds of images at a time. To achieve a simple distributed image processing infrastructure we are going to use ZeroMQ for communicating between different components and Imagick to work on the images.

    The first part we are going to create is a simple “Worker” -process skeleton. Naturally for a live environment you would like to have more error handling and possibly use pcntl for process control, but for the sake of brewity the example is barebones :

    1. < ?php
    2.  
    3. define (’THUMBNAIL_ADDR’, ’tcp ://127.0.0.1:5000’) ;
    4. define (’COLLECTOR_ADDR’, ’tcp ://127.0.0.1:5001’) ;
    5.  
    6. class Worker {
    7.  
    8.   private $in ;
    9.   private $out ;
    10.  
    11.   public function __construct ($in_addr, $out_addr)
    12.   {
    13.     $context = new ZMQContext () ;
    14.  
    15.     $this->in = new ZMQSocket ($context, ZMQ: :SOCKET_PULL) ;
    16.     $this->in->bind ($in_addr) ;
    17.  
    18.     $this->out = new ZMQSocket ($context, ZMQ: :SOCKET_PUSH) ;
    19.     $this->out->connect ($out_addr) ;
    20.   }
    21.  
    22.   public function work () {
    23.     while ($command = $this->in->recvMulti ()) {
    24.       if (isset ($this->commands [$command [0]])) {
    25.         echo "Received work" . PHP_EOL ;
    26.  
    27.         $callback = $this->commands [$command [0]] ;
    28.  
    29.         array_shift ($command) ;
    30.         $response = call_user_func_array ($callback, $command) ;
    31.  
    32.         if (is_array ($response))
    33.           $this->out->sendMulti ($response) ;
    34.         else
    35.           $this->out->send ($response) ;
    36.       }
    37.       else {
    38.         error_log ("There is no registered worker for $command [0]") ;
    39.       }
    40.     }
    41.   }
    42.  
    43.   public function register ($command, $callback)
    44.   {
    45.     $this->commands [$command] = $callback ;
    46.   }
    47. }
    48.  ?>

    The Worker class allows us to register commands with callbacks associated with them. In our case the Worker class doesn’t actually care or know about the parameters being passed to the actual callback, it just blindly passes them on. We are using two separate sockets in this example, one for incoming work requests and one for passing the results onwards. This allows us to create a simple pipeline by adding more workers in the mix. For example we could first have a watermark worker, which takes the original image and composites a watermark on it, passes the file onwards to thumbnail worker, which then creates different sizes of thumbnails and passes the final results to event collector.

    The next part we are going to create a is a simple worker script that does the actual thumbnailing of the images :

    1. < ?php
    2. include __DIR__ . ’/common.php’ ;
    3.  
    4. // Create worker class and bind the inbound address to ’THUMBNAIL_ADDR’ and connect outbound to ’COLLECTOR_ADDR’
    5. $worker = new Worker (THUMBNAIL_ADDR, COLLECTOR_ADDR) ;
    6.  
    7. // Register our thumbnail callback, nothing special here
    8. $worker->register (’thumbnail’, function ($filename, $width, $height) {
    9.                   $info = pathinfo ($filename) ;
    10.  
    11.                   $out = sprintf ("%s/%s_%dx%d.%s",
    12.                           $info [’dirname’],
    13.                           $info [’filename’],
    14.                           $width,
    15.                           $height,
    16.                           $info [’extension’]) ;
    17.  
    18.                   $status = 1 ;
    19.                   $message = ’’ ;
    20.  
    21.                   try {
    22.                     $im = new Imagick ($filename) ;
    23.                     $im->thumbnailImage ($width, $height) ;
    24.                     $im->writeImage ($out) ;
    25.                   }
    26.                   catch (Exception $e) {
    27.                     $status = 0 ;
    28.                     $message = $e->getMessage () ;
    29.                   }
    30.  
    31.                   return array (
    32.                         ’status’  => $status,
    33.                         ’filename’ => $filename,
    34.                         ’thumbnail’ => $out,
    35.                         ’message’ => $message,
    36.                     ) ;
    37.                 }) ;
    38.  
    39. // Run the worker, will block
    40. echo "Running thumbnail worker.." . PHP_EOL ;
    41. $worker->work () ;

    As you can see from the code the thumbnail worker registers a callback for ‘thumbnail’ command. The callback does the thumbnailing based on input and returns the status, original filename and the thumbnail filename. We have connected our Workers “outbound” socket to event collector, which will receive the results from the thumbnail worker and do something with them. What the “something” is depends on you. For example you could push the response into a websocket to show immediate feeedback to the user or store the results into a database.

    Our example event collector will just do a var_dump on every event it receives from the thumbnailer :

    1. < ?php
    2. include __DIR__ . ’/common.php’ ;
    3.  
    4. $socket = new ZMQSocket (new ZMQContext (), ZMQ: :SOCKET_PULL) ;
    5. $socket->bind (COLLECTOR_ADDR) ;
    6.  
    7. echo "Waiting for events.." . PHP_EOL ;
    8. while (($message = $socket->recvMulti ())) {
    9.   var_dump ($message) ;
    10. }
    11.  ?>

    The final piece of the puzzle is the client that pumps messages into the pipeline. The client connects to the thumbnail worker, passes on filename and desired dimensions :

    1. < ?php
    2. include __DIR__ . ’/common.php’ ;
    3.  
    4. $socket = new ZMQSocket (new ZMQContext (), ZMQ: :SOCKET_PUSH) ;
    5. $socket->connect (THUMBNAIL_ADDR) ;
    6.  
    7. $socket->sendMulti (
    8.       array (
    9.         ’thumbnail’,
    10.         realpath (’./test.jpg’),
    11.         50,
    12.         50,
    13.       )
    14. ) ;
    15. echo "Sent request" . PHP_EOL ;
    16.  ?>

    After this our processing pipeline will look like this :

    simple-pipeline

    Now, if we notice that thumbnail workers or the event collectors can’t keep up with the rate of images we are pushing through we can start scaling the pipeline by adding more processes on each layer. ZeroMQ PUSH socket will automatically round-robin between all connected nodes, which makes adding more workers and event collectors simple. After adding more workers our pipeline will look like this :

    scaling-pipeline

    Using ZeroMQ also allows us to create more flexible architectures by adding forwarding devices in the middle, adding request-reply workers etc. So, the last thing to do is to run our pipeline and see the results :

    Let’s create our test image first :

    $ convert magick:rose test.jpg
    

    From the command-line run the thumbnail script :

    $ php thumbnail.php 
    Running thumbnail worker..
    

    In a separate terminal window run the event collector :

    $ php collector.php 
    Waiting for events..
    

    And finally run the client to send the thumbnail request :

    $ php client.php 
    Sent request
    $
    

    If everything went according to the plan you should now see the following output in the event collector window :

    array(4) 
      [0]=>
      string(1) "1"
      [1]=>
      string(56) "/test.jpg"
      [2]=>
      string(62) "/test_50x50.jpg"
      [3]=>
      string(0) ""
    
    

    Happy hacking !

  • No sounds on Apple devices after encoding videos [migrated]

    15 décembre 2013, par Ricardo

    I'm having a problem setting up a media server.
    Everything works just great except the sound of Apple devices, I'm not sure if that's something with "mute" on iOS or our codecs are just not compatible with iOS.

    OS :

    Ubuntu 12.04

    FFMPEG Config :

    ffmpeg version 0.10.8-7:0.10.8-1~lucid1 Copyright 2000-2013 the FFmpeg developers
     built on Sep  5 2013 19:50:14 with gcc 4.4.3
     configuration: --arch=amd64 --disable-stripping --enable-pthreads --enable-runtime-cpudetect --extra-version=&#39;7:0.10.8-1~lucid1&#39; --libdir=/usr/lib --prefix=/usr --enable-bzlib --enable-libdc1394 --enable-libfreetype --enable-frei0r --enable-gnutls --enable-libgsm --enable-libmp3lame --enable-libopenjpeg --enable-libpulse --enable-libschroedinger --enable-libspeex --enable-libtheora --enable-vdpau --enable-libvorbis --enable-libvpx --enable-zlib --enable-gpl --enable-postproc --enable-libcdio --enable-x11grab --enable-libx264 --shlibdir=/usr/lib --enable-shared --disable-static
     avcodec     configuration: --arch=amd64 --disable-stripping --enable-pthreads --enable-runtime-cpudetect --extra-version=&#39;7:0.10.8-1~lucid1&#39; --libdir=/usr/lib --prefix=/usr --enable-bzlib --enable-libdc1394 --enable-libfreetype --enable-frei0r --enable-gnutls --enable-libgsm --enable-libmp3lame --enable-libopenjpeg --enable-libpulse --enable-libschroedinger --enable-libspeex --enable-libtheora --enable-vdpau --enable-libvorbis --enable-libvpx --enable-zlib --enable-gpl --enable-postproc --enable-libcdio --enable-x11grab --enable-libx264 --shlibdir=/usr/lib --enable-shared --disable-static --enable-version3 --enable-libopencore-amrnb --enable-libopencore-amrwb
     libavutil      51. 35.100 / 51. 35.100
     libavcodec     53. 61.100 / 53. 61.100
     libavformat    53. 32.100 / 53. 32.100
     libavdevice    53.  4.100 / 53.  4.100
     libavfilter     2. 61.100 /  2. 61.100
     libswscale      2.  1.100 /  2.  1.100
     libswresample   0.  6.100 /  0.  6.100
     libpostproc    52.  0.100 / 52.  0.100
    Hyper fast Audio and Video encoder

    Codecs :

    D..... = Decoding supported
    .E.... = Encoding supported
    ..V... = Video codec
    ..A... = Audio codec
    ..S... = Subtitle codec
    ...S.. = Supports draw_horiz_band
    ....D. = Supports direct rendering method 1
    .....T = Supports weird frame truncation
    ------
    D V D  4xm             4X Movie
    D V D  8bps            QuickTime 8BPS video
    D A D  8svx_exp        8SVX exponential
    D A D  8svx_fib        8SVX fibonacci
     EV    a64multi        Multicolor charset for Commodore 64
     EV    a64multi5       Multicolor charset for Commodore 64, extended with 5th color (colram)
    DEA D  aac             Advanced Audio Coding
    D A D  aac_latm        AAC LATM (Advanced Audio Codec LATM syntax)
    D V D  aasc            Autodesk RLE
    DEA D  ac3             ATSC A/52A (AC-3)
     EA    ac3_fixed       ATSC A/52A (AC-3)
    D A D  adpcm_4xm       ADPCM 4X Movie
    DEA D  adpcm_adx       SEGA CRI ADX ADPCM
    D A D  adpcm_ct        ADPCM Creative Technology
    D A D  adpcm_ea        ADPCM Electronic Arts
    D A D  adpcm_ea_maxis_xa ADPCM Electronic Arts Maxis CDROM XA
    D A D  adpcm_ea_r1     ADPCM Electronic Arts R1
    D A D  adpcm_ea_r2     ADPCM Electronic Arts R2
    D A D  adpcm_ea_r3     ADPCM Electronic Arts R3
    D A D  adpcm_ea_xas    ADPCM Electronic Arts XAS
    D A D  adpcm_ima_amv   ADPCM IMA AMV
    D A D  adpcm_ima_apc   ADPCM IMA CRYO APC
    D A D  adpcm_ima_dk3   ADPCM IMA Duck DK3
    D A D  adpcm_ima_dk4   ADPCM IMA Duck DK4
    D A D  adpcm_ima_ea_eacs ADPCM IMA Electronic Arts EACS
    D A D  adpcm_ima_ea_sead ADPCM IMA Electronic Arts SEAD
    D A D  adpcm_ima_iss   ADPCM IMA Funcom ISS
    DEA D  adpcm_ima_qt    ADPCM IMA QuickTime
    D A D  adpcm_ima_smjpeg ADPCM IMA Loki SDL MJPEG
    DEA D  adpcm_ima_wav   ADPCM IMA WAV
    D A D  adpcm_ima_ws    ADPCM IMA Westwood
    DEA D  adpcm_ms        ADPCM Microsoft
    D A D  adpcm_sbpro_2   ADPCM Sound Blaster Pro 2-bit
    D A D  adpcm_sbpro_3   ADPCM Sound Blaster Pro 2.6-bit
    D A D  adpcm_sbpro_4   ADPCM Sound Blaster Pro 4-bit
    DEA D  adpcm_swf       ADPCM Shockwave Flash
    D A D  adpcm_thp       ADPCM Nintendo Gamecube THP
    D A D  adpcm_xa        ADPCM CDROM XA
    DEA D  adpcm_yamaha    ADPCM Yamaha
    DEA D  alac            ALAC (Apple Lossless Audio Codec)
    D A D  als             MPEG-4 Audio Lossless Coding (ALS)
    D A D  amrnb           Adaptive Multi-Rate NarrowBand
    D A D  amrwb           Adaptive Multi-Rate WideBand
    DEV    amv             AMV Video
    D V D  anm             Deluxe Paint Animation
    D V D  ansi            ASCII/ANSI art
    D A D  ape             Monkey&#39;s Audio
    DES    ass             Advanced SubStation Alpha subtitle
    DEV D  asv1            ASUS V1
    DEV D  asv2            ASUS V2
    D A D  atrac1          Atrac 1 (Adaptive TRansform Acoustic Coding)
    D A D  atrac3          Atrac 3 (Adaptive TRansform Acoustic Coding 3)
    D V D  aura            Auravision AURA
    D V D  aura2           Auravision Aura 2
    DEV D  avrp            Avid 1:1 10-bit RGB Packer
    D V D  avs             AVS (Audio Video Standard) video
    D V D  bethsoftvid     Bethesda VID video
    D V D  bfi             Brute Force &amp; Ignorance
    D A D  binkaudio_dct   Bink Audio (DCT)
    D A D  binkaudio_rdft  Bink Audio (RDFT)
    D V    binkvideo       Bink video
    D V D  bintext         Binary text
    DEV D  bmp             BMP image
    D A D  bmv_audio       Discworld II BMV audio
    D V    bmv_video       Discworld II BMV video
    D V D  c93             Interplay C93
    D V D  camstudio       CamStudio
    D V D  camtasia        TechSmith Screen Capture Codec
    D V D  cavs            Chinese AVS video (AVS1-P2, JiZhun profile)
    D V D  cdgraphics      CD Graphics video
    D V D  cinepak         Cinepak
    DEV D  cljr            Cirrus Logic AccuPak
    D A D  cook            COOK
    D V D  cyuv            Creative YUV (CYUV)
    DEA D  dca             DCA (DTS Coherent Acoustics)
    D V D  dfa             Chronomaster DFA
    D V    dirac           BBC Dirac VC-2
    DEV D  dnxhd           VC3/DNxHD
    DEV    dpx             DPX image
    D A D  dsicinaudio     Delphine Software International CIN audio
    D V D  dsicinvideo     Delphine Software International CIN video
    DES    dvbsub          DVB subtitles
    DES    dvdsub          DVD subtitles
    DEV D  dvvideo         DV (Digital Video)
    D V D  dxa             Feeble Files/ScummVM DXA
    D V D  dxtory          Dxtory
    DEA D  eac3            ATSC A/52 E-AC-3
    D V D  eacmv           Electronic Arts CMV video
    D V D  eamad           Electronic Arts Madcow Video
    D V D  eatgq           Electronic Arts TGQ video
    D V    eatgv           Electronic Arts TGV video
    D V D  eatqi           Electronic Arts TQI Video
    D V D  escape124       Escape 124
    D V D  escape130       Escape 130
    DEV D  ffv1            FFmpeg video codec #1
    DEVSD  ffvhuff         Huffyuv FFmpeg variant
    DEA D  flac            FLAC (Free Lossless Audio Codec)
    DEV D  flashsv         Flash Screen Video
    DEV D  flashsv2        Flash Screen Video Version 2
    D V D  flic            Autodesk Animator Flic video
    DEVSD  flv             Flash Video (FLV) / Sorenson Spark / Sorenson H.263
    D V D  fraps           Fraps
    D V D  frwu            Forward Uncompressed
    DEA D  g722            G.722 ADPCM
    DEA    g723_1          G.723.1
    DEA D  g726            G.726 ADPCM
    D A D  g729            G.729
    DEV D  gif             GIF (Graphics Interchange Format)
    D A D  gsm             GSM
    D A D  gsm_ms          GSM Microsoft variant
    DEV D  h261            H.261
    DEVSDT h263            H.263 / H.263-1996
    D VSD  h263i           Intel H.263
     EV    h263p           H.263+ / H.263-1998 / H.263 version 2
    D V D  h264            H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10
    D V D  h264_vdpau      H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10 (VDPAU acceleration)
    DEVSD  huffyuv         Huffyuv / HuffYUV
    D V D  idcinvideo      id Quake II CIN video
    D V D  idf             iCEDraw text
    D V D  iff_byterun1    IFF ByteRun1
    D V D  iff_ilbm        IFF ILBM
    D A D  imc             IMC (Intel Music Coder)
    D V D  indeo2          Intel Indeo 2
    D V    indeo3          Intel Indeo 3
    D V    indeo4          Intel Indeo Video Interactive 4
    D V    indeo5          Intel Indeo Video Interactive 5
    D A D  interplay_dpcm  DPCM Interplay
    D V D  interplayvideo  Interplay MVE video
    DEV    j2k             JPEG 2000
    DEV D  jpegls          JPEG-LS
    D V D  jv              Bitmap Brothers JV video
    D V    kgv1            Kega Game Video
    D V D  kmvc            Karl Morton&#39;s video codec
    D V D  lagarith        Lagarith lossless
    DEA D  libgsm          libgsm GSM
    DEA D  libgsm_ms       libgsm GSM Microsoft variant
     EA    libmp3lame      libmp3lame MP3 (MPEG audio layer 3)
    DEA D  libopencore_amrnb OpenCORE Adaptive Multi-Rate (AMR) Narrow-Band
    D A D  libopencore_amrwb OpenCORE Adaptive Multi-Rate (AMR) Wide-Band
    DEV D  libopenjpeg     OpenJPEG based JPEG 2000 encoder
    DEV    libschroedinger libschroedinger Dirac 2.2
    DEA D  libspeex        libspeex Speex
     EV    libtheora       libtheora Theora
     EA    libvorbis       libvorbis Vorbis
    DEV    libvpx          libvpx VP8
     EV    libx264         libx264 H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10
     EV    libx264rgb      libx264 H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10 RGB
     EV    ljpeg           Lossless JPEG
    D V D  loco            LOCO
    D A D  mace3           MACE (Macintosh Audio Compression/Expansion) 3:1
    D A D  mace6           MACE (Macintosh Audio Compression/Expansion) 6:1
    D V D  mdec            Sony PlayStation MDEC (Motion DECoder)
    D V D  mimic           Mimic
    DEV D  mjpeg           MJPEG (Motion JPEG)
    D V D  mjpegb          Apple MJPEG-B
    D A D  mlp             MLP (Meridian Lossless Packing)
    D V D  mmvideo         American Laser Games MM Video
    D V D  motionpixels    Motion Pixels video
    D A D  mp1             MP1 (MPEG audio layer 1)
    D A D  mp1float        MP1 (MPEG audio layer 1)
    DEA D  mp2             MP2 (MPEG audio layer 2)
    D A D  mp2float        MP2 (MPEG audio layer 2)
    D A D  mp3             MP3 (MPEG audio layer 3)
    D A D  mp3adu          ADU (Application Data Unit) MP3 (MPEG audio layer 3)
    D A D  mp3adufloat     ADU (Application Data Unit) MP3 (MPEG audio layer 3)
    D A D  mp3float        MP3 (MPEG audio layer 3)
    D A D  mp3on4          MP3onMP4
    D A D  mp3on4float     MP3onMP4
    D A D  mpc7            Musepack SV7
    D A D  mpc8            Musepack SV8
    DEVSDT mpeg1video      MPEG-1 video
    D V DT mpeg1video_vdpau MPEG-1 video (VDPAU acceleration)
    DEVSDT mpeg2video      MPEG-2 video
    DEVSDT mpeg4           MPEG-4 part 2
    D V DT mpeg4_vdpau     MPEG-4 part 2 (VDPAU)
    D VSDT mpegvideo       MPEG-1 video
    D V DT mpegvideo_vdpau MPEG-1/2 video (VDPAU acceleration)
    D VSDT mpegvideo_xvmc  MPEG-1/2 video XvMC (X-Video Motion Compensation)
    DEVSD  msmpeg4         MPEG-4 part 2 Microsoft variant version 3
    D VSD  msmpeg4v1       MPEG-4 part 2 Microsoft variant version 1
    DEVSD  msmpeg4v2       MPEG-4 part 2 Microsoft variant version 2
    D V D  msrle           Microsoft RLE
    DEV D  msvideo1        Microsoft Video-1
    D V D  mszh            LCL (LossLess Codec Library) MSZH
    D V D  mxpeg           Mobotix MxPEG video
    DEA D  nellymoser      Nellymoser Asao
    D V D  nuv             NuppelVideo/RTJPEG
    DEV D  pam             PAM (Portable AnyMap) image
    DEV D  pbm             PBM (Portable BitMap) image
    DEA D  pcm_alaw        PCM A-law
    D A D  pcm_bluray      PCM signed 16|20|24-bit big-endian for Blu-ray media
    D A D  pcm_dvd         PCM signed 20|24-bit big-endian
    DEA D  pcm_f32be       PCM 32-bit floating point big-endian
    DEA D  pcm_f32le       PCM 32-bit floating point little-endian
    DEA D  pcm_f64be       PCM 64-bit floating point big-endian
    DEA D  pcm_f64le       PCM 64-bit floating point little-endian
    D A D  pcm_lxf         PCM signed 20-bit little-endian planar
    DEA D  pcm_mulaw       PCM mu-law
    DEA D  pcm_s16be       PCM signed 16-bit big-endian
    DEA D  pcm_s16le       PCM signed 16-bit little-endian
    D A D  pcm_s16le_planar PCM 16-bit little-endian planar
    DEA D  pcm_s24be       PCM signed 24-bit big-endian
    DEA D  pcm_s24daud     PCM D-Cinema audio signed 24-bit
    DEA D  pcm_s24le       PCM signed 24-bit little-endian
    DEA D  pcm_s32be       PCM signed 32-bit big-endian
    DEA D  pcm_s32le       PCM signed 32-bit little-endian
    DEA D  pcm_s8          PCM signed 8-bit
    D A D  pcm_s8_planar   PCM signed 8-bit planar
    DEA D  pcm_u16be       PCM unsigned 16-bit big-endian
    DEA D  pcm_u16le       PCM unsigned 16-bit little-endian
    DEA D  pcm_u24be       PCM unsigned 24-bit big-endian
    DEA D  pcm_u24le       PCM unsigned 24-bit little-endian
    DEA D  pcm_u32be       PCM unsigned 32-bit big-endian
    DEA D  pcm_u32le       PCM unsigned 32-bit little-endian
    DEA D  pcm_u8          PCM unsigned 8-bit
    D A D  pcm_zork        PCM Zork
    DEV D  pcx             PC Paintbrush PCX image
    DEV D  pgm             PGM (Portable GrayMap) image
    DEV D  pgmyuv          PGMYUV (Portable GrayMap YUV) image
    D S    pgssub          HDMV Presentation Graphic Stream subtitles
    D V D  pictor          Pictor/PC Paint
    DEV D  png             PNG image
    DEV D  ppm             PPM (Portable PixelMap) image
    DEV D  prores          Apple ProRes
    D V D  prores_lgpl     Apple ProRes (iCodec Pro)
    D V D  ptx             V.Flash PTX image
    D A D  qcelp           QCELP / PureVoice
    D A D  qdm2            QDesign Music Codec 2
    D V D  qdraw           Apple QuickDraw
    D V D  qpeg            Q-team QPEG
    DEV D  qtrle           QuickTime Animation (RLE) video
    DEV D  r10k            AJA Kona 10-bit RGB Codec
    DEV D  r210            Uncompressed RGB 10-bit
    DEV    rawvideo        raw video
    DEA D  real_144        RealAudio 1.0 (14.4K) encoder
    D A D  real_288        RealAudio 2.0 (28.8K)
    D V D  rl2             RL2 video
    DEA D  roq_dpcm        id RoQ DPCM
    DEV D  roqvideo        id RoQ video
    D V D  rpza            QuickTime video (RPZA)
    DEV D  rv10            RealVideo 1.0
    DEV D  rv20            RealVideo 2.0
    D V D  rv30            RealVideo 3.0
    D V D  rv40            RealVideo 4.0
    D A D  s302m           SMPTE 302M
    DEV    sgi             SGI image
    D A D  shorten         Shorten
    D A D  sipr            RealAudio SIPR / ACELP.NET
    D A D  smackaud        Smacker audio
    D V D  smackvid        Smacker video
    D V D  smc             QuickTime Graphics (SMC)
    DEV D  snow            Snow
    D A D  sol_dpcm        DPCM Sol
    DEA D  sonic           Sonic
     EA    sonicls         Sonic lossless
    D V D  sp5x            Sunplus JPEG (SP5X)
    DES    srt             SubRip subtitle
    D V D  sunrast         Sun Rasterfile image
    DEV D  svq1            Sorenson Vector Quantizer 1 / Sorenson Video 1 / SVQ1
    D VSD  svq3            Sorenson Vector Quantizer 3 / Sorenson Video 3 / SVQ3
    DEV D  targa           Truevision Targa image
    D VSD  theora          Theora
    D V D  thp             Nintendo Gamecube THP video
    D V D  tiertexseqvideo Tiertex Limited SEQ video
    DEV D  tiff            TIFF image
    D V D  tmv             8088flex TMV
    D A D  truehd          TrueHD
    D V D  truemotion1     Duck TrueMotion 1.0
    D V D  truemotion2     Duck TrueMotion 2.0
    D A D  truespeech      DSP Group TrueSpeech
    D A D  tta             True Audio (TTA)
    D A D  twinvq          VQF TwinVQ
    D V D  txd             Renderware TXD (TeXture Dictionary) image
    D V D  ultimotion      IBM UltiMotion
    D V D  utvideo         Ut Video
    DEV D  v210            Uncompressed 4:2:2 10-bit
    D V D  v210x           Uncompressed 4:2:2 10-bit
    DEV D  v308            Uncompressed packed 4:4:4
    DEV D  v410            Uncompressed 4:4:4 10-bit
    D V    vb              Beam Software VB
    D V D  vble            VBLE Lossless Codec
    D V D  vc1             SMPTE VC-1
    D V D  vc1_vdpau       SMPTE VC-1 VDPAU
    D V D  vc1image        Windows Media Video 9 Image v2
    D V D  vcr1            ATI VCR1
    D A D  vmdaudio        Sierra VMD audio
    D V D  vmdvideo        Sierra VMD video
    D V D  vmnc            VMware Screen Codec / VMware Video
    DEA D  vorbis          Vorbis
    D VSD  vp3             On2 VP3
    D V D  vp5             On2 VP5
    D V D  vp6             On2 VP6
    D V D  vp6a            On2 VP6 (Flash version, with alpha channel)
    D V D  vp6f            On2 VP6 (Flash version)
    D V D  vp8             On2 VP8
    D V D  vqavideo        Westwood Studios VQA (Vector Quantized Animation) video
    D A D  wavesynth       Wave synthesis pseudo-codec
    D A D  wavpack         WavPack
    D A    wmalossless     Windows Media Audio 9 Lossless
    D A D  wmapro          Windows Media Audio 9 Professional
    DEA D  wmav1           Windows Media Audio 1
    DEA D  wmav2           Windows Media Audio 2
    D A D  wmavoice        Windows Media Audio Voice
    DEVSD  wmv1            Windows Media Video 7
    DEVSD  wmv2            Windows Media Video 8
    D V D  wmv3            Windows Media Video 9
    D V D  wmv3_vdpau      Windows Media Video 9 VDPAU
    D V D  wmv3image       Windows Media Video 9 Image
    D V D  wnv1            Winnov WNV1
    D A D  ws_snd1         Westwood Audio (SND1)
    D A D  xan_dpcm        DPCM Xan
    D V D  xan_wc3         Wing Commander III / Xan
    D V D  xan_wc4         Wing Commander IV / Xxan
    D V D  xbin            eXtended BINary text
    D V D  xl              Miro VideoXL
    DES    xsub            DivX subtitles (XSUB)
    DEV D  xwd             XWD (X Window Dump) image
    DEV D  y41p            Uncompressed YUV 4:1:1 12-bit
    D V    yop             Psygnosis YOP Video
    DEV D  yuv4            Uncompressed packed 4:2:0
    DEV D  zlib            LCL (LossLess Codec Library) ZLIB
    DEV D  zmbv            Zip Motion Blocks Video

    Library we use to convert :

    public function getAvailableAudioCodecs()
       {
           return array(&#39;libvo_aacenc&#39;, &#39;libfaac&#39;, &#39;libmp3lame&#39;);
       }

    By default I use 'libmp3lame' now because 'libfaac' is not supported by ffmpeg
    and when Im trying to encode sound by libfaac I'm getting that codec not found

    Thanks in advance !

  • WebVTT Discussions at FOMS

    18 décembre 2013, par silvia

    At the recent FOMS (Foundations of Open Media Software and Standards) Developer Workshop, we had a massive focus on WebVTT and the state of its feature set. You will find links to summaries of the individual discussions in the FOMS Schedule page. Here are some of the key results I went away with.

    1. WebVTT Regions

    The key driving force for improvements to WebVTT continues to be the accurate representation of CEA608/708 captioning. As part of that drive, we’ve introduced regions (the CEA708 “window” concept) to WebVTT. WebVTT regions satisfy multiple requirements of CEA608/708 captions :

    1. support for rollup captions
    2. support for background color and border color on a group of cues independent of the background color of the individual cue
    3. possibility to move a group of cues from one location on screen to a different
    4. support to specify an anchor point and a growth direction for cues when their text size changes
    5. support for specifying a fixed number of lines to be rendered
    6. possibility to specify which region is rendered in front of which other one when regions overlap

    While WebVTT regions enable us to satisfy all of the above points, the specification isn’t actually complete yet and some of the above needs aren’t satisfied yet.

    We have an open bug to move a region elsewhere. A first discussion at FOMS seemed to to indicate that we’ll have to add syntax for updating a region at a particular time and thus give region definitions a way to be valid only for a certain time frame. I can imagine that the region definitions that we have in the header of the WebVTT file now would have an implicitly defined time frame from the start to the end of the file, but can be overruled by a re-definition anywhere within the WebVTT file. That redefinition needs to provide a start and end time.

    We registered a bug to add specifying the width and height of regions (and possibly of cues) by em (i.e. by multiples of the largest character in a font). This should allow us to have the region grow/shrink around the region anchor point with a change of font size by script or a user. em specifications should also be applied to cues – that matches the column count of CEA708/608 better.

    When regions overlap, the original region extension spec already suggested a “layer” cue setting. It will be easy to add it.

    Another change that we will ultimately need is the “scroll” setting : we will need to introduce support for scrolling text down or from left-to-right or right-to-left, e.g. vertical scrolling text seems to be used in some Chinese caption use cases.

    2. Unify Rendering Approach

    The introduction of regions created a second code path in the rendering spec with some duplication. At FOMS we discussed if it was possible to unify that. The suggestion is to render all cues into a region. Those that are not part of a region would be rendered into an anonymous region that covers the complete viewport. There may be some consequences to this, e.g. cue settings should be usable across all cues, no matter whether or not part of a region, and avoiding cue overlap may need to be done within regions.

    Here’s a rough outline of the path of the new rendering algorithm :

    (1) Render the regions :

    Specified Region Anonymous Region
    Render values as given : Render following values :
    • width
    • lines
    • regionanchor
    • viewportanchor
    • scroll
    • 100%
    • videoheight/lineheight
    • 0,0
    • 0,0
    • none

    (2) Render the cues :

    • Create a cue box and put it in its region (anonymous if none given).
    • Calculate position & size of cue box from cue settings (position, line, size).
    • Calculate position of cue text inside cue box from remaining cue settings (vertical, align).

    3. Vertical Features

    WebVTT includes vertical rendering, both right-to-left and left-to-right. However, regions are not defined for vertical. Eventually, we’re going to have to look at the vertical features of WebVTT with more details and figure out whether the spec is working for them and what real-world requirements we have missed. We hope we can get some help from users in countries where vertically rendered captions/subtitles are the norm.

    4. Best Practices

    Some of he WebVTT users at FOMS suggested it would be advantageous to start a list of “best practices” for how to author captions with WebVTT. Example recommendations are :

    • Use line numbers only to position cues from top or bottom of viewport. Don’t use otherwise.
    • Note that when the user increases the fontsize in rollup captions and thus introduces new line breaks, your cues will roll by faster because the number of lines of a rollup is fixed.
    • Make sure to use &lrm ; and &rlm ; UTF-8 markers to control the directionality of your text.

    It would be nice if somebody started such a document.

    5. Non-caption use cases

    Instead of continuing to look back and improve our support of captions/subtitles in WebVTT, one session at FOMS also went ahead and looked forward to other use cases. The following requirements came out of this :

    5.1 Preview Thumbnails

    A common use case for timed data is the use of preview thumbnails on the navigation bar of videos. A native implementation of preview thumbnails would allow crawlers and search engines to have a standardised way of extracting timed images for media files, so introduction of a new @kind value “thumbnails” was suggested.

    The content of a “thumbnails” cue could be any of :

    • an image URL
    • a sprite URL to a single image
    • a spatial & temporal media fragment URL to a media resource
    • base64 encoded image (data URI)
    • an iframe offset to the media resource

    The suggestion is to allow anything that would work in a img @src attribute as value in a cue of @kind=”thumbnails”. Responsive images might also be useful for a track of @kind=”thumbnails”. It may even be possible to define an inband thumbnail track based on the track of @kind=”thumbnails”. Such cues should also work in the JavaScript track API.

    5.2 Chapter markers

    There is interest to put richer content than just a chapter title into chapter cues. Often, chapters consist of a title, text and and image. The text is not so important, but the image is used almost everywhere that chapters are used. There may be a need to extend chapter cue content with images, similar to what a @kind=”thumbnails” track offers.

    The conclusion that we arrived at was that we need to make @kind=”thumbnails” work first and then look at using the learnings from that to extend @kind=”chapters”.

    5.3 Inband tracks for live video

    A difficult topic was opened with the question of how to transport text tracks in live video. In live captioning, end times are never created for cues, but are implied by the start time of the next cue. This is a use case that hasn’t been addressed in HTML5/WebVTT yet. An old proposal to allow a special end time value of “NEXT” was discussed and recommended for adoption. Also, there was support for the spec change that stops blocking loading VTT until all cues have been loaded.

    5.4 Cross-domain VTT loading

    A brief discussion centered around the fact that the spec disallows cross-domain loading of WebVTT files, but that no browser implements this. This needs to be discussion at the HTML WG level.

    6. Regions in live captioning

    The final topic that we discussed was how we could provide support for regions in live captioning.

    • The currently active region definitions will need to be come part of every header of every VTT file segment that HLS uses, so it’s available in case the cues in the segment file reference it.
    • “NEXT” in end time markers would make authoring of live captioned VTT files easier.
    • If the application wants to use 1 word at a time and doesn’t want to delay sending the word until the full cue is authored (e.g. in a Hangout type environment), we will need to introduce the concept of “cue continuation markers”, so we know that a cue could be extended with the next VTT file fragment.

    This is an extensive and impressive amount of discussion around WebVTT and a lot of new work to be performed in the future. I’m very grateful for all the people who have contributed to these discussions at FOMS and will hopefully continue to help get the specifications right.