
Recherche avancée
Médias (1)
-
Carte de Schillerkiez
13 mai 2011, par
Mis à jour : Septembre 2011
Langue : English
Type : Texte
Autres articles (65)
-
Websites made with MediaSPIP
2 mai 2011, parThis page lists some websites based on MediaSPIP.
-
Qu’est ce qu’un éditorial
21 juin 2013, parEcrivez votre de point de vue dans un article. Celui-ci sera rangé dans une rubrique prévue à cet effet.
Un éditorial est un article de type texte uniquement. Il a pour objectif de ranger les points de vue dans une rubrique dédiée. Un seul éditorial est placé à la une en page d’accueil. Pour consulter les précédents, consultez la rubrique dédiée.
Vous pouvez personnaliser le formulaire de création d’un éditorial.
Formulaire de création d’un éditorial Dans le cas d’un document de type éditorial, les (...) -
Creating farms of unique websites
13 avril 2011, parMediaSPIP platforms can be installed as a farm, with a single "core" hosted on a dedicated server and used by multiple websites.
This allows (among other things) : implementation costs to be shared between several different projects / individuals rapid deployment of multiple unique sites creation of groups of like-minded sites, making it possible to browse media in a more controlled and selective environment than the major "open" (...)
Sur d’autres sites (14041)
-
I created a Python code to capture live video using FFmpeg, but the output screen only shows noise
16 octobre 2024, par chun3 hyunThe code below is Python code that made my computer screen video capture in real time via ffmpeg.


When I run the code below, it goes well until a new window named 'Captured Frame' is created. But this 'Captured Frame' window doesn't show the full screen of my computer, and the gray screen is generating a lot of noise.


import cv2
import numpy as np
import subprocess

def frame_capture():
 # Set FFmpeg command (capture desired window or area)
 ffmpeg_command = [
 'ffmpeg',
 '-f', 'gdigrab', # Windows screen capture (using gdigrab)
 '-framerate', '30', # Setting the Frame Speed
 '-i', 'desktop', # What to capture (for example, full screen)
 '-pix_fmt', 'bgr0',
 '-vcodec', 'rawvideo', # Video codec settings
 '-tune', 'zerolatency',
 '-an', # Disable audio
 '-sn', # Disable Caption
 '-f', 'rawvideo', '-'
 ]

 # Running the FFmpeg process
 process = subprocess.Popen(ffmpeg_command, stdout=subprocess.PIPE, bufsize=10**8)

 while True:
 # Read Frame from FFmpeg (Resolution Example: 1920x1080)
 raw_frame = process.stdout.read(1920 * 1080 * 3) # 1920x1080 resolution, BGR format
 if not raw_frame:
 break # Shut down the loop when you can no longer receive frames

 # Converting frame data to a numpy array
 frame = np.frombuffer(raw_frame, np.uint8).reshape((1080, 1920, 3))

 # Add frame processing code here
 # Example: Showing a frame on the screen
 cv2.imshow('Captured Frame', frame)

 # Press the 'q' key to end
 if cv2.waitKey(1) & 0xFF == ord('q'):
 break

 # End of process and release of resources
 process.stdout.close()
 process.wait()
 cv2.destroyAllWindows()
frame_capture()



What could I have done wrong ? When I directly input the FFmpeg command in the Windows command prompt(knows as 'cmd') as shown below to save the video (in .mp4 format), I can see that the screen is output normally in the saved file. It seems that FFmpeg itself is installed correctly, but I don't know what the cause is.


hwnd=132554 -pix_fmt yuv420p -vf "scale=iw-mod(iw\,2):ih-mod(ih\,2)" -draw_mouse 1 -t 10 output.mp4



The handle number written above was the handle of the active Chrome window on my computer.


My ffmpeg version is 2024-10-10-git-0f5592cfc7-full_build-www.gyan.dev My Python version is 3.12.4
My Windows version and build are as specified below.
:Windows 11 Home, 10.0.22631


Capturing the computer screen with FFmpeg. I tried it, but the output screen shows only noise.


