Recherche avancée

Médias (91)

Autres articles (84)

  • MediaSPIP en mode privé (Intranet)

    17 septembre 2013, par

    À partir de la version 0.3, un canal de MediaSPIP peut devenir privé, bloqué à toute personne non identifiée grâce au plugin "Intranet/extranet".
    Le plugin Intranet/extranet, lorsqu’il est activé, permet de bloquer l’accès au canal à tout visiteur non identifié, l’empêchant d’accéder au contenu en le redirigeant systématiquement vers le formulaire d’identification.
    Ce système peut être particulièrement utile pour certaines utilisations comme : Atelier de travail avec des enfants dont le contenu ne doit pas (...)

  • Diogene : création de masques spécifiques de formulaires d’édition de contenus

    26 octobre 2010, par

    Diogene est un des plugins ? SPIP activé par défaut (extension) lors de l’initialisation de MediaSPIP.
    A quoi sert ce plugin
    Création de masques de formulaires
    Le plugin Diogène permet de créer des masques de formulaires spécifiques par secteur sur les trois objets spécifiques SPIP que sont : les articles ; les rubriques ; les sites
    Il permet ainsi de définir en fonction d’un secteur particulier, un masque de formulaire par objet, ajoutant ou enlevant ainsi des champs afin de rendre le formulaire (...)

  • MediaSPIP version 0.1 Beta

    16 avril 2011, par

    MediaSPIP 0.1 beta est la première version de MediaSPIP décrétée comme "utilisable".
    Le fichier zip ici présent contient uniquement les sources de MediaSPIP en version standalone.
    Pour avoir une installation fonctionnelle, il est nécessaire d’installer manuellement l’ensemble des dépendances logicielles sur le serveur.
    Si vous souhaitez utiliser cette archive pour une installation en mode ferme, il vous faudra également procéder à d’autres modifications (...)

Sur d’autres sites (5078)

  • when use idb and ffmepg to record video, Appium Session lose

    6 septembre 2023, par azhi

    When use Appium to start the session and open app in iOS, connection will lost after using idb and ffmepg command to record video in java process. At the same time, Xcode will occur connection lost issue. If i open WDA again by manual in iPhone, tests again and connection will be normal. I tied switching port for WDA, unluckily it's the same result. Have any ideas for this, graceful for advice.

    


    test normal when use this way to record video.

    


    Appium log :

    
