Recherche avancée

Médias (1)

Mot : - Tags -/copyleft

Autres articles (21)

  • MediaSPIP Core : La Configuration

    9 novembre 2010, par

    MediaSPIP Core fournit par défaut trois pages différentes de configuration (ces pages utilisent le plugin de configuration CFG pour fonctionner) : une page spécifique à la configuration générale du squelettes ; une page spécifique à la configuration de la page d’accueil du site ; une page spécifique à la configuration des secteurs ;
    Il fournit également une page supplémentaire qui n’apparait que lorsque certains plugins sont activés permettant de contrôler l’affichage et les fonctionnalités spécifiques (...)

  • Use, discuss, criticize

    13 avril 2011, par

    Talk to people directly involved in MediaSPIP’s development, or to people around you who could use MediaSPIP to share, enhance or develop their creative projects.
    The bigger the community, the more MediaSPIP’s potential will be explored and the faster the software will evolve.
    A discussion list is available for all exchanges between users.

  • Emballe médias : à quoi cela sert ?

    4 février 2011, par

    Ce plugin vise à gérer des sites de mise en ligne de documents de tous types.
    Il crée des "médias", à savoir : un "média" est un article au sens SPIP créé automatiquement lors du téléversement d’un document qu’il soit audio, vidéo, image ou textuel ; un seul document ne peut être lié à un article dit "média" ;

