
Recherche avancée
Médias (91)
-
Spoon - Revenge !
15 septembre 2011, par
Mis à jour : Septembre 2011
Langue : English
Type : Audio
-
My Morning Jacket - One Big Holiday
15 septembre 2011, par
Mis à jour : Septembre 2011
Langue : English
Type : Audio
-
Zap Mama - Wadidyusay ?
15 septembre 2011, par
Mis à jour : Septembre 2011
Langue : English
Type : Audio
-
David Byrne - My Fair Lady
15 septembre 2011, par
Mis à jour : Septembre 2011
Langue : English
Type : Audio
-
Beastie Boys - Now Get Busy
15 septembre 2011, par
Mis à jour : Septembre 2011
Langue : English
Type : Audio
-
Granite de l’Aber Ildut
9 septembre 2011, par
Mis à jour : Septembre 2011
Langue : français
Type : Texte
Autres articles (75)
-
Le profil des utilisateurs
12 avril 2011, parChaque utilisateur dispose d’une page de profil lui permettant de modifier ses informations personnelle. Dans le menu de haut de page par défaut, un élément de menu est automatiquement créé à l’initialisation de MediaSPIP, visible uniquement si le visiteur est identifié sur le site.
L’utilisateur a accès à la modification de profil depuis sa page auteur, un lien dans la navigation "Modifier votre profil" est (...) -
Configurer la prise en compte des langues
15 novembre 2010, parAccéder à la configuration et ajouter des langues prises en compte
Afin de configurer la prise en compte de nouvelles langues, il est nécessaire de se rendre dans la partie "Administrer" du site.
De là, dans le menu de navigation, vous pouvez accéder à une partie "Gestion des langues" permettant d’activer la prise en compte de nouvelles langues.
Chaque nouvelle langue ajoutée reste désactivable tant qu’aucun objet n’est créé dans cette langue. Dans ce cas, elle devient grisée dans la configuration et (...) -
Les tâches Cron régulières de la ferme
1er décembre 2010, parLa gestion de la ferme passe par l’exécution à intervalle régulier de plusieurs tâches répétitives dites Cron.
Le super Cron (gestion_mutu_super_cron)
Cette tâche, planifiée chaque minute, a pour simple effet d’appeler le Cron de l’ensemble des instances de la mutualisation régulièrement. Couplée avec un Cron système sur le site central de la mutualisation, cela permet de simplement générer des visites régulières sur les différents sites et éviter que les tâches des sites peu visités soient trop (...)
Sur d’autres sites (9148)
-
Record video with Xvfb + FFmpeg using Selenium in headless mode
12 mars 2024, par ifdef14I am trying to record video using Selenium in headless mode. I am using Xvfb and FFmpeg bindings for Python. I've already tried :


import subprocess
import threading
import time

from chromedriver_py import binary_path
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from xvfbwrapper import Xvfb


def record_video(xvfb_width, xvfb_height, xvfb_screen_num):
 subprocess.call(
 [
 'ffmpeg',
 '-f',
 'x11grab',
 '-video_size',
 f'{xvfb_width}x{xvfb_height}',
 '-i',
 xvfb_screen_num,
 '-codec:v',
 'libx264',
 '-r',
 '12',
 'videos/video.mp4',
 ]
 )


with Xvfb() as xvfb:
 '''
 xvfb.xvfb_cmd[1]) returns scren num
 :217295622
 :319294854
 :
 '''
 xvfb_width, xvfb_height, xvfb_screen_num = xvfb.width, xvfb.height, xvfb.xvfb_cmd[1]
 thread = threading.Thread(target=record_video, args=(xvfb_width, xvfb_height, xvfb_screen_num))
 thread.start()
 opts = webdriver.ChromeOptions()
 opts.add_argument('--headless')
 try:
 driver = webdriver.Chrome(service=Service(executable_path=binary_path), options=opts)
 finally:
 driver.close()
 driver.quit()




As much as I understand
xvfb.xvfb_cmd[1]
returns an information about virtual display isn't it ? When I executed this script, I got the error message :

[x11grab @ 0x5e039cfe2280] Failed to query xcb pointer0.00 bitrate=N/A speed=N/A 
:1379911620: Generic error in an external library



I also tried to use the following commands :


