Recherche avancée

Médias (0)

Mot : - Tags -/xmlrpc

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

Autres articles (111)

  • Les statuts des instances de mutualisation

    13 mars 2010, par

    Pour des raisons de compatibilité générale du plugin de gestion de mutualisations avec les fonctions originales de SPIP, les statuts des instances sont les mêmes que pour tout autre objets (articles...), seuls leurs noms dans l’interface change quelque peu.
    Les différents statuts possibles sont : prepa (demandé) qui correspond à une instance demandée par un utilisateur. Si le site a déjà été créé par le passé, il est passé en mode désactivé. publie (validé) qui correspond à une instance validée par un (...)

  • Pas question de marché, de cloud etc...

    10 avril 2011

    Le vocabulaire utilisé sur ce site essaie d’éviter toute référence à la mode qui fleurit allègrement
    sur le web 2.0 et dans les entreprises qui en vivent.
    Vous êtes donc invité à bannir l’utilisation des termes "Brand", "Cloud", "Marché" etc...
    Notre motivation est avant tout de créer un outil simple, accessible à pour tout le monde, favorisant
    le partage de créations sur Internet et permettant aux auteurs de garder une autonomie optimale.
    Aucun "contrat Gold ou Premium" n’est donc prévu, aucun (...)

  • Personnaliser en ajoutant son logo, sa bannière ou son image de fond

    5 septembre 2013, par

    Certains thèmes prennent en compte trois éléments de personnalisation : l’ajout d’un logo ; l’ajout d’une bannière l’ajout d’une image de fond ;