-
swscale/x86/input.asm : add x86-optimized planer rgb2yuv functions
24 novembre 2021, par Mark Reidswscale/x86/input.asm : add x86-optimized planer rgb2yuv functions
sse2 only operates on 2 lanes per loop for to_y and to_uv functions, due
to the lack of pmulld instruction. Emulating pmulld with 2 pmuludq and shuffles
proved too costly and made to_uv functions slower then the c implementation.For to_y on sse2 only float functions are generated,
I was are not able outperform the c implementation on the integer pixel formats.For to_a on see4 only the float functions are generated.
sse2 and sse4 generated nearly identical performing code on integer pixel formats,
so only sse2/avx2 versions are generated.planar_gbrp_to_y_512_c : 1197.5
planar_gbrp_to_y_512_sse4 : 444.5
planar_gbrp_to_y_512_avx2 : 287.5
planar_gbrap_to_y_512_c : 1204.5
planar_gbrap_to_y_512_sse4 : 447.5
planar_gbrap_to_y_512_avx2 : 289.5
planar_gbrp9be_to_y_512_c : 1380.0
planar_gbrp9be_to_y_512_sse4 : 543.5
planar_gbrp9be_to_y_512_avx2 : 340.0
planar_gbrp9le_to_y_512_c : 1200.5
planar_gbrp9le_to_y_512_sse4 : 442.0
planar_gbrp9le_to_y_512_avx2 : 282.0
planar_gbrp10be_to_y_512_c : 1378.5
planar_gbrp10be_to_y_512_sse4 : 544.0
planar_gbrp10be_to_y_512_avx2 : 337.5
planar_gbrp10le_to_y_512_c : 1200.0
planar_gbrp10le_to_y_512_sse4 : 448.0
planar_gbrp10le_to_y_512_avx2 : 285.5
planar_gbrap10be_to_y_512_c : 1380.0
planar_gbrap10be_to_y_512_sse4 : 542.0
planar_gbrap10be_to_y_512_avx2 : 340.5
planar_gbrap10le_to_y_512_c : 1199.0
planar_gbrap10le_to_y_512_sse4 : 446.0
planar_gbrap10le_to_y_512_avx2 : 289.5
planar_gbrp12be_to_y_512_c : 10563.0
planar_gbrp12be_to_y_512_sse4 : 542.5
planar_gbrp12be_to_y_512_avx2 : 339.0
planar_gbrp12le_to_y_512_c : 1201.0
planar_gbrp12le_to_y_512_sse4 : 440.5
planar_gbrp12le_to_y_512_avx2 : 286.0
planar_gbrap12be_to_y_512_c : 1701.5
planar_gbrap12be_to_y_512_sse4 : 917.0
planar_gbrap12be_to_y_512_avx2 : 338.5
planar_gbrap12le_to_y_512_c : 1201.0
planar_gbrap12le_to_y_512_sse4 : 444.5
planar_gbrap12le_to_y_512_avx2 : 288.0
planar_gbrp14be_to_y_512_c : 1370.5
planar_gbrp14be_to_y_512_sse4 : 545.0
planar_gbrp14be_to_y_512_avx2 : 338.5
planar_gbrp14le_to_y_512_c : 1199.0
planar_gbrp14le_to_y_512_sse4 : 444.0
planar_gbrp14le_to_y_512_avx2 : 279.5
planar_gbrp16be_to_y_512_c : 1364.0
planar_gbrp16be_to_y_512_sse4 : 544.5
planar_gbrp16be_to_y_512_avx2 : 339.5
planar_gbrp16le_to_y_512_c : 1201.0
planar_gbrp16le_to_y_512_sse4 : 445.5
planar_gbrp16le_to_y_512_avx2 : 280.5
planar_gbrap16be_to_y_512_c : 1377.0
planar_gbrap16be_to_y_512_sse4 : 545.0
planar_gbrap16be_to_y_512_avx2 : 338.5
planar_gbrap16le_to_y_512_c : 1201.0
planar_gbrap16le_to_y_512_sse4 : 442.0
planar_gbrap16le_to_y_512_avx2 : 279.0
planar_gbrpf32be_to_y_512_c : 4113.0
planar_gbrpf32be_to_y_512_sse2 : 2438.0
planar_gbrpf32be_to_y_512_sse4 : 1068.0
planar_gbrpf32be_to_y_512_avx2 : 904.5
planar_gbrpf32le_to_y_512_c : 3818.5
planar_gbrpf32le_to_y_512_sse2 : 2024.5
planar_gbrpf32le_to_y_512_sse4 : 1241.5
planar_gbrpf32le_to_y_512_avx2 : 657.0
planar_gbrapf32be_to_y_512_c : 3707.0
planar_gbrapf32be_to_y_512_sse2 : 2444.0
planar_gbrapf32be_to_y_512_sse4 : 1077.0
planar_gbrapf32be_to_y_512_avx2 : 909.0
planar_gbrapf32le_to_y_512_c : 3822.0
planar_gbrapf32le_to_y_512_sse2 : 2024.5
planar_gbrapf32le_to_y_512_sse4 : 1176.0
planar_gbrapf32le_to_y_512_avx2 : 658.5planar_gbrp_to_uv_512_c : 2325.8
planar_gbrp_to_uv_512_sse2 : 1726.8
planar_gbrp_to_uv_512_sse4 : 771.8
planar_gbrp_to_uv_512_avx2 : 506.8
planar_gbrap_to_uv_512_c : 2281.8
planar_gbrap_to_uv_512_sse2 : 1726.3
planar_gbrap_to_uv_512_sse4 : 768.3
planar_gbrap_to_uv_512_avx2 : 496.3
planar_gbrp9be_to_uv_512_c : 2336.8
planar_gbrp9be_to_uv_512_sse2 : 1924.8
planar_gbrp9be_to_uv_512_sse4 : 852.3
planar_gbrp9be_to_uv_512_avx2 : 552.8
planar_gbrp9le_to_uv_512_c : 2270.3
planar_gbrp9le_to_uv_512_sse2 : 1512.3
planar_gbrp9le_to_uv_512_sse4 : 764.3
planar_gbrp9le_to_uv_512_avx2 : 491.3
planar_gbrp10be_to_uv_512_c : 2281.8
planar_gbrp10be_to_uv_512_sse2 : 1917.8
planar_gbrp10be_to_uv_512_sse4 : 855.3
planar_gbrp10be_to_uv_512_avx2 : 541.3
planar_gbrp10le_to_uv_512_c : 2269.8
planar_gbrp10le_to_uv_512_sse2 : 1515.3
planar_gbrp10le_to_uv_512_sse4 : 759.8
planar_gbrp10le_to_uv_512_avx2 : 487.8
planar_gbrap10be_to_uv_512_c : 2382.3
planar_gbrap10be_to_uv_512_sse2 : 1924.8
planar_gbrap10be_to_uv_512_sse4 : 855.3
planar_gbrap10be_to_uv_512_avx2 : 540.8
planar_gbrap10le_to_uv_512_c : 2382.3
planar_gbrap10le_to_uv_512_sse2 : 1512.3
planar_gbrap10le_to_uv_512_sse4 : 759.3
planar_gbrap10le_to_uv_512_avx2 : 484.8
planar_gbrp12be_to_uv_512_c : 2283.8
planar_gbrp12be_to_uv_512_sse2 : 1936.8
planar_gbrp12be_to_uv_512_sse4 : 858.3
planar_gbrp12be_to_uv_512_avx2 : 541.3
planar_gbrp12le_to_uv_512_c : 2278.8
planar_gbrp12le_to_uv_512_sse2 : 1507.3
planar_gbrp12le_to_uv_512_sse4 : 760.3
planar_gbrp12le_to_uv_512_avx2 : 485.8
planar_gbrap12be_to_uv_512_c : 2385.3
planar_gbrap12be_to_uv_512_sse2 : 1927.8
planar_gbrap12be_to_uv_512_sse4 : 855.3
planar_gbrap12be_to_uv_512_avx2 : 539.8
planar_gbrap12le_to_uv_512_c : 2377.3
planar_gbrap12le_to_uv_512_sse2 : 1516.3
planar_gbrap12le_to_uv_512_sse4 : 759.3
planar_gbrap12le_to_uv_512_avx2 : 484.8
planar_gbrp14be_to_uv_512_c : 2283.8
planar_gbrp14be_to_uv_512_sse2 : 1935.3
planar_gbrp14be_to_uv_512_sse4 : 852.3
planar_gbrp14be_to_uv_512_avx2 : 540.3
planar_gbrp14le_to_uv_512_c : 2276.8
planar_gbrp14le_to_uv_512_sse2 : 1514.8
planar_gbrp14le_to_uv_512_sse4 : 762.3
planar_gbrp14le_to_uv_512_avx2 : 484.8
planar_gbrp16be_to_uv_512_c : 2383.3
planar_gbrp16be_to_uv_512_sse2 : 1881.8
planar_gbrp16be_to_uv_512_sse4 : 852.3
planar_gbrp16be_to_uv_512_avx2 : 541.8
planar_gbrp16le_to_uv_512_c : 2378.3
planar_gbrp16le_to_uv_512_sse2 : 1476.8
planar_gbrp16le_to_uv_512_sse4 : 765.3
planar_gbrp16le_to_uv_512_avx2 : 485.8
planar_gbrap16be_to_uv_512_c : 2382.3
planar_gbrap16be_to_uv_512_sse2 : 1886.3
planar_gbrap16be_to_uv_512_sse4 : 853.8
planar_gbrap16be_to_uv_512_avx2 : 550.8
planar_gbrap16le_to_uv_512_c : 2381.8
planar_gbrap16le_to_uv_512_sse2 : 1488.3
planar_gbrap16le_to_uv_512_sse4 : 765.3
planar_gbrap16le_to_uv_512_avx2 : 491.8
planar_gbrpf32be_to_uv_512_c : 4863.0
planar_gbrpf32be_to_uv_512_sse2 : 3347.5
planar_gbrpf32be_to_uv_512_sse4 : 1800.0
planar_gbrpf32be_to_uv_512_avx2 : 1199.0
planar_gbrpf32le_to_uv_512_c : 4725.0
planar_gbrpf32le_to_uv_512_sse2 : 2753.0
planar_gbrpf32le_to_uv_512_sse4 : 1474.5
planar_gbrpf32le_to_uv_512_avx2 : 927.5
planar_gbrapf32be_to_uv_512_c : 4859.0
planar_gbrapf32be_to_uv_512_sse2 : 3269.0
planar_gbrapf32be_to_uv_512_sse4 : 1802.0
planar_gbrapf32be_to_uv_512_avx2 : 1201.5
planar_gbrapf32le_to_uv_512_c : 6338.0
planar_gbrapf32le_to_uv_512_sse2 : 2756.5
planar_gbrapf32le_to_uv_512_sse4 : 1476.0
planar_gbrapf32le_to_uv_512_avx2 : 908.5planar_gbrap_to_a_512_c : 383.3
planar_gbrap_to_a_512_sse2 : 66.8
planar_gbrap_to_a_512_avx2 : 43.8
planar_gbrap10be_to_a_512_c : 601.8
planar_gbrap10be_to_a_512_sse2 : 86.3
planar_gbrap10be_to_a_512_avx2 : 34.8
planar_gbrap10le_to_a_512_c : 602.3
planar_gbrap10le_to_a_512_sse2 : 48.8
planar_gbrap10le_to_a_512_avx2 : 31.3
planar_gbrap12be_to_a_512_c : 601.8
planar_gbrap12be_to_a_512_sse2 : 111.8
planar_gbrap12be_to_a_512_avx2 : 41.3
planar_gbrap12le_to_a_512_c : 385.8
planar_gbrap12le_to_a_512_sse2 : 75.3
planar_gbrap12le_to_a_512_avx2 : 39.8
planar_gbrap16be_to_a_512_c : 386.8
planar_gbrap16be_to_a_512_sse2 : 79.8
planar_gbrap16be_to_a_512_avx2 : 31.3
planar_gbrap16le_to_a_512_c : 600.3
planar_gbrap16le_to_a_512_sse2 : 40.3
planar_gbrap16le_to_a_512_avx2 : 30.3
planar_gbrapf32be_to_a_512_c : 1148.8
planar_gbrapf32be_to_a_512_sse2 : 611.3
planar_gbrapf32be_to_a_512_sse4 : 234.8
planar_gbrapf32be_to_a_512_avx2 : 183.3
planar_gbrapf32le_to_a_512_c : 851.3
planar_gbrapf32le_to_a_512_sse2 : 263.3
planar_gbrapf32le_to_a_512_sse4 : 199.3
planar_gbrapf32le_to_a_512_avx2 : 156.8Reviewed-by : Paul B Mahol <onemda@gmail.com>
Signed-off-by : James Almer <jamrial@gmail.com> -
ffmpeg chains parameters and options while being used in a loop
10 janvier 2024, par Simon NazarenkoI got a code that generates videos from scratch (got gifs, captions and audio). It works amazing when done once, however, when put in a loop and it should create more than 1 video it freezes being caused by memory leak. Upon investigation I realized that ffmpeg (v1.1.0) chains the loop iterations carrying the parameters and options from the first iteration to the second. It then breaks (overwrites) the first video and infinitely writes the second.