Sur d’autres sites (2866)

  • ffmpeg - how to use pipe with amovie parameter ?

    19 février 2018, par user1347009

    I am looking for a solution to overlay to mp3 files in which the longer one will be played in the background and the smaller one will continue to play like a loop with that.
    My current code is working without pipe :

    ffmpeg -i 'longer.mp3'  -filter_complex "amovie='small.mp3:loop=999'[s];[0][s]amix=duration=shortest" new.mp3

    This code works like a charm but what i want to achieve is this :

    curl "any-url-to-api-to-audio-file" | ffmpeg -i 'longer.mp3'  -filter_complex "amovie='pipe\:0:loop=999'[s];[0][s]amix=duration=shortest" new.mp3

    This code is not working and its giving me error as well,

    ffmpeg version N-89955-g118e1b0b33 Copyright (c) 2000-2018 the FFmpeg
    developers
    built with gcc 4.4.7 (GCC) 20120313 (Red Hat 4.4.7-18)
    configuration: --enable-openssl --enable-libmp3lame
    libavutil      56.  7.100 / 56.  7.100
    libavcodec     58.  9.100 / 58.  9.100
    libavformat    58.  7.100 / 58.  7.100
    libavdevice    58.  0.101 / 58.  0.101
    libavfilter     7. 11.101 /  7. 11.101
    libswscale      5.  0.101 /  5.  0.101
    libswresample   3.  0.101 /  3.  0.101
    Input #0, mp3, from 'morning_alarm.mp3':
    Duration: 00:00:28.06, start: 0.025057, bitrate: 128 kb/s
    Stream #0:0: Audio: mp3, 44100 Hz, stereo, s16p, 128 kb/s
    Metadata:
    encoder         : LAME3.97
    Side data:
    replaygain: track gain - -9.200000, track peak - unknown, album gain - unknown, album peak - unknown,
    % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                Dload  Upload   Total   Spent    Left  Speed
    0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--    
    0101  5088  101  5088    0     0  28080      0 --:--:-- --:--:-- --:--:--  160k
    Stream mapping:
    Stream #0:0 (mp3) -> amix:input0
    amix -> Stream #0:0 (libmp3lame)
    Press [q] to stop, [?] for help
    [Parsed_amovie_0 @ 0x26c76c0] Failed to avformat_open_input 'pipe:0'
    [AVFilterGraph @ 0x26c3d80] Error initializing filter 'amovie' with args
    'pipe\:0:loop=999'
    Error reinitializing filters!
    Failed to inject frame into filter network: Invalid data found when
    processing input
    Error while processing the decoded data for stream #0:0
    Conversion failed!

    All i want to do is to overlay two audio files via command line in which 1st audio file will be longer and the second one will be smaller.
    The smaller one will be repeated like a loop till the longer one play.

    Please tell me how can i do that ?

  • Evolution #3973 : Brancher inc/distant recuperer_url() sur une librairie récente

    20 février 2019, par Eric Camus

    Bonjour,
    Suite à un changement de machine pour nos SPIP (de WIMP vers LAMP (centos)) de nombreux flux RSS ne fonctionnaient plus, la cause : la fonction ’recuperer_url’ !!!.
    J’ai donc réécrit le corps de cette fonction avec la biblio PHP CURL a partir du code dans SPIP 3.2.0 (je sais que je suis en retard d’une version).
    Je vous le livre comme je viens de le finir après un léger debug.

    1. <span class="CodeRay"><span class="keyword">function</span> <span class="function">recuperer_url</span>(<span class="local-variable">$url</span>, <span class="local-variable">$options</span> = <span class="predefined">array</span>()) {
    2.     <span class="local-variable">$default</span> = <span class="predefined">array</span>(
    3.         <span class="string"><span class="delimiter">'</span><span class="content">transcoder</span><span class="delimiter">'</span></span> => <span class="predefined-constant">false</span>,
    4.         <span class="string"><span class="delimiter">'</span><span class="content">methode</span><span class="delimiter">'</span></span> => <span class="string"><span class="delimiter">'</span><span class="content">GET</span><span class="delimiter">'</span></span>,
    5.         <span class="string"><span class="delimiter">'</span><span class="content">taille_max</span><span class="delimiter">'</span></span> => <span class="predefined-constant">null</span>,
    6.         <span class="string"><span class="delimiter">'</span><span class="content">datas</span><span class="delimiter">'</span></span> => <span class="string"><span class="delimiter">'</span><span class="delimiter">'</span></span>,
    7.         <span class="string"><span class="delimiter">'</span><span class="content">boundary</span><span class="delimiter">'</span></span> => <span class="string"><span class="delimiter">'</span><span class="delimiter">'</span></span>,
    8.         <span class="string"><span class="delimiter">'</span><span class="content">refuser_gz</span><span class="delimiter">'</span></span> => <span class="predefined-constant">false</span>,
    9.         <span class="string"><span class="delimiter">'</span><span class="content">if_modified_since</span><span class="delimiter">'</span></span> => <span class="integer">0</span>,
    10.         <span class="string"><span class="delimiter">'</span><span class="content">uri_referer</span><span class="delimiter">'</span></span> => <span class="string"><span class="delimiter">'</span><span class="delimiter">'</span></span>,
    11.         <span class="string"><span class="delimiter">'</span><span class="content">file</span><span class="delimiter">'</span></span> => <span class="string"><span class="delimiter">'</span><span class="delimiter">'</span></span>,
    12.         <span class="string"><span class="delimiter">'</span><span class="content">follow_location</span><span class="delimiter">'</span></span> => <span class="integer">10</span>,
    13.         <span class="string"><span class="delimiter">'</span><span class="content">version_http</span><span class="delimiter">'</span></span> => _INC_DISTANT_VERSION_HTTP,
    14.     );
    15.     <span class="local-variable">$options</span> = <span class="predefined">array_merge</span>(<span class="local-variable">$default</span>, <span class="local-variable">$options</span>);
    16.     <span class="comment">// copier directement dans un fichier ?</span>
    17.     <span class="local-variable">$copy</span> = <span class="local-variable">$options</span>[<span class="string"><span class="delimiter">'</span><span class="content">file</span><span class="delimiter">'</span></span>];
    18.  
    19.     <span class="keyword">if</span> (<span class="local-variable">$options</span>[<span class="string"><span class="delimiter">'</span><span class="content">methode</span><span class="delimiter">'</span></span>] == <span class="string"><span class="delimiter">'</span><span class="content">HEAD</span><span class="delimiter">'</span></span>) {
    20.         <span class="local-variable">$options</span>[<span class="string"><span class="delimiter">'</span><span class="content">taille_max</span><span class="delimiter">'</span></span>] = <span class="integer">0</span>;
    21.     }
    22.     <span class="keyword">if</span> (<span class="predefined">is_null</span>(<span class="local-variable">$options</span>[<span class="string"><span class="delimiter">'</span><span class="content">taille_max</span><span class="delimiter">'</span></span>])) {
    23.         <span class="local-variable">$options</span>[<span class="string"><span class="delimiter">'</span><span class="content">taille_max</span><span class="delimiter">'</span></span>] = <span class="local-variable">$copy</span> ? _COPIE_LOCALE_MAX_SIZE : _INC_DISTANT_MAX_SIZE;
    24.     }
    25.  
    26.     <span class="comment">// Accepter les URLs au format feed:// ou qui ont oublie le http:// ou les urls relatives au protocole</span>
    27.     <span class="local-variable">$url</span> = <span class="predefined">preg_replace</span>(<span class="string"><span class="delimiter">'</span><span class="content">,^feed://,i</span><span class="delimiter">'</span></span>, <span class="string"><span class="delimiter">'</span><span class="content">http://</span><span class="delimiter">'</span></span>, <span class="local-variable">$url</span>);
    28.     <span class="keyword">if</span> (!tester_url_absolue(<span class="local-variable">$url</span>)) {
    29.         <span class="local-variable">$url</span> = <span class="string"><span class="delimiter">'</span><span class="content">http://</span><span class="delimiter">'</span></span> . <span class="local-variable">$url</span>;
    30.     } <span class="keyword">elseif</span> (<span class="predefined">strncmp</span>(<span class="local-variable">$url</span>, <span class="string"><span class="delimiter">'</span><span class="content">//</span><span class="delimiter">'</span></span>, <span class="integer">2</span>) == <span class="integer">0</span>) {
    31.         <span class="local-variable">$url</span> = <span class="string"><span class="delimiter">'</span><span class="content">http:</span><span class="delimiter">'</span></span> . <span class="local-variable">$url</span>;
    32.     }
    33.  
    34.     <span class="local-variable">$url</span> = url_to_ascii(<span class="local-variable">$url</span>);
    35.  
    36.     <span class="local-variable">$result</span> = <span class="predefined">array</span>(
    37.         <span class="string"><span class="delimiter">'</span><span class="content">status</span><span class="delimiter">'</span></span> => <span class="integer">0</span>,
    38.         <span class="string"><span class="delimiter">'</span><span class="content">headers</span><span class="delimiter">'</span></span> => <span class="string"><span class="delimiter">'</span><span class="delimiter">'</span></span>,
    39.         <span class="string"><span class="delimiter">'</span><span class="content">page</span><span class="delimiter">'</span></span> => <span class="string"><span class="delimiter">'</span><span class="delimiter">'</span></span>,
    40.         <span class="string"><span class="delimiter">'</span><span class="content">length</span><span class="delimiter">'</span></span> => <span class="integer">0</span>,
    41.         <span class="string"><span class="delimiter">'</span><span class="content">last_modified</span><span class="delimiter">'</span></span> => <span class="string"><span class="delimiter">'</span><span class="delimiter">'</span></span>,
    42.         <span class="string"><span class="delimiter">'</span><span class="content">location</span><span class="delimiter">'</span></span> => <span class="string"><span class="delimiter">'</span><span class="delimiter">'</span></span>,
    43.         <span class="string"><span class="delimiter">'</span><span class="content">url</span><span class="delimiter">'</span></span> => <span class="local-variable">$url</span>
    44.     );
    45.  
    46.     <span class="local-variable">$pCurl</span>=curl_init(<span class="local-variable">$url</span>);
    47.     curl_setopt(<span class="local-variable">$pCurl</span>,<span class="constant">CURLOPT_HTTP_VERSION</span>,<span class="constant">CURL_HTTP_VERSION_1_1</span>);
    48.     curl_setopt(<span class="local-variable">$pCurl</span>,<span class="constant">CURLOPT_SSL_VERIFYPEER</span>,<span class="predefined-constant">false</span>);
    49.     curl_setopt(<span class="local-variable">$pCurl</span>,<span class="constant">CURLOPT_RETURNTRANSFER</span>,<span class="predefined-constant">true</span>);
    50.     curl_setopt(<span class="local-variable">$pCurl</span>,<span class="constant">CURLOPT_FOLLOWLOCATION</span>,<span class="predefined-constant">true</span>);
    51.     curl_setopt(<span class="local-variable">$pCurl</span>,<span class="constant">CURLOPT_TIMEOUT</span>,<span class="integer">30</span>);  <span class="comment">// timeout 30s</span>
    52.     <span class="keyword">if</span> (!<span class="predefined">empty</span>(<span class="local-variable">$options</span>[<span class="string"><span class="delimiter">'</span><span class="content">datas</span><span class="delimiter">'</span></span>])) {  <span class="comment">// des datas</span>
    53.         curl_setopt(<span class="local-variable">$pCurl</span>,<span class="constant">CURLOPT_POST</span>,<span class="predefined-constant">true</span>);
    54.         curl_setopt(<span class="local-variable">$pCurl</span>,<span class="constant">CURLOPT_SAFE_UPLOAD</span>,<span class="predefined-constant">true</span>);
    55.         curl_setopt(<span class="local-variable">$pCurl</span>,<span class="constant">CURLOPT_POSTFIELDS</span>,<span class="local-variable">$options</span>[<span class="string"><span class="delimiter">'</span><span class="content">datas</span><span class="delimiter">'</span></span>]);
    56.         <span class="local-variable">$options</span>[<span class="string"><span class="delimiter">'</span><span class="content">methode</span><span class="delimiter">'</span></span>]=<span class="string"><span class="delimiter">'</span><span class="content">POST</span><span class="delimiter">'</span></span>;
    57.     }
    58.     <span class="keyword">if</span>(<span class="local-variable">$options</span>[<span class="string"><span class="delimiter">'</span><span class="content">methode</span><span class="delimiter">'</span></span>]==<span class="string"><span class="delimiter">'</span><span class="content">HEAD</span><span class="delimiter">'</span></span>) {
    59.         curl_setopt(<span class="local-variable">$pCurl</span>,<span class="constant">CURLOPT_NOBODY</span>,<span class="predefined-constant">true</span>);
    60.         <span class="local-variable">$options</span>[<span class="string"><span class="delimiter">'</span><span class="content">taille_max</span><span class="delimiter">'</span></span>]=<span class="integer">0</span>;  <span class="comment">// pas de taille</span>
    61.         <span class="local-variable">$options</span>[<span class="string"><span class="delimiter">'</span><span class="content">if_modified_since</span><span class="delimiter">'</span></span>]=<span class="integer">0</span>;  <span class="comment">// pas de date de modif</span>
    62.         <span class="local-variable">$copy</span>=<span class="string"><span class="delimiter">'</span><span class="delimiter">'</span></span>;  <span class="comment">// pas de copie dans fichier</span>
    63.     }
    64.     <span class="keyword">if</span>(<span class="local-variable">$options</span>[<span class="string"><span class="delimiter">'</span><span class="content">if_modified_since</span><span class="delimiter">'</span></span>]><span class="integer">0</span>) {
    65.         curl_setopt(<span class="local-variable">$pCurl</span>,<span class="constant">CURLOPT_TIMEVALUE</span>,<span class="local-variable">$options</span>[<span class="string"><span class="delimiter">'</span><span class="content">if_modified_since</span><span class="delimiter">'</span></span>]);
    66.     }
    67.     <span class="keyword">if</span>(<span class="local-variable">$options</span>[<span class="string"><span class="delimiter">'</span><span class="content">taille_max</span><span class="delimiter">'</span></span>]><span class="integer">0</span>) {
    68.         curl_setopt(<span class="local-variable">$pCurl</span>,<span class="constant">CURLOPT_RANGE</span>,<span class="string"><span class="delimiter">'</span><span class="content">0-</span><span class="delimiter">'</span></span>.<span class="local-variable">$options</span>[<span class="string"><span class="delimiter">'</span><span class="content">taille_max</span><span class="delimiter">'</span></span>]);
    69.     }
    70.     <span class="keyword">if</span>(<span class="local-variable">$options</span>[<span class="string"><span class="delimiter">'</span><span class="content">uri_referer</span><span class="delimiter">'</span></span>]) {
    71.         curl_setopt(<span class="local-variable">$pCurl</span>,<span class="constant">CURLOPT_REFERER</span>,<span class="local-variable">$options</span>[<span class="string"><span class="delimiter">'</span><span class="content">uri_referer</span><span class="delimiter">'</span></span>]);
    72.     }
    73.     <span class="local-variable">$opt_header</span>=<span class="predefined-constant">true</span>;
    74.     <span class="local-variable">$fheader</span>=<span class="string"><span class="delimiter">'</span><span class="delimiter">'</span></span>;  <span class="comment">// nom du fichier contenant le header</span>
    75.     <span class="keyword">if</span>(<span class="local-variable">$copy</span>) {
    76.         <span class="local-variable">$fc</span>=<span class="predefined">fopen</span>(<span class="local-variable">$copy</span>,<span class="string"><span class="delimiter">'</span><span class="content">w</span><span class="delimiter">'</span></span>);
    77.         <span class="keyword">if</span>(<span class="local-variable">$fc</span>) {
    78.             <span class="local-variable">$fheader</span>=_DIR_TMP.<span class="predefined">md5</span>(<span class="local-variable">$copy</span>).<span class="string"><span class="delimiter">'</span><span class="content">_head.txt</span><span class="delimiter">'</span></span>;
    79.             <span class="local-variable">$fh</span>=<span class="predefined">fopen</span>(<span class="local-variable">$fheader</span>,<span class="string"><span class="delimiter">'</span><span class="content">w</span><span class="delimiter">'</span></span>);
    80.             <span class="keyword">if</span>(<span class="local-variable">$fh</span>) {
    81.                 curl_setopt(<span class="local-variable">$pCurl</span>,<span class="constant">CURLOPT_FILE</span>,<span class="local-variable">$fc</span>);
    82.                 curl_setopt(<span class="local-variable">$pCurl</span>,<span class="constant">CURLOPT_WRITEHEADER</span>,<span class="local-variable">$fh</span>);
    83.                 <span class="local-variable">$opt_header</span>=<span class="predefined-constant">false</span>;
    84.             }
    85.             <span class="keyword">else</span> {
    86.                 <span class="predefined">fclose</span>(<span class="local-variable">$fc</span>);
    87.             }
    88.         }
    89.     }
    90.     curl_setopt(<span class="local-variable">$pCurl</span>,<span class="constant">CURLOPT_HEADER</span>,<span class="local-variable">$opt_header</span>);
    91.     <span class="local-variable">$cont</span>=curl_exec(<span class="local-variable">$pCurl</span>);
    92.     <span class="local-variable">$info</span>=curl_getinfo(<span class="local-variable">$pCurl</span>);
    93.     curl_close(<span class="local-variable">$pCurl</span>);  <span class="comment">// fermer curl</span>
    94.     <span class="keyword">if</span>(<span class="local-variable">$fc</span>) {
    95.         <span class="predefined">fclose</span>(<span class="local-variable">$fc</span>);  <span class="comment">// fermer fichier</span>
    96.         <span class="local-variable">$result</span>[<span class="string"><span class="delimiter">'</span><span class="content">file</span><span class="delimiter">'</span></span>]=<span class="local-variable">$copy</span>;
    97.     }
    98.     <span class="keyword">if</span>(<span class="local-variable">$fh</span>) {
    99.         <span class="predefined">fclose</span>(<span class="local-variable">$fh</span>);
    100.     }
    101.     <span class="keyword">if</span>(<span class="local-variable">$cont</span>===<span class="predefined-constant">false</span>) {
    102.         spip_log(<span class="string"><span class="delimiter">'</span><span class="content">ECHEC CURL </span><span class="delimiter">'</span></span>.<span class="local-variable">$url</span>,_LOG_ERREUR);
    103.         <span class="keyword">if</span>(<span class="predefined">file_exists</span>(<span class="local-variable">$copy</span>)) <span class="predefined">unlink</span>(<span class="local-variable">$copy</span>);  <span class="comment">// suppr fichier sur erreur</span>
    104.         <span class="keyword">if</span>(<span class="predefined">file_exists</span>(<span class="local-variable">$fheader</span>)) <span class="predefined">unlink</span>(<span class="local-variable">$fheader</span>);
    105.         <span class="keyword">return</span> <span class="predefined-constant">false</span>;
    106.     }
    107.     <span class="comment">// on range le tout dans la var $result</span>
    108.     <span class="local-variable">$body</span>=<span class="string"><span class="delimiter">'</span><span class="delimiter">'</span></span>;
    109.     <span class="local-variable">$head</span>=<span class="string"><span class="delimiter">'</span><span class="delimiter">'</span></span>;
    110.     <span class="keyword">if</span>(<span class="local-variable">$cont</span>!==<span class="predefined-constant">true</span>) {  <span class="comment">// cas de demande par fichier</span>
    111.         <span class="keyword">if</span>(<span class="local-variable">$options</span>[<span class="string"><span class="delimiter">'</span><span class="content">methode</span><span class="delimiter">'</span></span>]==<span class="string"><span class="delimiter">'</span><span class="content">HEAD</span><span class="delimiter">'</span></span>) {
    112.             <span class="local-variable">$head</span>=<span class="local-variable">$cont</span>;
    113.         }
    114.         <span class="keyword">else</span> {
    115.             <span class="keyword">if</span>(<span class="predefined">isset</span>(<span class="local-variable">$info</span>[<span class="string"><span class="delimiter">'</span><span class="content">download_content_length</span><span class="delimiter">'</span></span>]) <span class="keyword">and</span> <span class="local-variable">$info</span>[<span class="string"><span class="delimiter">'</span><span class="content">download_content_length</span><span class="delimiter">'</span></span>]><span class="integer">0</span>) {
    116.                 <span class="local-variable">$body</span>=<span class="predefined">substr</span>(<span class="local-variable">$cont</span>,-<span class="local-variable">$info</span>[<span class="string"><span class="delimiter">'</span><span class="content">download_content_length</span><span class="delimiter">'</span></span>]);
    117.                 <span class="local-variable">$result</span>[<span class="string"><span class="delimiter">'</span><span class="content">length</span><span class="delimiter">'</span></span>]=<span class="local-variable">$info</span>[<span class="string"><span class="delimiter">'</span><span class="content">download_content_length</span><span class="delimiter">'</span></span>];
    118.             }
    119.             <span class="keyword">elseif</span>(<span class="predefined">isset</span>(<span class="local-variable">$info</span>[<span class="string"><span class="delimiter">'</span><span class="content">size_download</span><span class="delimiter">'</span></span>]) <span class="keyword">and</span> <span class="local-variable">$info</span>[<span class="string"><span class="delimiter">'</span><span class="content">size_download</span><span class="delimiter">'</span></span>]><span class="integer">0</span>) {
    120.                 <span class="local-variable">$body</span>=<span class="predefined">substr</span>(<span class="local-variable">$cont</span>,-<span class="local-variable">$info</span>[<span class="string"><span class="delimiter">'</span><span class="content">size_download</span><span class="delimiter">'</span></span>]);
    121.                 <span class="local-variable">$result</span>[<span class="string"><span class="delimiter">'</span><span class="content">length</span><span class="delimiter">'</span></span>]=<span class="local-variable">$info</span>[<span class="string"><span class="delimiter">'</span><span class="content">size_download</span><span class="delimiter">'</span></span>];
    122.             }
    123.             <span class="keyword">if</span>(<span class="predefined">isset</span>(<span class="local-variable">$info</span>[<span class="string"><span class="delimiter">'</span><span class="content">header_size</span><span class="delimiter">'</span></span>]) <span class="keyword">and</span> <span class="local-variable">$info</span>[<span class="string"><span class="delimiter">'</span><span class="content">header_size</span><span class="delimiter">'</span></span>]><span class="integer">0</span>) {
    124.                 <span class="local-variable">$head</span>=<span class="predefined">substr</span>(<span class="local-variable">$cont</span>,<span class="integer">0</span>,<span class="local-variable">$info</span>[<span class="string"><span class="delimiter">'</span><span class="content">header_size</span><span class="delimiter">'</span></span>]);
    125.                 <span class="keyword">if</span>(<span class="local-variable">$body</span>==<span class="string"><span class="delimiter">'</span><span class="delimiter">'</span></span>) {  <span class="comment">// cas ou download_content_length=-1 !!!!!!</span>
    126.                     <span class="local-variable">$body</span>=<span class="predefined">substr</span>(<span class="local-variable">$cont</span>,<span class="local-variable">$info</span>[<span class="string"><span class="delimiter">'</span><span class="content">header_size</span><span class="delimiter">'</span></span>]);
    127.                     <span class="local-variable">$result</span>[<span class="string"><span class="delimiter">'</span><span class="content">length</span><span class="delimiter">'</span></span>]=<span class="predefined">strlen</span>(<span class="local-variable">$body</span>);  <span class="comment">// pare absence</span>
    128.                 }
    129.             }
    130.         }
    131.     }
    132.     <span class="keyword">if</span>(<span class="local-variable">$fheader</span> <span class="keyword">and</span> <span class="predefined">file_exists</span>(<span class="local-variable">$fheader</span>)) {  <span class="comment">// si un fichier de header est fait</span>
    133.         <span class="local-variable">$head</span>=<span class="predefined">file_get_contents</span>(<span class="local-variable">$fheader</span>);
    134.         <span class="predefined">unlink</span>(<span class="local-variable">$fheader</span>);
    135.     }
    136.     <span class="local-variable">$result</span>[<span class="string"><span class="delimiter">'</span><span class="content">status</span><span class="delimiter">'</span></span>]=<span class="local-variable">$info</span>[<span class="string"><span class="delimiter">'</span><span class="content">http_code</span><span class="delimiter">'</span></span>];
    137.     <span class="keyword">if</span>(<span class="local-variable">$info</span>[<span class="string"><span class="delimiter">'</span><span class="content">http_code</span><span class="delimiter">'</span></span>]==<span class="integer">206</span>) <span class="local-variable">$result</span>[<span class="string"><span class="delimiter">'</span><span class="content">status</span><span class="delimiter">'</span></span>]=<span class="integer">200</span>;  <span class="comment">// SPIP refuse les partial content alors qu'il les demande</span>
    138.     <span class="local-variable">$result</span>[<span class="string"><span class="delimiter">'</span><span class="content">headers</span><span class="delimiter">'</span></span>]=<span class="local-variable">$head</span>;
    139.     <span class="local-variable">$result</span>[<span class="string"><span class="delimiter">'</span><span class="content">page</span><span class="delimiter">'</span></span>]=<span class="local-variable">$body</span>;
    140.     <span class="keyword">if</span>(<span class="predefined">isset</span>(<span class="local-variable">$info</span>[<span class="string"><span class="delimiter">'</span><span class="content">download_content_length</span><span class="delimiter">'</span></span>]) <span class="keyword">and</span> <span class="local-variable">$info</span>[<span class="string"><span class="delimiter">'</span><span class="content">download_content_length</span><span class="delimiter">'</span></span>]><span class="integer">0</span>) {
    141.         <span class="local-variable">$result</span>[<span class="string"><span class="delimiter">'</span><span class="content">length</span><span class="delimiter">'</span></span>]=<span class="local-variable">$info</span>[<span class="string"><span class="delimiter">'</span><span class="content">download_content_length</span><span class="delimiter">'</span></span>];
    142.     }
    143.     <span class="keyword">elseif</span>(<span class="predefined">isset</span>(<span class="local-variable">$info</span>[<span class="string"><span class="delimiter">'</span><span class="content">size_download</span><span class="delimiter">'</span></span>]) <span class="keyword">and</span> <span class="local-variable">$info</span>[<span class="string"><span class="delimiter">'</span><span class="content">size_download</span><span class="delimiter">'</span></span>]><span class="integer">0</span>) {
    144.         <span class="local-variable">$result</span>[<span class="string"><span class="delimiter">'</span><span class="content">length</span><span class="delimiter">'</span></span>]=<span class="local-variable">$info</span>[<span class="string"><span class="delimiter">'</span><span class="content">size_download</span><span class="delimiter">'</span></span>];
    145.     }
    146.     <span class="keyword">if</span>(<span class="predefined">isset</span>(<span class="local-variable">$info</span>[<span class="string"><span class="delimiter">'</span><span class="content">url</span><span class="delimiter">'</span></span>]) <span class="keyword">and</span> <span class="local-variable">$info</span>[<span class="string"><span class="delimiter">'</span><span class="content">url</span><span class="delimiter">'</span></span>]!=<span class="local-variable">$url</span>) <span class="local-variable">$result</span>[<span class="string"><span class="delimiter">'</span><span class="content">location</span><span class="delimiter">'</span></span>]=<span class="local-variable">$info</span>[<span class="string"><span class="delimiter">'</span><span class="content">url</span><span class="delimiter">'</span></span>];
    147.     <span class="keyword">if</span>(<span class="local-variable">$head</span>) {  <span class="comment">// analyse de head pour info</span>
    148.         <span class="local-variable">$trouve</span>=<span class="predefined">array</span>(<span class="string"><span class="delimiter">'</span><span class="content">Content-Length</span><span class="delimiter">'</span></span>=><span class="string"><span class="delimiter">'</span><span class="content">length</span><span class="delimiter">'</span></span>,  <span class="comment">// texte avant : => cle du $result</span>
    149.                      <span class="string"><span class="delimiter">'</span><span class="content">Last-Modified</span><span class="delimiter">'</span></span>=><span class="string"><span class="delimiter">'</span><span class="content">last_modified</span><span class="delimiter">'</span></span>,
    150.                      <span class="string"><span class="delimiter">'</span><span class="content">Accept-Ranges</span><span class="delimiter">'</span></span>=><span class="string"><span class="delimiter">'</span><span class="content">range</span><span class="delimiter">'</span></span>);
    151.         <span class="local-variable">$liste</span>=<span class="predefined">preg_split</span>(<span class="string"><span class="delimiter">'</span><span class="content">/[</span><span class="content">\r</span><span class="content">\n</span><span class="content">]+/</span><span class="delimiter">'</span></span>,<span class="local-variable">$head</span>,-<span class="integer">1</span>,<span class="constant">PREG_SPLIT_NO_EMPTY</span>);
    152.         <span class="keyword">if</span>(<span class="predefined">is_array</span>(<span class="local-variable">$liste</span>)) {
    153.             <span class="local-variable">$liste</span>=<span class="predefined">array_reverse</span>(<span class="local-variable">$liste</span>);
    154.             <span class="keyword">foreach</span>(<span class="local-variable">$liste</span> <span class="keyword">as</span> <span class="local-variable">$l</span>) {  <span class="comment">// premier trouver donc dernier dans le head</span>
    155.                 <span class="local-variable">$lt</span>=<span class="predefined">trim</span>(<span class="local-variable">$l</span>);
    156.                 <span class="keyword">if</span>(<span class="predefined">strlen</span>(<span class="local-variable">$lt</span>)><span class="integer">5</span> <span class="keyword">and</span> <span class="predefined">substr</span>(<span class="local-variable">$lt</span>,<span class="integer">0</span>,<span class="integer">4</span>)==<span class="string"><span class="delimiter">'</span><span class="content">HTTP</span><span class="delimiter">'</span></span>) <span class="keyword">break</span>;  <span class="comment">// on arrete sur derniere entete HTTP ?</span>
    157.                 <span class="local-variable">$item</span>=<span class="predefined">explode</span>(<span class="string"><span class="delimiter">'</span><span class="content">:</span><span class="delimiter">'</span></span>,<span class="local-variable">$lt</span>,<span class="integer">2</span>);
    158.                 <span class="keyword">if</span>(<span class="predefined">isset</span>(<span class="local-variable">$item</span>[<span class="integer">0</span>]) <span class="keyword">and</span> <span class="predefined">isset</span>(<span class="local-variable">$trouve</span>[<span class="local-variable">$item</span>[<span class="integer">0</span>]])) {
    159.                     <span class="local-variable">$result</span>[<span class="local-variable">$trouve</span>[<span class="local-variable">$item</span>[<span class="integer">0</span>]]]=<span class="predefined">trim</span>(<span class="local-variable">$item</span>[<span class="integer">1</span>]);
    160.                     <span class="predefined">unset</span>(<span class="local-variable">$trouve</span>[<span class="local-variable">$item</span>[<span class="integer">0</span>]]);  <span class="comment">// plus d'autre a chercher</span>
    161.                 }
    162.             }
    163.         }
    164.         <span class="comment">// cas particuliers</span>
    165.         <span class="keyword">if</span>(<span class="local-variable">$result</span>[<span class="string"><span class="delimiter">'</span><span class="content">last_modified</span><span class="delimiter">'</span></span>]) {
    166.             <span class="local-variable">$val</span>=<span class="predefined">strtotime</span>(<span class="local-variable">$result</span>[<span class="string"><span class="delimiter">'</span><span class="content">last_modified</span><span class="delimiter">'</span></span>]);
    167.             <span class="keyword">if</span>(<span class="local-variable">$val</span>===<span class="predefined-constant">false</span>) {
    168.                 <span class="local-variable">$result</span>[<span class="string"><span class="delimiter">'</span><span class="content">last_modified</span><span class="delimiter">'</span></span>]=<span class="string"><span class="delimiter">'</span><span class="delimiter">'</span></span>;
    169.             }
    170.             <span class="keyword">else</span> {
    171.                 <span class="local-variable">$result</span>[<span class="string"><span class="delimiter">'</span><span class="content">last_modified</span><span class="delimiter">'</span></span>]=<span class="local-variable">$val</span>;
    172.             }
    173.         }
    174.     }
    175.  
    176.     <span class="comment">// Faut-il l'importer dans notre charset local ?</span>
    177.     <span class="keyword">if</span> (<span class="local-variable">$options</span>[<span class="string"><span class="delimiter">'</span><span class="content">transcoder</span><span class="delimiter">'</span></span>]) {
    178.         include_spip(<span class="string"><span class="delimiter">'</span><span class="content">inc/charsets</span><span class="delimiter">'</span></span>);
    179.         <span class="local-variable">$result</span>[<span class="string"><span class="delimiter">'</span><span class="content">page</span><span class="delimiter">'</span></span>] = transcoder_page(<span class="local-variable">$result</span>[<span class="string"><span class="delimiter">'</span><span class="content">page</span><span class="delimiter">'</span></span>], <span class="local-variable">$result</span>[<span class="string"><span class="delimiter">'</span><span class="content">headers</span><span class="delimiter">'</span></span>]);
    180.     }
    181.  
    182.     <span class="keyword">return</span> <span class="local-variable">$result</span>;
    183. }
    184. </span>

    Télécharger

    Normalement, ce code doit être compatible avec l’ancienne fonction, il donne en plus en sortie [’range’] qui permet de savoir si un partial content peut être délivré.
    Il ne prend plus en compte les entrées [’refuser_gz’], [’version_http’] et [’boundary’] et l’entrée [’data’] doit être compatible avec celle de ’curl_setopt : CURLOPT_POSTFIELDS’.
    Si des gens veulent la tester et l’améliorer : bienvenue.

    Petit nota : SPIP laisse le fichier créer dans cette fonction ([’file’]) dans le tmp sans le détruire (version de base idem) : accumulation !

  • ffmpeg : rewrite setting the stream disposition

    12 novembre 2021, par Anton Khirnov
    ffmpeg : rewrite setting the stream disposition
    

    Currently, the code doing this is spread over several places and may
    behave in unexpected ways. E.g. automatic 'default' marking is only done
    for streams fed by complex filtergraphs. It is also applied in the order
    in which the output streams are initialized, which is effectively
    random.

    Move processing the dispositions at the end of open_output_file(), when
    we already have all the necessary information.

    Apply the automatic default marking only if no explicit -disposition
    options were supplied by the user, and apply it to the first stream of
    each type (excluding attached pics) when there is more than one stream
    of that type and no default markings were copied from the input streams.

    Explicitly document the new behavior.

    Changes the results of some tests, where the output file gets a default
    disposition, while it previously did not.

    • [DH] doc/ffmpeg.texi
    • [DH] fftools/ffmpeg.c
    • [DH] fftools/ffmpeg_opt.c
    • [DH] tests/ref/fate/ffprobe_compact
    • [DH] tests/ref/fate/ffprobe_csv
    • [DH] tests/ref/fate/ffprobe_default
    • [DH] tests/ref/fate/ffprobe_flat
    • [DH] tests/ref/fate/ffprobe_ini
    • [DH] tests/ref/fate/ffprobe_json
    • [DH] tests/ref/fate/ffprobe_xml
    • [DH] tests/ref/fate/ffprobe_xsd
    • [DH] tests/ref/fate/matroska-mastering-display-metadata