[Xcode] xcodebuild exited with code '65' and signal 'null' [HTTP] —> GET /session/f70eef73-ef99-4341-822f-d285d74a8614/timeouts [HTTP] {} [debug] [AppiumDriver@8f28] Encountered internal error running command : NoSuchDriverError : A session is either terminated or not started [debug] [AppiumDriver@8f28] at asyncHandler (/opt/homebrew/lib/node_modules/appium/node_modules/@appium/base-driver/lib/protocol/protocol.js:315:15) [debug] [AppiumDriver@8f28] at /opt/homebrew/lib/node_modules/appium/node_modules/@appium/base-driver/lib/protocol/protocol.js:518:15 [debug] [AppiumDriver@8f28] at Layer.handle [as handle_request] (/opt/homebrew/lib/node_modules/appium/node_modules/express/lib/router/layer.js:95:5) [debug] [AppiumDriver@8f28] at next (/opt/homebrew/lib/node_modules/appium/node_modules/express/lib/router/route.js:144:13) [debug] [AppiumDriver@8f28] at Route.dispatch (/opt/homebrew/lib/node_modules/appium/node_modules/express/lib/router/route.js:114:3) [debug] [AppiumDriver@8f28] at Layer.handle [as handle_request] (/opt/homebrew/lib/node_modules/appium/node_modules/express/lib/router/layer.js:95:5) [debug] [AppiumDriver@8f28] at /opt/homebrew/lib/node_modules/appium/node_modules/express/lib/router/index.js:284:15 [debug] [AppiumDriver@8f28] at param (/opt/homebrew/lib/node_modules/appium/node_modules/express/lib/router/index.js:365:14) [debug] [AppiumDriver@8f28] at param (/opt/homebrew/lib/node_modules/appium/node_modules/express/lib/router/index.js:376:14) [debug] [AppiumDriver@8f28] at Function.process_params (/opt/homebrew/lib/node_modules/appium/node_modules/express/lib/router/index.js:421:3) [debug] [AppiumDriver@8f28] at next (/opt/homebrew/lib/node_modules/appium/node_modules/express/lib/router/index.js:280:10) [debug] [AppiumDriver@8f28] at logger (/opt/homebrew/lib/node_modules/appium/node_modules/morgan/index.js:144:5) [debug] [AppiumDriver@8f28] at Layer.handle [as handle_request] (/opt/homebrew/lib/node_modules/appium/node_modules/express/lib/router/layer.js:95:5) [debug] [AppiumDriver@8f28] at trim_prefix (/opt/homebrew/lib/node_modules/appium/node_modules/express/lib/router/index.js:328:13) [debug] [AppiumDriver@8f28] at /opt/homebrew/lib/node_modules/appium/node_modules/express/lib/router/index.js:286:9 [debug] [AppiumDriver@8f28] at Function.process_params (/opt/homebrew/lib/node_modules/appium/node_modules/express/lib/router/index.js:346:12) [debug] [AppiumDriver@8f28] at next (/opt/homebrew/lib/node_modules/appium/node_modules/express/lib/router/index.js:280:10) [debug] [AppiumDriver@8f28] at jsonParser (/opt/homebrew/lib/node_modules/appium/node_modules/body-parser/lib/types/json.js:113:7) [debug] [AppiumDriver@8f28] at Layer.handle [as handle_request] (/opt/homebrew/lib/node_modules/appium/node_modules/express/lib/router/layer.js:95:5) [debug] [AppiumDriver@8f28] at trim_prefix (/opt/homebrew/lib/node_modules/appium/node_modules/express/lib/router/index.js:328:13) [debug] [AppiumDriver@8f28] at /opt/homebrew/lib/node_modules/appium/node_modules/express/lib/router/index.js:286:9 [debug] [AppiumDriver@8f28] at Function.process_params (/opt/homebrew/lib/node_modules/appium/node_modules/express/lib/router/index.js:346:12) [HTTP] GET /session/66e1fdca-4e8c-418e-a0d1-6d98779b874c/screenshot


  • How to update this script to generate HLS video with different resolution streams ? [closed]

    1er décembre 2023, par Andy Z

    I have the following FFmpeg script :

    


    ffmpeg -i video.mp4 -i video.vtt \
 -map 0:v -map 0:a:0 -map 1 \
 -s:v:0 1080x1920 -c:v:0 h264 -b:v:0 500K \
 -c:a:0 copy -c:a:1 copy -c:a:2 copy -c:s webvtt \
 -f hls -hls_playlist_type vod -var_stream_map "v:0,a:0,s:0" \
 -master_pl_name video.m3u8 -hls_time 6 -hls_list_size 0 -hls_allow_cache 1 -start_number 1 \
 -hls_segment_filename "output/hls/%v/seg-%d.ts" output/hls/%v/index.m3u8


    


    Currently it only produces one 1080x1920 stream, how do I produce more lower resolution ones so it can adjust based on client bandwidth ?

    


    Also, I've noticed that it doesn't add the reference to the VTT file to the master HLS playlist ; I had to add this manually but is there a way to make FFmpeg do it for me ?

    


    #EXT-X-MEDIA:TYPE=SUBTITLES,GROUP-ID="subs",NAME="English",DEFAULT=YES,AUTOSELECT=YES,FORCED=NO,LANGUAGE="en",CHARACTERISTICS="public.accessibility.transcribes-spoken-dialog",URI="0/index_vtt.m3u8"


    


    I've tried this, but I get an argument error :

    


    ffmpeg -i video.mp4 -i video.vtt \
 -map 0:v -map 0:a:0 -map 1 \
 -s:v:0 1080x1920 -c:v:0 h264 -b:v:0 500K \
 -s:v:1 720x1280 -c:v:1 h264 -b:v:1 300K \
 -s:v:2 480x854 -c:v:2 h264 -b:v:2 150K \
 -c:a:0 copy -c:a:1 copy -c:a:2 copy -c:s webvtt \
 -f hls -hls_playlist_type vod -var_stream_map "v:0,a:0,s:0 v:1,a:1 s:1 v:2,a:2 s:2" \
 -master_pl_name video.m3u8 -hls_time 6 -hls_list_size 0 -hls_allow_cache 1 -start_number 1 \
 -hls_segment_filename "output/hls/%v/seg-%d.ts" output/hls/%v/index.m3u8


    


  • How to run ffmpeg as a subprocess and wait for the task to finish (fastapi)

    4 octobre 2023, par leejh

    I'm creating a site that runs ffmpeg on the web using fastapi.

    


    @router.post("/dir/Conver") 
