Recherche avancée

Médias (3)

Mot : - Tags -/plugin

Autres articles (31)

  • Encodage et transformation en formats lisibles sur Internet

    10 avril 2011

    MediaSPIP transforme et ré-encode les documents mis en ligne afin de les rendre lisibles sur Internet et automatiquement utilisables sans intervention du créateur de contenu.
    Les vidéos sont automatiquement encodées dans les formats supportés par HTML5 : MP4, Ogv et WebM. La version "MP4" est également utilisée pour le lecteur flash de secours nécessaire aux anciens navigateurs.
    Les documents audios sont également ré-encodés dans les deux formats utilisables par HTML5 :MP3 et Ogg. La version "MP3" (...)

  • Installation en mode ferme

    4 février 2011, par

    Le mode ferme permet d’héberger plusieurs sites de type MediaSPIP en n’installant qu’une seule fois son noyau fonctionnel.
    C’est la méthode que nous utilisons sur cette même plateforme.
    L’utilisation en mode ferme nécessite de connaïtre un peu le mécanisme de SPIP contrairement à la version standalone qui ne nécessite pas réellement de connaissances spécifique puisque l’espace privé habituel de SPIP n’est plus utilisé.
    Dans un premier temps, vous devez avoir installé les mêmes fichiers que l’installation (...)

  • Librairies et logiciels spécifiques aux médias

    10 décembre 2010, par

    Pour un fonctionnement correct et optimal, plusieurs choses sont à prendre en considération.
    Il est important, après avoir installé apache2, mysql et php5, d’installer d’autres logiciels nécessaires dont les installations sont décrites dans les liens afférants. Un ensemble de librairies multimedias (x264, libtheora, libvpx) utilisées pour l’encodage et le décodage des vidéos et sons afin de supporter le plus grand nombre de fichiers possibles. Cf. : ce tutoriel ; FFMpeg avec le maximum de décodeurs et (...)

