
Recherche avancée
Autres articles (30)
-
Mise à disposition des fichiers
14 avril 2011, parPar défaut, lors de son initialisation, MediaSPIP ne permet pas aux visiteurs de télécharger les fichiers qu’ils soient originaux ou le résultat de leur transformation ou encodage. Il permet uniquement de les visualiser.
Cependant, il est possible et facile d’autoriser les visiteurs à avoir accès à ces documents et ce sous différentes formes.
Tout cela se passe dans la page de configuration du squelette. Il vous faut aller dans l’espace d’administration du canal, et choisir dans la navigation (...) -
Prérequis à l’installation
31 janvier 2010, parPréambule
Cet article n’a pas pour but de détailler les installations de ces logiciels mais plutôt de donner des informations sur leur configuration spécifique.
Avant toute chose SPIPMotion tout comme MediaSPIP est fait pour tourner sur des distributions Linux de type Debian ou dérivées (Ubuntu...). Les documentations de ce site se réfèrent donc à ces distributions. Il est également possible de l’utiliser sur d’autres distributions Linux mais aucune garantie de bon fonctionnement n’est possible.
Il (...) -
Configuration spécifique pour PHP5
4 février 2011, parPHP5 est obligatoire, vous pouvez l’installer en suivant ce tutoriel spécifique.
Il est recommandé dans un premier temps de désactiver le safe_mode, cependant, s’il est correctement configuré et que les binaires nécessaires sont accessibles, MediaSPIP devrait fonctionner correctement avec le safe_mode activé.
Modules spécifiques
Il est nécessaire d’installer certains modules PHP spécifiques, via le gestionnaire de paquet de votre distribution ou manuellement : php5-mysql pour la connectivité avec la (...)
Sur d’autres sites (4480)
-
Anomalie #3894 (Nouveau) : Jointures (erronées ?) avec les boucles documents et leurs critères
26 janvier 2017, par marcimat ☺☮☯♫Soit le cas suivant :
- une document A, attaché à une rubrique R1 et R2
-<doca></doca>
mis dans le texte de R1 (il est donc "vu" dans R1, mais pas dans R2)
- une boucle documents simplifiée (issue de squelettes-dist/inclure/documents.html) dans le squelette test.html :Test
- #FICHIER
Constats¶
Paramètre id_rubrique :¶
Si on appelle
?page=test&id_rubrique=1
le document A sera retourné, malgré le critère{vu=non}
.
Effectivement la boucle effectue 2 jointures différentes sur spip_documents_liens, une pour lier le champ "vu" et l’autre pour lier objet/id_objet.
Du coup, la requête SQL trouve effectivement un document A non vu (dans la rubrique 2) et le retourne (vu qu’il est lié aussi à la rubrique 1).On obtient la requête suivante :
SELECT documents.fichier FROM spip_documents AS `documents` INNER JOIN spip_documents_liens AS L2 ON ( L2.id_document = documents.id_document ) INNER JOIN spip_documents_liens AS L1 ON ( L1.id_document = documents.id_document ) WHERE (documents.statut = ’publie’) AND (documents.mode IN (’image’,’document’)) AND (documents.taille > 0 OR documents.distant=’oui’) AND (L2.id_objet = 1) AND (L2.objet = ’rubrique’) AND (L1.vu = ’non’) GROUP BY documents.id_document
Paramètres objet / id_objet :¶
Si on appelle
page=test&objet=rubrique&id_objet=1
, soit logiquement la même chose, on obtient 3 jointures sur spip_documents_liens.
Là, les documents retournés ne soient pas forcément ceux de l’objet demandé ! La jointure cherche des documents liés à objet=rubrique, id_objet=1, mais pas forcément dans la même liaison !
Les documents retournés ici sont parfois un peu farfelus donc là.SELECT documents.fichier FROM spip_documents AS `documents` INNER JOIN spip_documents_liens AS L4 ON ( L4.id_document = documents.id_document ) INNER JOIN spip_documents_liens AS L3 ON ( L3.id_document = documents.id_document ) INNER JOIN spip_documents_liens AS L1 ON ( L1.id_document = documents.id_document ) WHERE (documents.statut = ’publie’) AND (documents.mode IN (’image’,’document’)) AND (documents.taille > 0 OR documents.distant=’oui’) AND (L3.objet = ’rubrique’) AND (L4.id_objet = 1) AND (L1.vu = ’non’) GROUP BY documents.id_document
Paramètre id_article¶
Si on appelle
page=test&id_article=1
, on obtient, ô magie, une seule jointure. La boucle est correcte cette fois-ci donc. Je n’ai pas encore cherché pourquoi ça marche avec id_article, et pas id_rubrique…SELECT documents.fichier FROM spip_documents AS `documents` INNER JOIN spip_documents_liens AS L1 ON ( L1.id_document = documents.id_document ) WHERE (documents.statut = ’publie’) AND (documents.mode IN (’image’,’document’)) AND (documents.taille > 0 OR documents.distant=’oui’) AND (L1.id_objet = 1) AND (L1.objet = ’article’) AND (L1.vu = ’non’) GROUP BY documents.id_document
-
Evolution #3899 (Nouveau) : Comportement des inclusions avec le paramètre connect.
10 février 2017Il y a un comportement contre-intuitif dans un cas d’usage des inclusions et du paramètre connect, ce qu’à révélé une petite analyse dans #3823.
J’en fais un ticket dédié car c’est un problème distinct de ce qui est soulevé là bas.Fonctionnement actuel¶
Le paramètre d’URL
connect
¶Le paramètre
connect=truc
dans une URL d’un site SPIP permet d’indiquer à SPIP qu’il doit utilise le connecteur SQL ’truc’ dans les squelettes et les boucles utilisés,
et donc utiliserconfig/truc.php
en lieu et place deconfig/connect.php
. À différents endroits du compilateur, ce paramètre est séparé du contexte d’environnement
du squelette, notamment dans les boucles où il atterrit dans$boucles[$idb]->sql_serveur
et sera utilisé pour les requêtes SQL générées.Inclusions en indiquant un connect spécifique¶
Une autre manière d’indiquer que les squelettes / boucles utilisent un connecteur spécifique est de transmettre l’environnement
connect=truc
aux inclusions, de la sorte :#INCLUREfond=test, connect=truc
Cette option d’inclusion est prise en compte dans
recuperer_fond()
.Inclusion
connect=truc
et paramètre d’urlconnect=bidule
¶Lorsqu’on a à la fois dans l’URL
&connect=bidule
, et une inclusion qui indique un connect spécifique tel que#INCLURE{fond=test, connect=truc}
alors d’inclusion actuellement est chargée avec le paramètre d’URL, c’est à dire en utilisantconnect=bidule
.
C’est cela qui est assez contre-intuitif et logiquement non désiré (le connect forcé ici devrait prendre le pas sur celui d’environnement).Comment améliorer ?¶
Où cela se passe dans le code ?¶
Ce qui se passe lorsqu’il y a cette écriture est, comme expliqué, que le connect dans l’URL reste prioritaire sur celui de l’argument transmis à
#INCLURE
ou<inclure></inclure>
.- Pour #INCLURE ça se passe dans balise_INCLURE_dist() là https://core.spip.net/projects/spip/repository/entry/spip/ecrire/public/balises.php#L1995
- Pour
là ça se passe dans calculer_inclure() là https://core.spip.net/projects/spip/repository/entry/spip/ecrire/public/compiler.php#L169
Solutions ?¶
À ces 2 endroits, il faudrait du coup prendre en compte en priorité le
$contexte['connect']
si existant- soit dans les 2 appels à la constante
CODE_RECUPERER_FOND
plutôt que d’écrire directement_request('connect')
, mais c’est un peu compliqué car c’est du code compilé - soit directement dans
recuperer_fond()
, plus facile, inverser l’ordre :
if (isset($contexte[’connect’])) $connect = ($connect ? $connect : $contexte[’connect’]) ; unset($contexte[’connect’]) ;
deviendrait :if (isset($contexte[’connect’])) $connect = $contexte[’connect’] ; unset($contexte[’connect’]) ;
Cette dernière correction serait la plus simple et la plus facile. Ça permettrait même d’annuler un connect superieur dans une inclusion
en passant{connect=''}
.Des avis ?
-
Python Lambda function and ffmpeg command with stdout from jpg to ts file
28 juillet 2021, par SflaggI have a AWS Lambda Python function setup to process jpg and convert it to a ts file.


I followed these instructions https://aws.amazon.com/blogs/media/processing-user-generated-content-using-aws-lambda-and-ffmpeg/ but changed the command from vfr to cfr conversion to a jpg to ts conversion.


This is the command I am using


ffmpeg_cmd = "/opt/bin/ffmpeg -r 30000/1001 -loop 1 -i \"" + s3_source_signed_url + "\" -f lavfi -i anullsrc=channel_layout=stereo:sample_rate=48000 -t 30 -vcodec libx264 -crf 23 -s 1920x1080 -r 30000/1001 -g 150 -pix_fmt yuv420p -acodec aac -b:a 96k -ar 48000 -"


Everything else is basically the same from the AWS article besides having s3 triggers in my Lambda look for jpeg and jpg suffixes.


But this results in 0 byte ts file.


I have a hunch that I need to modify the command that has a seekable output format (e.g. mpegts) when writing to stdout ; currently my command is likely not working for stdout and that is why I get an empty ts file. But I am having trouble formatting the command correctly. Any help with this would be greatly appreciated !