async def ffmpeg_Conversion(request: Request):
    data = await request.json()

    file_path = data.get('file_path')
    saturation = float(data.get('saturation', 1.0))  
    brightness = float(data.get('brightness', 0.0))  
    contrast = float(data.get('contrast', 1.0))
    size = data.get('size','3840x2160')
    bitlayer = data.get('bitlayer',8000)
    codec = data.get('codec','libx264')
    formatstr=data.get('format','MP4')


    savepath = './UserFolder' + file_path

    directory = os.path.dirname(savepath)
    last_directory = os.path.basename(savepath)
    
    last_directory=str(last_directory).split('.')[0]
    print("last_directory : ---------------------" + last_directory)

    current_datetime = datetime.datetime.now()
    formatted_datetime = current_datetime.strftime('%Y-%m-%d-%H-%M-%S-%f')


    ffmpeg_command = [
        'ffmpeg',
        '-i', savepath,
        '-vf', f'eq=saturation={1+saturation/100}:brightness={brightness/100}:contrast={1+contrast/100}',
        '-s', size,
        '-c:v', codec,
        '-preset', 'medium',
        '-b:v', bitlayer,
        directory+'/'+last_directory+"_"+formatted_datetime+"."+formatstr
    ]

    subprocess.check_output(ffmpeg_command, text=True)



    


    Using the code above, I created a function to convert the video.
And this function was given to a button on the web.

    


    FileChan_yes.addEventListener('click', async () => { 
            startRotation();


            const file_path = 'path_to_your_file';  
            const contrastValue = contrastSlider.value;
            const brightnessValue = lightnessSlider.value;
            const saturationValue = saturationSlider.value;

            const Dir=document.getElementById('last_action_link');
            const savepath = Dir.value;

            const codecDropValue = codecDrop.value; 
            const formatDropValue = formatDrop.value;
            const FileSizeDropValue = FileSizeDrop.value;
            const bitDropValue  =   bitDrop.value;


            try {
                const response = await fetch(`/dir/Conver`, {
                    method: 'POST',
                    headers: {
                        'Content-Type': 'application/json'
                    },
                    body: JSON.stringify({
                        file_path: savepath,
                        saturation: saturationValue,
                        brightness: brightnessValue,
                        contrast: contrastValue,
                        size: FileSizeDropValue,
                        bitlayer : bitDropValue,
                        codec : codecDropValue,
                        formatstr : formatDropValue
                    })
                    
                });

                
                if (response.ok) {
                    const result = await response.json();
                    console.log("Conversion successful:", result);
                } else {
                    throw new Error("Failed to convert the file.");
                }

            } catch (error) {
                console.error("Error converting the file:", error);
            } finally {
                stopRotation();
            }
            

        });



    


    When you press the button, first
startRotation() ; the function is executed

    


    When all tasks are completed, the stopRotation() ; function is configured to be executed.

    


    But currently it's not working properly...

    


    stopRotation() ; The function is executed as soon as the button is pressed.

    


    await doesn't seem to work. What is the problem ?