xvfb-run --listen-tcp --server-num 1 --auth-file /tmp/xvfb.auth -s "-ac -screen 0 1920x1080x24" python main.py &


ffmpeg -f x11grab -video_size 1920x1080 -i :1 -codec:v libx264 -r 12 videos/video.mp4


In the commands above, there are used
xvfb-run --server-num 1
andffmpeg -i :1
, why ?

Overall, when Selenium is running in the headless mode what's going on behind the scenes ? Is it using virtual display ? If yes, how can I detect display id of this, etc. Am I on the right path ?


I am not using Docker or any kind of virtualization. All kind of tests are running on my local Ubuntu machine.


-
RTSP stream to ffmpeg problems
14 octobre 2022, par maeekI'm writing a web application for managing and viewing streams from ONVIF ip-cameras.

It's written in nodejs. The idea is to run a child process in node and pipe output to node, then send the buffer to client and render it on canvas. I have a working solution for sending data to client and rendering it on canvas using websockets but it only works on one of my cameras.

I own 2 IP cameras and both of them have rtsp server.

One of them(let's name it camX) kind of works with this ffmpeg command (sometimes it just stops, maybe due to packet losses) :

ffmpeg -rtsp_transport tcp -re -i -f mjpeg pipe:1



But the other one(camY) returns
Nonmatching transport in server reply
and exits.

I discovered that the camY transport is
unicast
but ffmpeg doesn't support this particular lower_transport as I read on ffmpeg forum.

So I started looking for a solution. My first idea was to use
openRTSP
which works fine with both streams.
I looked at the documentation and came up with this command :

openRTSP -4 -c | ffmpeg -re -i pipe:0 -f mjpeg pipe:1

-4
parameter returns stream to pipe in mp4 format

And here's another problem I ran into, ffmpeg returns :

[mov,mp4,m4a,3gp,3g2,mj2 @ 0x559a4b6ba900] moov atom not found 
pipe:0: Invalid data found when processing input



Is there any way to make this work ?
I tried various solutions I found, but none of them worked.


EDIT


As @Gyan suggested I used
-i
parameter instead of-4
but it didn't solve my problem.

My command :


openRTSP -V -i -c -K | ffmpeg -loglevel debug -re -i pipe:0 -f mjpeg pipe:1
 
Created receiver for "video/H264" subsession (client ports 49072-49073)
Setup "video/H264" subsession (client ports 49072-49073)
AVIFileSink::setWord(): SeekFile64 failed (err 29)
AVIFileSink::setWord(): SeekFile64 failed (err 29)
AVIFileSink::setWord(): SeekFile64 failed (err 29)
AVIFileSink::setWord(): SeekFile64 failed (err 29)
AVIFileSink::setWord(): SeekFile64 failed (err 29)
AVIFileSink::setWord(): SeekFile64 failed (err 29)
AVIFileSink::setWord(): SeekFile64 failed (err 29)
AVIFileSink::setWord(): SeekFile64 failed (err 29)
AVIFileSink::setWord(): SeekFile64 failed (err 29)
Outputting to the file: "stdout"
[avi @ 0x5612944268c0] Format avi probed with size=2048 and score=100
[avi @ 0x56129442f7a0] use odml:1
Started playing session
Receiving streamed data (signal with "kill -HUP 15028" or "kill -USR1 15028" to terminate)...
^C
[AVIOContext @ 0x56129442f640] Statistics: 16904 bytes read, 0 seeks
pipe:0: Invalid data found when processing input



As you can see openRTSP command return err 29 but in meantime it outputs some data to pipe.

When I terminate the command ffmpeg shows that it read some data but couldn't process it.

Here's the function that produces that error :


void AVIFileSink::setWord(unsigned filePosn, unsigned size) {
 do {
 if (SeekFile64(fOutFid, filePosn, SEEK_SET) < 0) break;
 addWord(size);
 if (SeekFile64(fOutFid, 0, SEEK_END) < 0) break; // go back to where we were

 return;
 } while (0);

 // One of the SeekFile64()s failed, probable because we're not a seekable file
 envir() << "AVIFileSink::setWord(): SeekFile64 failed (err "
 << envir().getErrno() << ")\n";
}



In my opinion it looks like it won't be able to seek file because it's a stream not a static file.

Any suggestion for a workaround ?

-
atrac3 : fix error handling
9 juillet 2013, par Luca Barbato