Sur d’autres sites (2956)

  • Anomalie #3675 : fsockopen => lenteur dans inc/queue

    7 février 2016, par Nicolas RICQUEMAQUE

    Il semble tout d’abord que les problèmes rapportés d’extrême lenteur de la fonction fsockopen semblent être communs sur Internet. Voir par exemple le post qui propose des solutions : http://stackoverflow.com/questions/5211658/php-fsockopen-painfully-slow ; notamment la résolution dns directe ne semble pas très efficace, mais la solution proposée, via un gethostbyname(), ne fonctionnera pas en tls (qui vérifie la cohérence du certificat publique avec l’url à connecter).

    En réfléchissant un peu, outre les différentes possibilités de mitigation des problèmes évoqués quant aux limitations de la fonction fsockopen ailleurs sur Internet, il semble que l’on est ici en face, de façon plus générale, d’une "fausse bonne idée". A savoir, la création d’une tâche asynchrone via l’ouverture d’une nouvelle connexion http sur le même serveur. Après 15 ans de travail dans les infrastructures télécom, je vois difficilement comment cela peut fonctionner à tous les coups. Une telle requête, effectuée du serveur vers lui-même en utilisant l’adresse IP récupérée dans un DNS va fonctionner très différemment en fonction de la structure technique du réseau de l’hébergeur. Où sont terminées les adresses publiques ? Le Firewall autorise-t-il la réentrance ? le DNS résout il différemment sur son réseau interne par rapport au réseau publique ? Comment est configuré et où se trouve le load-balancer ? La machine est elle une machine physique (mutualisée ou non) ou plutôt une machine virtuelle avec le NAT ou du bridging interne sur l’hôte ? Tout ceci va influer sur le fait que le fsockopen (ou curl) va fonctionner ou non. Il y a des bonnes pratiques dans l’industrie, mais à aucun moment vous pouvez être sûr, qu’un logiciel comme SPIP qui doit tenter de s’adapter partout, va fonctionner partout. Et le cURL n’est pas beaucoup plus rustique en la matière (un peu plus tout de même, c’est un appel unix hors php, les auteurs de cURL ont bien blindé leur code, mais je ne m’y fierai pas à 100%).

    Le problème est donc, que parfois, en fonction de l’hébergeur, tout simplement, comme l’indique bien le commentaire dans le code existant de queue.php, "cela ne va par marcher".
    Mais qu’est ce qui se passe quand cela ne fonctionne pas, et pourquoi cela ralenti autant l’affichage des pages web ?
    - Si !function_exists(’fsockopen’) et !function_exists("curl_init"), alors c’est simple, on va appliquer l’astuce de l’image-background
    - Si les fonctions existent bien, mais que "quelque chose" dans l’infrastructure "bloque" la connexion. Il y a 2 façons de bloquer. Un load balancer, un serveur, ou un routeur renverront probablement un TCP/RST immédiatement, fermant donc la connexion TCP, et 5 ms après on sort vers l’image background. Y’a pas de dégats.
    - Si les fonctions existent bien, et que c’est un "firewall" qui ne laisse pas passer, il ne va rien répondre du tout, c’est à dire laisser tomber la connexion en timeout, qui est ici de 1s (très très très long pour un appel vers sois-même ! c’est un premier bug, il ne faudrait pas dépasser 20ms maximum). Donc, Curl ou fsockopen, l’utilisateur, dans l’affichage de la page, va perdre une première seconde. Pourquoi première ? parce que le code de la fonction semble être pouvoir être appelé plusieurs fois (commentaire dans le code "ne pas relancer si on vient de lancer dans la meme seconde par un hit concurent") et que le fichier est locké avant l’appel à fsockopen ou à curl, dès la sortie de la fonction, après un timeout de 1s de fsockopen par exemple, on aura déjà expiré le lock. Donc on peut probablement se retrouver dans un cas ou la fonction (qui échoue à chaque fois via un timeout de 1s) est appelée plusieurs fois de suite. Bofff ;-). Il faut donc décorréler cette valeur de check du lock avec le timeout de durée des appels réseaux au moins d’un facteur 10 pour éviter les effets d’avalanche...

    Conclusion : les appels asynchrones sont une très bonne idée en théorie, mais en pratique, je pense qu’ils risquent d’amener plus de problèmes que de solutions. Et cela semble se vérifier en regard des nombreux utilisateurs qui semblent avoir le problème sur le réseau, ou décident finalement de rester sur la 2.1, ou de changer de crémerie (hébergeur ou CMS). Pour les moins chanceux, de se contenter d’un site qui est devenu irresponsif...

    Il est possible à mon avis toutefois de conserver intelligemment cette technique quand elle est applicable. Pourquoi réessayer et se remplanter d’une seconde comme les shadoks sur chaque page ? Si un hébergeur ne fonctionne pas, cela ne va pas fonctionner à tous les coups. Tout du moins jusqu’à ce qu’il change son infra ou le client déménage ailleurs. Je proposerai donc une approche "hybride", mais simple, en détectant d’un côté la bonne méthode à utiliser, et en l’appliqant simplement dans queue.php :
    - Sur le site "privé", exécutée par exemple une fois par session d’un rédacteur, par appel asynchrone via une background image (pour ne pas ralentir le rédacteur), une fonction toute simple qui essaie de se connecter sur l’url cron, successivement avec les différentes méthodes (fsockopen, curl, pourquoi pas fopen directement qui accepte aussi les urls..., et 36 nouvelles méthodes qui apparaitront à l’avenir). Cette fonction détermine la méthode la plus rapide (qui pourrait très bien être fsockopen sur beaucoup d’hébergeurs !) par simple comparaison et stocke ce résultat dans une variable quelque part dans le site. Elle peut aussi déterminer que même si cela marche, les délais introduits (>100ms par exemple) ne justifient pas se passer de la technique de l’image background.
    - quand le code de queue.php, on "n’essaie pas des méthodes jusqu’à en trouver une qui fonctionne en perdant du temps sur le dos du client", mais on utilise la méthode récupérée dans la variable avec un switch par exemple, et on est sûr d’utiliser la meilleure méthode :-) et la meilleure !

  • FFMPEG version 0.6.5 video rotate

    18 octobre 2017, par Sanjyot Shah

    I am writing a php code to rotate the video using ffmpeg 0.6.5 (This is the version installed on the client’s web-server). Unfortunately, I have not been able to find any documentation for this version of ffmpeg.

    Here is the command for ffmpeg I have written using few references I could find online.

    /usr/bin/ffmpeg -vfilters 'rotate=90' -i /hsphere/local/home/testdomain.com/ffmpeg-php-class-master/examples/media/nsa.mp4 /hsphere/local/home/testdomain.com/ffmpeg-php-class-master/examples/media/output.mp4

    The error for this command -

    array(18) [0]=> string(67) "FFmpeg version 0.6.5, Copyright (c) 2000-2010 the FFmpeg developers" [1]=> string(74) " built on Jan 29 2012 23:55:02 with gcc 4.1.2 20080704 (Red Hat 4.1.2-51)" [2]=> string(649) " configuration : —prefix=/usr —libdir=/usr/lib64 —shlibdir=/usr/lib64 —mandir=/usr/share/man —incdir=/usr/include —disable-avisynth —extra-cflags=’-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector —param=ssp-buffer-size=4 -m64 -mtune=generic -fPIC’ —enable-avfilter —enable-avfilter-lavf —enable-libdirac —enable-libfaac —enable-libfaad —enable-libfaadbin —enable-libgsm —enable-libmp3lame —enable-libopencore-amrnb —enable-libopencore-amrwb —enable-libx264 —enable-gpl —enable-nonfree —enable-postproc —enable-pthreads —enable-shared —enable-swscale —enable-vdpau —enable-version3 —enable-x11grab" [3]=> string(35) " libavutil 50.15. 1 / 50.15. 1" [4]=> string(35) " libavcodec 52.72. 2 / 52.72. 2" [5]=> string(35) " libavformat 52.64. 2 / 52.64. 2" [6]=> string(35) " libavdevice 52. 2. 0 / 52. 2. 0" [7]=> string(35) " libavfilter 1.19. 0 / 1.19. 0" [8]=> string(35) " libswscale 0.11. 0 / 0.11. 0" [9]=> string(35) " libpostproc 51. 2. 0 / 51. 2. 0" [10]=> string(135) "Input #0, mov,mp4,m4a,3gp,3g2,mj2, from ’/hsphere/local/home/testdomain.com/ffmpeg-php-class-master/examples/media/nsa.mp4’ :" [11]=> string(11) " Metadata :" [12]=> string(26) " major_brand : mp42" [13]=> string(23) " minor_version : 0" [14]=> string(39) " compatible_brands : mp42mp41isomavc1" [15]=> string(60) " Duration : 00:00:11.44, start : 0.000000, bitrate : 2163 kb/s" [16]=> string(124) " Stream #0.0(und) : Video : h264, yuv420p, 1280x720 [PAR 1:1 DAR 16:9], 2160 kb/s, 29.97 fps, 29.97 tbr, 30k tbn, 59.94 tbc" [17]=> string(24) "Unrecognized option ’vfilters’" int(1)

    The main part of the error is the last line - [17]=> string(24) "Unrecognized option ’vfilters’" int(1)

    I have tried using -vf as well instead of vfilters and I get the same error.

    Could someone please help me with any pointers ? I am open to any other technique to rotate video orientation. I have to rotate and save the video in the correct orientation.

    Thank you !

  • FFMPEG version 0.6.5 video rotate

    31 mars 2016, par Sanjyot Shah

    I am writing a php code to rotate the video using ffmpeg 0.6.5 (This is the version installed on the client’s web-server). Unfortunately, I have not been able to find any documentation for this version of ffmpeg.

    Here is the command for ffmpeg I have written using few references I could find online.

    /usr/bin/ffmpeg -vfilters 'rotate=90' -i /hsphere/local/home/testdomain.com/ffmpeg-php-class-master/examples/media/nsa.mp4 /hsphere/local/home/testdomain.com/ffmpeg-php-class-master/examples/media/output.mp4

    The error for this command -

    array(18) [0]=> string(67) "FFmpeg version 0.6.5, Copyright (c) 2000-2010 the FFmpeg developers" [1]=> string(74) " built on Jan 29 2012 23:55:02 with gcc 4.1.2 20080704 (Red Hat 4.1.2-51)" [2]=> string(649) " configuration : —prefix=/usr —libdir=/usr/lib64 —shlibdir=/usr/lib64 —mandir=/usr/share/man —incdir=/usr/include —disable-avisynth —extra-cflags=’-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector —param=ssp-buffer-size=4 -m64 -mtune=generic -fPIC’ —enable-avfilter —enable-avfilter-lavf —enable-libdirac —enable-libfaac —enable-libfaad —enable-libfaadbin —enable-libgsm —enable-libmp3lame —enable-libopencore-amrnb —enable-libopencore-amrwb —enable-libx264 —enable-gpl —enable-nonfree —enable-postproc —enable-pthreads —enable-shared —enable-swscale —enable-vdpau —enable-version3 —enable-x11grab" [3]=> string(35) " libavutil 50.15. 1 / 50.15. 1" [4]=> string(35) " libavcodec 52.72. 2 / 52.72. 2" [5]=> string(35) " libavformat 52.64. 2 / 52.64. 2" [6]=> string(35) " libavdevice 52. 2. 0 / 52. 2. 0" [7]=> string(35) " libavfilter 1.19. 0 / 1.19. 0" [8]=> string(35) " libswscale 0.11. 0 / 0.11. 0" [9]=> string(35) " libpostproc 51. 2. 0 / 51. 2. 0" [10]=> string(135) "Input #0, mov,mp4,m4a,3gp,3g2,mj2, from ’/hsphere/local/home/testdomain.com/ffmpeg-php-class-master/examples/media/nsa.mp4’ :" [11]=> string(11) " Metadata :" [12]=> string(26) " major_brand : mp42" [13]=> string(23) " minor_version : 0" [14]=> string(39) " compatible_brands : mp42mp41isomavc1" [15]=> string(60) " Duration : 00:00:11.44, start : 0.000000, bitrate : 2163 kb/s" [16]=> string(124) " Stream #0.0(und) : Video : h264, yuv420p, 1280x720 [PAR 1:1 DAR 16:9], 2160 kb/s, 29.97 fps, 29.97 tbr, 30k tbn, 59.94 tbc" [17]=> string(24) "Unrecognized option ’vfilters’" int(1)

    The main part of the error is the last line - [17]=> string(24) "Unrecognized option ’vfilters’" int(1)

    I have tried using -vf as well instead of vfilters and I get the same error.

    Could someone please help me with any pointers ? I am open to any other technique to rotate video orientation. I have to rotate and save the video in the correct orientation.

    Thank you !