
Recherche avancée
Médias (91)
-
Collections - Formulaire de création rapide
19 février 2013, par
Mis à jour : Février 2013
Langue : français
Type : Image
-
Les Miserables
4 juin 2012, par
Mis à jour : Février 2013
Langue : English
Type : Texte
-
Ne pas afficher certaines informations : page d’accueil
23 novembre 2011, par
Mis à jour : Novembre 2011
Langue : français
Type : Image
-
The Great Big Beautiful Tomorrow
28 octobre 2011, par
Mis à jour : Octobre 2011
Langue : English
Type : Texte
-
Richard Stallman et la révolution du logiciel libre - Une biographie autorisée (version epub)
28 octobre 2011, par
Mis à jour : Octobre 2011
Langue : English
Type : Texte
-
Rennes Emotion Map 2010-11
19 octobre 2011, par
Mis à jour : Juillet 2013
Langue : français
Type : Texte
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, parDiogene 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, parMediaSPIP 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 azhiWhen 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 ZI 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 leejhI'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 ?