This is my dependency


const ffmpeg = require("fluent-ffmpeg")()
 .setFfprobePath(ffprobe.path)
 .setFfmpegPath(ffmpegInstaller.path)



It looks like this


async function convertGifToVideo(
 gifFile,
 audioFile,
 subtitlesFile,
 tempDirectory
) {
 return new Promise((resolve, reject) => {
 const outputFile = `${tempDirectory}/video_${Date.now()}.mp4`
 
 ffmpeg
 .input(gifFile)
 .inputFormat("gif")
 .inputOptions("-stream_loop -1")
 .input(audioFile)
 .outputOptions("-shortest")
 .outputOptions(`-vf subtitles=${subtitlesFile}`)
 .outputOptions("-report")
 .output(outputFile)
 .on("end", () => {
 console.log(`Combined ${gifFile} and ${audioFile} into ${outputFile}`)
 resolve(outputFile)
 })
 .on("error", (err, stdout, stderr) => {
 console.error("Error combining GIF and audio:", err)
 console.error("ffmpeg stdout:", stdout)
 console.error("ffmpeg stderr:", stderr)
 reject(err)
 })
 .run()
 })
}



And it's called in a loop


for (const key in script) {
 if (script.hasOwnProperty(key)) {
 ...stuff

 const videoFileName = await convertGifToVideo(
 gifFileName,
 audioFileName,
 subtitlesFileName,
 tempDirectory
 )
 }
 }



Here is a piece of log from the first video generation




ffmpeg started on 2024-01-10 at 02:58:52
Report written to "ffmpeg-20240110-025852.log"
Command line :
/home/simon/Documents/AFYTUBE/node_modules/@ffmpeg-installer/linux-x64/ffmpeg -f gif -stream_loop -1 -i ./temp/gif_funny_frogs.gif -i ./temp/funny_frogs.mp3 -y -shortest -vf "subtitles=./temp/funny_frogs.srt" -report ./temp/video_1704880732780.mp4




Here is a piece of log from the second one




/home/simon/Documents/AFYTUBE/node_modules/@ffmpeg-installer/linux-x64/ffmpeg -f gif -stream_loop -1 -i ./temp/gif_funny_frogs.gif -i ./temp/funny_frogs.mp3 -f gif -stream_loop -1 -i ./temp/gif_leg_exercises.gif -i ./temp/leg_exercises.mp3 -y -shortest -vf "subtitles=./temp/funny_frogs.srt" -report -shortest -vf "subtitles=./temp/leg_exercises.srt" -report ./temp/video_1704880732780.mp4 ./temp/video_1704880750879.mp4




Any ideas what I am doing wrong ?