Sur d’autres sites (5547)

  • why video conversion from avi to mp4 in php using exec function not working ?

    28 avril 2019, par Amir farouk

    i tried to convert any video type to mp4 on the server because the html video tag dose not support any type except mp4. so i used exec function to convert the video on the server but it is not working.
    note :
    exec function is not in the disabled function in php.ini

    my code :

       <?php
         if(isset($_POST['submit']))
         {
         $vidname=$_FILES["vid"]["name"];
         $videotype=$_FILES["vid"]["type"];
         $time = time();
         $vidname2=$time.$_FILES["vid"]["name"];

         move_uploaded_file($_FILES["vid"]["tmp_name"], 'videos/' . $time.$_FILES["vid"]["name"]);
         if($videotype!="video/mp4")
         {
             exec("ffmpeg -i videos/$vidname2 -an videos/$vidname2.mp4"); // Convert .avi to mp4
             unlink("videos/$vidname2");
         }
       }
       else
       {
           ?>
               <form method="post" action="" enctype="multipart/form-data">
                   <input type="file" />
                   <input type="submit" value="upload" />
               </form>
           &lt;?php
       }
    ?>

    screen shoot of the code

  • Queue in Python processing more than one video at a time ? [closed]

    12 novembre 2024, par Mateus Coelho

    I have an raspberry pi, that i proccess videos, rotate and put 4 water marks, but, when i run into the raspberry pi, it uses 100% of 4CPUS threads and it reboots. I solved this using -threads 1, to prevent the usage of just one of the 4 CPUS cores, it worked.

    &#xA;

    I made a Queue to procces one at a time, because i have 4 buttons that trigger the videos. But, when i send more then 3 videos to the Queue, the rasp still reboots, and im monitoring the CPU usage, is 100% for only one of the four CPUS&#xA;enter image description here

    &#xA;

    But, if i send 4 or 5 videos to the thread folder, it completly reboots, and the most awkward, its after the reboot, it made its way to proceed all the videos.

    &#xA;

    &#xA;import os&#xA;import time&#xA;import subprocess&#xA;from google.cloud import storage&#xA;import shutil&#xA;&#xA;QUEUE_DIR = "/home/abidu/Desktop/ApertaiRemoteClone"&#xA;ERROR_VIDEOS_DIR = "/home/abidu/Desktop/ApertaiRemoteClone/ErrorVideos"&#xA;CREDENTIALS_PATH = "/home/abidu/Desktop/keys.json"&#xA;BUCKET_NAME = "videos-283812"&#xA;&#xA;def is_valid_video(file_path):&#xA;    try:&#xA;        result = subprocess.run(&#xA;            [&#x27;ffprobe&#x27;, &#x27;-v&#x27;, &#x27;error&#x27;, &#x27;-show_entries&#x27;, &#x27;format=duration&#x27;, &#x27;-of&#x27;, &#x27;default=noprint_wrappers=1:nokey=1&#x27;, file_path],&#xA;            stdout=subprocess.PIPE,&#xA;            stderr=subprocess.PIPE&#xA;        )&#xA;        return result.returncode == 0&#xA;    except Exception as e:&#xA;        print(f"Erro ao verificar o v&#xED;deo: {e}")&#xA;        return False&#xA;&#xA;def overlay_images_on_video(input_file, image_files, output_file, positions, image_size=(100, 100), opacity=0.7):&#xA;    inputs = [&#x27;-i&#x27;, input_file]&#xA;    for image in image_files:&#xA;        if image:&#xA;            inputs &#x2B;= [&#x27;-i&#x27;, image]&#xA;    filter_complex = "[0:v]transpose=2[rotated];"&#xA;    current_stream = "[rotated]"&#xA;    for i, (x_offset, y_offset) in enumerate(positions):&#xA;        filter_complex &#x2B;= f"[{i&#x2B;1}:v]scale={image_size[0]}:{image_size[1]},format=rgba,colorchannelmixer=aa={opacity}[img{i}];"&#xA;        filter_complex &#x2B;= f"{current_stream}[img{i}]overlay={x_offset}:{y_offset}"&#xA;        if i &lt; len(positions) - 1:&#xA;            filter_complex &#x2B;= f"[tmp{i}];"&#xA;            current_stream = f"[tmp{i}]"&#xA;        else:&#xA;            filter_complex &#x2B;= ""&#xA;    command = [&#x27;ffmpeg&#x27;, &#x27;-y&#x27;, &#x27;-threads&#x27;, &#x27;1&#x27;] &#x2B; inputs &#x2B; [&#x27;-filter_complex&#x27;, filter_complex, &#x27;-threads&#x27;, &#x27;1&#x27;, output_file]&#xA;&#xA;    try:&#xA;        result = subprocess.run(command, check=True)&#xA;        result.check_returncode()  # Verifica se o comando foi executado com sucesso&#xA;        print(f"V&#xED;deo processado com sucesso: {output_file}")&#xA;    except subprocess.CalledProcessError as e:&#xA;        print(f"Erro ao processar o v&#xED;deo: {e}")&#xA;        if "moov atom not found" in str(e):&#xA;            print("V&#xED;deo corrompido ou sem o moov atom. Pulando o arquivo.")&#xA;        raise  # Relan&#xE7;a a exce&#xE7;&#xE3;o para ser tratada no n&#xED;vel superior&#xA;&#xA;def process_and_upload_video():&#xA;    client = storage.Client.from_service_account_json(CREDENTIALS_PATH)&#xA;    bucket = client.bucket(BUCKET_NAME)&#xA;    &#xA;    while True:&#xA;        # Aguarda 10 segundos antes de verificar novos v&#xED;deos&#xA;        time.sleep(10)&#xA;&#xA;        # Verifica se h&#xE1; arquivos no diret&#xF3;rio de fila&#xA;        queue_files = [f for f in os.listdir(QUEUE_DIR) if f.endswith(".mp4")]&#xA;        &#xA;        if queue_files:&#xA;            video_file = os.path.join(QUEUE_DIR, queue_files[0])  # Pega o primeiro v&#xED;deo na fila&#xA;            &#xA;            # Define o caminho de sa&#xED;da ap&#xF3;s o processamento com o mesmo nome do arquivo de entrada&#xA;            output_file = os.path.join(QUEUE_DIR, "processed_" &#x2B; os.path.basename(video_file))&#xA;            if not is_valid_video(video_file):&#xA;                print(f"Arquivo de v&#xED;deo inv&#xE1;lido ou corrompido: {video_file}. Pulando.")&#xA;                os.remove(video_file)  # Remove arquivo corrompido&#xA;                continue&#xA;&#xA;            # Processa o v&#xED;deo com a fun&#xE7;&#xE3;o overlay_images_on_video&#xA;            try:&#xA;                overlay_images_on_video(&#xA;                    video_file,&#xA;                    ["/home/abidu/Desktop/ApertaiRemoteClone/Sponsor/image1.png", &#xA;                     "/home/abidu/Desktop/ApertaiRemoteClone/Sponsor/image2.png", &#xA;                     "/home/abidu/Desktop/ApertaiRemoteClone/Sponsor/image3.png", &#xA;                     "/home/abidu/Desktop/ApertaiRemoteClone/Sponsor/image4.png"],&#xA;                    output_file,&#xA;                    [(10, 10), (35, 1630), (800, 1630), (790, 15)],&#xA;                    image_size=(250, 250),&#xA;                    opacity=0.8&#xA;                )&#xA;                &#xA;                if os.path.exists(output_file):&#xA;                    blob = bucket.blob(os.path.basename(video_file).replace("-", "/"))&#xA;                    blob.upload_from_filename(output_file, content_type=&#x27;application/octet-stream&#x27;)&#xA;                    print(f"Uploaded {output_file} to {BUCKET_NAME}")&#xA;                    os.remove(video_file)&#xA;                    os.remove(output_file)&#xA;                    print(f"Processed and deleted {video_file} and {output_file}.")&#xA;            &#xA;            except subprocess.CalledProcessError as e:&#xA;                print(f"Erro ao processar {video_file}: {e}")&#xA;                &#xA;                move_error_video_to_error_directory(video_file)&#xA;&#xA;                continue  # Move para o pr&#xF3;ximo v&#xED;deo na fila ap&#xF3;s erro&#xA;&#xA;def move_error_video_to_error_directory(video_file):&#xA;    print(f"Movendo arquivo de v&#xED;deo com erro {video_file} para {ERROR_VIDEOS_DIR}")&#xA;&#xA;    if not os.path.exists(ERROR_VIDEOS_DIR):&#xA;        os.makedirs(ERROR_VIDEOS_DIR)&#xA;                &#xA;    shutil.move(video_file, ERROR_VIDEOS_DIR)&#xA;&#xA;if __name__ == "__main__":&#xA;    process_and_upload_video()&#xA;&#xA;

    &#xA;

  • Anomalie #4598 (Fermé) : PHP 8 : Resource vs GdImage object problem.

    4 novembre 2020

    GD ne retourne plus une "resource", mais une instance de GdImage.

    Ça fait planter une partie des filtres images dans SPIP.
    Notamment s’il y a des tests avec is_resource()

    Exemple :

    Warning : Trying to access array offset on value of type bool in [...]ecrire/inc/filtres_images_lib_mini.php on line 1607 à 1610
    

    Qui provient de grosso modo :
    [(#CHEMINun_fichier.png|image_applatirico)]

    Docs

    - https://php.watch/versions/8.0/gdimage
    - La correction chez WP : https://core.trac.wordpress.org/ticket/50833

    Avec la solution proposée :

    Note that in PHP 7.2 and older, instanceOf operator requires an object. If you need to make your code function across PHP versions older than 7.3 through PHP 8.0, you will need an additional is_object() check :

    - if (is_resource($image))
    + if (is_resource($image) || (is_object($image) && $image instanceOf \GdImage))