
Recherche avancée
Médias (2)
-
Exemple de boutons d’action pour une collection collaborative
27 février 2013, par
Mis à jour : Mars 2013
Langue : français
Type : Image
-
Exemple de boutons d’action pour une collection personnelle
27 février 2013, par
Mis à jour : Février 2013
Langue : English
Type : Image
Autres articles (56)
-
Organiser par catégorie
17 mai 2013, parDans MédiaSPIP, une rubrique a 2 noms : catégorie et rubrique.
Les différents documents stockés dans MédiaSPIP peuvent être rangés dans différentes catégories. On peut créer une catégorie en cliquant sur "publier une catégorie" dans le menu publier en haut à droite ( après authentification ). Une catégorie peut être rangée dans une autre catégorie aussi ce qui fait qu’on peut construire une arborescence de catégories.
Lors de la publication prochaine d’un document, la nouvelle catégorie créée sera proposée (...) -
Multilang : améliorer l’interface pour les blocs multilingues
18 février 2011, parMultilang est un plugin supplémentaire qui n’est pas activé par défaut lors de l’initialisation de MediaSPIP.
Après son activation, une préconfiguration est mise en place automatiquement par MediaSPIP init permettant à la nouvelle fonctionnalité d’être automatiquement opérationnelle. Il n’est donc pas obligatoire de passer par une étape de configuration pour cela. -
Les autorisations surchargées par les plugins
27 avril 2010, parMediaspip core
autoriser_auteur_modifier() afin que les visiteurs soient capables de modifier leurs informations sur la page d’auteurs
Sur d’autres sites (7152)
-
FFMPEG - Why can't i record a video for more than 10 seconds ?
12 février 2020, par gabrielI’m developing a screen recorder for windows with python but for some reason i can’t record the video for more than 10 seconds.However i can record the audio for more than 10 seconds.
Also i’m using :FFMPEG - to record the video with mp4 extension
PYAUDIO - to record the sound
TKINTER - to design the GUI
Since the problem is with the video recording i will leave the code that i used with ffmpeg :
"""
cmdGen.py generates ffmpeg commands to record your screen
"""
import os
class cmdGen:
def __init__(self):
self.fps = 60
self.source = "desktop"
self.encoder = 'mpeg4'
self.hwaccel = None
self.drawMouse = 1
self.enableWebcam = False
self.audList = 0
def config(self,
fps=None,source=None,encoder=None,
hwaccel='unchanged',drawMouse=None,
webcam=None,audList=None):
if fps: self.fps = fps
if source: self.source = source
if encoder: self.encoder = encoder
if hwaccel != 'unchanged': self.hwaccel = hwaccel
if drawMouse: self.drawMouse = 0 if not self.drawMouse else 1
if webcam: self.enableWebcam = bool(webcam)
if audList: self.audList = audList
def setSource(self,isWindow,windowName=""):
if not isWindow:
self.source = "desktop"
else:
self.source = "title="+windowName
def setFps(self,fps):
self.fps = fps
def setEncode(self,encoder):
self.encoder = encoder
def getCmd(self,filename):
print("ACK")
finalCmd = ["ffmpeg.exe","-f","gdigrab"]
finalCmd.extend(['-i',self.source])
finalCmd.extend(['-framerate',str(self.fps)])
finalCmd.extend(['-c:v',self.encoder])
if self.encoder == 'mpeg4':
finalCmd.extend(['-q:v','7'])
if self.hwaccel:
finalCmd.extend(['-hwaccel',self.hwaccel])
finalCmd.extend(['-draw_mouse',str(self.drawMouse)])
finalCmd.extend(["-y", filename])
print(finalCmd)
return finalCmd
def getCvtCmd(self,filename):
# if self.rcchecked.get():
# self.mergeProcess = subprocess.Popen(args= ["ffmpeg","-i",'tmp/tmp.mkv','-i','tmp/tmp.wav','-i','tmp/webcamtmp.mkv','-filter_complex','[2:v] scale=640:-1 [inner]; [0:0][inner] overlay=0:0 [out]',"-shortest",'-map','[out]','-y',"ScreenCaptures/"+self.filename])
# else:
# self.mergeProcess = subprocess.Popen(args= ["ffmpeg","-i",'tmp/tmp.mkv','-i','tmp/tmp.wav',"-shortest",'-y',"ScreenCaptures/"+self.filename], startupinfo=startupinfo)
print("ACK")
finalCmd = ["ffmpeg.exe"]
finalCmd.extend(['-i','tmp/tmp.mkv'])
for i in range(len(self.audList)):
finalCmd.extend(['-i','tmp/tmp_'+str(i)+'.wav'])
if len(self.audList) > 0:
finalCmd.extend(['-filter_complex','amerge=inputs='+str(len(self.audList)),'-ac',str(len(self.audList))])
# finalCmd.extend(['-c:v',self.encoder])
if self.enableWebcam:
finalCmd.extend(['-i','tmp/webcamtmp.mkv','-filter_complex','[2:v] scale=640:-1 [inner]; [0:0][inner] '
'overlay=0:0 [out]','-map','[out]'])
#finalCmd.extend(['-shortest'])
finalCmd.extend(["-y", filename])
print(finalCmd)
return finalCmd
if __name__ == "__main__":
cg = cmdGen()
cg.setEncode("h264_nvenc")
cg.setFps(60)
cg.setSource(False)
print(cg.getCmd("tmp"))Thanks guys
Full log trying to record 1 minute :
C:\Users\FabianoFreitas\AppData\Local\Programs\Python\Python37\python.exe C:/Users/FabianoFreitas/Desktop/PowerShare-v2.0/screenRecorder.py
ACK
['ffmpeg.exe', '-f', 'gdigrab', '-i', 'desktop', '-framerate', '60', '-c:v', 'mpeg4', '-q:v', '7', '-draw_mouse', '1', '-y', 'tmp/tmp.mkv']
* recording
ACK
['ffmpeg.exe', '-i', 'tmp/tmp.mkv', '-i', 'tmp/tmp_0.wav', '-filter_complex', 'amerge=inputs=1', '-ac', '1', '-y', 'Videos/ScreenCapture24.mp4']
* done recording
ffmpeg version git-2020-02-05-e6891d1 Copyright (c) 2000-2020 the FFmpeg developers
built with gcc 9.2.1 (GCC) 20200122
configuration: --enable-gpl --enable-version3 --enable-sdl2 --enable-fontconfig --enable-gnutls --enable-iconv --enable-libass --enable-libdav1d --enable-libbluray --enable-libfreetype --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libtheora --enable-libtwolame --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxml2 --enable-libzimg --enable-lzma --enable-zlib --enable-gmp --enable-libvidstab --enable-libvorbis --enable-libvo-amrwbenc --enable-libmysofa --enable-libspeex --enable-libxvid --enable-libaom --enable-libmfx --enable-ffnvcodec --enable-cuvid --enable-d3d11va --enable-nvenc --enable-nvdec --enable-dxva2 --enable-avisynth --enable-libopenmpt --enable-amf
libavutil 56. 39.100 / 56. 39.100
libavcodec 58. 67.101 / 58. 67.101
libavformat 58. 37.100 / 58. 37.100
libavdevice 58. 9.103 / 58. 9.103
libavfilter 7. 74.100 / 7. 74.100
libswscale 5. 6.100 / 5. 6.100
libswresample 3. 6.100 / 3. 6.100
libpostproc 55. 6.100 / 55. 6.100
Input #0, matroska,webm, from 'tmp/tmp.mkv':
Metadata:
ENCODER : Lavf58.37.100
Duration: N/A, start: 0.000000, bitrate: N/A
Stream #0:0: Video: mpeg4 (Simple Profile), yuv420p, 2560x1080 [SAR 1:1 DAR 64:27], 29.97 fps, 29.97 tbr, 1k tbn, 30k tbc (default)
Metadata:
ENCODER : Lavc58.67.101 mpeg4
Guessed Channel Layout for Input Stream #1.0 : stereo
Input #1, wav, from 'tmp/tmp_0.wav':
Duration: 00:01:09.08, bitrate: 1411 kb/s
Stream #1:0: Audio: pcm_s16le ([1][0][0][0] / 0x0001), 44100 Hz, stereo, s16, 1411 kb/s
Stream mapping:
Stream #1:0 (pcm_s16le) -> amerge (graph 0)
amerge (graph 0) -> Stream #0:0 (aac)
Stream #0:0 -> #0:1 (mpeg4 (native) -> h264 (libx264))
Press [q] to stop, [?] for help
[Parsed_amerge_0 @ 00000218cb4c1640] No channel layout for input 1
[libx264 @ 00000218cb4acdc0] using SAR=1/1
[libx264 @ 00000218cb4acdc0] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2 AVX FMA3 BMI2 AVX2
[libx264 @ 00000218cb4acdc0] profile High, level 5.0, 4:2:0, 8-bit
[libx264 @ 00000218cb4acdc0] 264 - core 159 - H.264/MPEG-4 AVC codec - Copyleft 2003-2019 - http://www.videolan.org/x264.html - options: cabac=1 ref=3 deblock=1:0:0 analyse=0x3:0x113 me=hex subme=7 psy=1 psy_rd=1.00:0.00 mixed_ref=1 me_range=16 chroma_me=1 trellis=1 8x8dct=1 cqm=0 deadzone=21,11 fast_pskip=1 chroma_qp_offset=-2 threads=12 lookahead_threads=2 sliced_threads=0 nr=0 decimate=1 interlaced=0 bluray_compat=0 constrained_intra=0 bframes=3 b_pyramid=2 b_adapt=1 b_bias=0 direct=1 weightb=1 open_gop=0 weightp=2 keyint=250 keyint_min=25 scenecut=40 intra_refresh=0 rc_lookahead=40 rc=crf mbtree=1 crf=23.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 ip_ratio=1.40 aq=1:1.00
Output #0, mp4, to 'Videos/ScreenCapture24.mp4':
Metadata:
encoder : Lavf58.37.100
Stream #0:0: Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, mono, fltp, 69 kb/s
Metadata:
encoder : Lavc58.67.101 aac
Stream #0:1: Video: h264 (libx264) (avc1 / 0x31637661), yuv420p, 2560x1080 [SAR 1:1 DAR 64:27], q=-1--1, 29.97 fps, 30k tbn, 29.97 tbc (default)
Metadata:
encoder : Lavc58.67.101 libx264
Side data:
cpb: bitrate max/min/avg: 0/0/0 buffer size: 0 vbv_delay: N/A
[matroska,webm @ 00000218cb44af00] File ended prematurely
frame= 297 fps=113 q=-1.0 Lsize= 2325kB time=00:01:09.07 bitrate= 275.8kbits/s dup=22 drop=0 speed=26.2x
video:1713kB audio:591kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.900237%
[aac @ 00000218cb4ab780] Qavg: 24995.135
[libx264 @ 00000218cb4acdc0] frame I:4 Avg QP:15.13 size:199596
[libx264 @ 00000218cb4acdc0] frame P:85 Avg QP:21.15 size: 9466
[libx264 @ 00000218cb4acdc0] frame B:208 Avg QP:24.93 size: 725
[libx264 @ 00000218cb4acdc0] consecutive B-frames: 5.1% 2.7% 6.1% 86.2%
[libx264 @ 00000218cb4acdc0] mb I I16..4: 48.0% 45.3% 6.7%
[libx264 @ 00000218cb4acdc0] mb P I16..4: 1.6% 1.9% 0.8% P16..4: 1.4% 0.4% 0.3% 0.0% 0.0% skip:93.7%
[libx264 @ 00000218cb4acdc0] mb B I16..4: 0.1% 0.1% 0.0% B16..8: 3.0% 0.1% 0.0% direct: 0.0% skip:96.6% L0:51.2% L1:48.3% BI: 0.6%
[libx264 @ 00000218cb4acdc0] 8x8 transform intra:44.4% inter:69.1%
[libx264 @ 00000218cb4acdc0] coded y,uvDC,uvAC intra: 23.8% 27.4% 19.5% inter: 0.2% 0.3% 0.1%
[libx264 @ 00000218cb4acdc0] i16 v,h,dc,p: 54% 45% 1% 0%
[libx264 @ 00000218cb4acdc0] i8 v,h,dc,ddl,ddr,vr,hd,vl,hu: 26% 20% 41% 2% 2% 1% 2% 1% 5%
[libx264 @ 00000218cb4acdc0] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 29% 35% 17% 2% 3% 3% 4% 2% 4%
[libx264 @ 00000218cb4acdc0] i8c dc,h,v,p: 61% 25% 11% 2%
[libx264 @ 00000218cb4acdc0] Weighted P-Frames: Y:0.0% UV:0.0%
[libx264 @ 00000218cb4acdc0] ref P L0: 68.0% 6.3% 16.6% 9.1%
[libx264 @ 00000218cb4acdc0] ref B L0: 70.2% 23.7% 6.1%
[libx264 @ 00000218cb4acdc0] ref B L1: 91.1% 8.9%
[libx264 @ 00000218cb4acdc0] kb/s:1415.80 -
How to record browser animation to video, on Server/VPS
11 novembre 2015, par Andy BI have one big question : How to record an animation that plays in the browser on a server/VPS ? We’re looking for a open/source or even proprietary solution.
The use-case :
We have an online project that generates animations and we want to record them on the server side.
Practically it’s as simple as that, as opening a url(eg : https://greensock.com/gsap) in the browser and record the animation.On the local PC it works if we use ffmpeg, but we want to record the video on the server side, especially on a VPS without GUI.
There are some solutions :
- Install a Lightweight GUI on the VPS, accesible through VNC
Something like this :
https://vpsboard.com/topic/2786-running-a-lightweight-gui-on-your-vps/Then create a cron job that will do the following :
- open the browser with the correct url and play the animation
- use ffmpeg to record the animation
- save the video somewhere
This solution allows a SINGLE execution thread at the same time and I don’t really like the setup.
- Use a fake X server
Create/use a fake X server, tell the browser to run in there, tell ffmpeg to record that screen !?
The question is : HOW ?
- Virtual Machines within the VPS
The question is : HOW ?
I would like to have the possibility to execute this job in a sort of container (be it docker or virtual machines within the VPS), having also the possibility to execute multiple jobs in parallel.
Thank you all in advance !
-
How to record 720p videos without dropping frames in Android
20 novembre 2015, par user2880229I compiled ffmpeg and h264 libraries for android using NDK.
I am recording videos using the muxing.c example from the ffmpeg library. Everything works correct (still haven’t worked on the audio) but the camera is dropping frames and it takes around 100ms to save each frame, which is unacceptable.I have also tried making a queue and saving them into another thread (let’s call it B) but at the end I need to wait for around 120 seconds because the background thread (B)is still recording the frames.
Is there a workaround for this issue, besides reducing the video size ? Ideally I would like to save the frames in real time, at least reduce the saving time. Is it just that Android is incapable of doing this ? .