
Recherche avancée
Autres articles (55)
-
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 (...) -
Contribute to translation
13 avril 2011You can help us to improve the language used in the software interface to make MediaSPIP more accessible and user-friendly. You can also translate the interface into any language that allows it to spread to new linguistic communities.
To do this, we use the translation interface of SPIP where the all the language modules of MediaSPIP are available. Just subscribe to the mailing list and request further informantion on translation.
MediaSPIP is currently available in French and English (...) -
Publier sur MédiaSpip
13 juin 2013Puis-je poster des contenus à partir d’une tablette Ipad ?
Oui, si votre Médiaspip installé est à la version 0.2 ou supérieure. Contacter au besoin l’administrateur de votre MédiaSpip pour le savoir
Sur d’autres sites (8826)
-
Can't view and record graph at the same time using FFMpegWriter [closed]
7 juillet 2024, par Barkın ÖzerSo this code is used for graphing and logging sensor data coming from bluetooth ports. I wanted to add an function that will record the graph in mp4 format. In order to achieve this I used ffmpegWriter. The issue is while this code records the graph I can't view the graph at the same time.


import serial
import matplotlib.pyplot as plt
from matplotlib.animation import FuncAnimation, FFMpegWriter
import openpyxl
from datetime import datetime

# Constants
GRAVITY = 9.81 # Standard gravity in m/s²

# Initialize serial connections to HC-06 devices
ser_x_accel = serial.Serial('COM4', 9600, timeout=1) # X-axis acceleration data
ser_y_angle = serial.Serial('COM11', 9600, timeout=1) # Y-axis angle data

# Initialize empty lists to store data
x_accel_data = []
y_angle_data = []
timestamps = []

# Initialize Excel workbook
wb = openpyxl.Workbook()
ws = wb.active
ws.title = "Sensor Data"
ws.append(["Timestamp", "X Acceleration (m/s²)", "Y Angle (degrees)"])

# Function to update the plot and log data
def update(frame):
 # Read data from serial connections
 line_x_accel = ser_x_accel.readline().decode('utf-8').strip()
 line_y_angle = ser_y_angle.readline().decode('utf-8').strip()
 
 try:
 # Parse and process X-axis acceleration data
 x_accel_g = float(line_x_accel) # Acceleration in g read from serial
 x_accel_ms2 = x_accel_g * GRAVITY # Convert from g to m/s²
 x_accel_data.append(x_accel_ms2)
 
 # Parse and process Y-axis angle data
 y_angle = float(line_y_angle)
 y_angle_data.append(y_angle)
 
 # Append timestamp
 timestamps.append(datetime.now())

 # Limit data points to show only the latest 100
 if len(x_accel_data) > 100:
 x_accel_data.pop(0)
 y_angle_data.pop(0)
 timestamps.pop(0)

 # Log data to Excel with timestamp
 timestamp_str = timestamps[-1].strftime("%H:%M:%S")
 ws.append([timestamp_str, x_accel_data[-1], y_angle_data[-1]])

 # Clear and update plots
 ax1.clear()
 ax1.plot(timestamps, x_accel_data, label='X Acceleration', color='b')
 ax1.legend(loc='upper left')
 ax1.set_ylim([-20, 20]) # Adjust based on expected acceleration range in m/s²
 ax1.set_title('Real-time X Acceleration Data')
 ax1.set_xlabel('Time')
 ax1.set_ylabel('Acceleration (m/s²)')
 ax1.grid(True)

 ax2.clear()
 ax2.plot(timestamps, y_angle_data, label='Y Angle', color='g')
 ax2.legend(loc='upper left')
 ax2.set_ylim([-180, 180])
 ax2.set_title('Real-time Y Angle Data')
 ax2.set_xlabel('Time')
 ax2.set_ylabel('Angle (degrees)')
 ax2.grid(True)

 # Update text boxes with latest values
 text_box.set_text(f'X Acceleration: {x_accel_data[-1]:.2f} m/s²')
 text_box2.set_text(f'Y Angle: {y_angle_data[-1]:.2f}°')
 
 # Save the workbook periodically (every 100 updates)
 if frame % 100 == 0:
 wb.save("sensor_data.xlsx")
 
 except ValueError:
 pass # Ignore lines that are not properly formatted

# Setup the plots
fig, (ax1, ax2) = plt.subplots(2, 1, figsize=(10, 8))
text_box = ax1.text(0.05, 0.95, '', transform=ax1.transAxes, fontsize=12, verticalalignment='top', bbox=dict(boxstyle='round', facecolor='wheat', alpha=0.5))
text_box2 = ax2.text(0.05, 0.95, '', transform=ax2.transAxes, fontsize=12, verticalalignment='top', bbox=dict(boxstyle='round', facecolor='wheat', alpha=0.5))

# Animate the plots
ani = FuncAnimation(fig, update, interval=100) # Update interval of 100ms

# Save the animation as a video file
writer = FFMpegWriter(fps=10, metadata=dict(artist='Me'), bitrate=1800)
ani.save("sensor_data.mp4", writer=writer)

plt.tight_layout()
plt.show()

# Save the workbook at the end of the session
wb.save("sensor_data.xlsx")




I tried using OpenCV to record the graph but then I didn't even got any recording. I think solving this issue with my original code would be a better approach.


-
Is there a way to change the ffplay playback speed while running
20 mai 2024, par richjhartI am trying to modify ffplay 7.0 to allow us to modify the playback speed while running. Our use-case only involves basic video-only mp4 files.


We can set the playback speed with something like the following :


ffplay -i ..\Video\SampleVideoLong.mp4 -vf "setpts=5.0*PTS" -loglevel debug -sync video


But I don't know how to change that option "live" (note if I don't choose
-sync video
, it gets very laggy - but that's fine as our use-case is video only.

I have tried the following (with just a fixed rate at the moment) :


{
 static double l_CurrentSpeed = 1.0;
 double l_NewSpeed = 2.0;
 double l_Diff = l_NewSpeed / l_CurrentSpeed;
 double l_ClockSpeed = cur_stream->extclk.speed;
 double l_NewClockSpeed = l_ClockSpeed * l_Diff;
 av_log(NULL, AV_LOG_DEBUG,
 "Changing speed from %f to %f\n",
 l_ClockSpeed, l_NewClockSpeed
 );

 set_clock_speed(&cur_stream->vidclk, l_NewClockSpeed);
 //set_clock(&cur_stream->vidclk, l_NewClockSpeed, cur_stream->extclk.serial);
 l_CurrentSpeed = l_NewSpeed;
 }



I've set both the pts (
set_clock()
) and the "speed" (set_clock_speed()
), but neither of these had any effect.

Would I need to something extra, or is there a way to update the
setpts
expression in the video filter from ffplay ?

Note the metadata of the file we are trying with is :


Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '..\Video\SampleVideoLong.mp4':
 Metadata:
 major_brand : isom
 minor_version : 512
 compatible_brands: isomiso2mp41
 encoder : Lavf61.1.100
 Duration: 00:18:10.56, start: 0.160000, bitrate: 1755 kb/s
 Stream #0:0[0x1](und), 1, 1/90000: Video: mpeg2video (Main), 1 reference frame (mp4v / 0x7634706D), yuv420p(tv, bt709, progressive, left), 1920x1080 [SAR 1:1 DAR 16:9], 0/1, 1754 kb/s, 25 fps, 25 tbr, 90k tbn (default)
 Metadata:
 handler_name : VideoHandler
 vendor_id : [0][0][0][0]
 encoder : XDCAM EX 1080p25
 Side data:
 cpb: bitrate max/min/avg: 0/0/0 buffer size: 278528 vbv_delay: N/A



I believe the files we'll be using should have identical or similar metadata.


-
How the ffmpeg is fixing Handle page termination with same page number ...? [closed]
11 avril 2024, par adarshIm working on the teletext subtitle feature and faced with subs not clearing issue.
the subtitle lines remain displayed until being replaced by a new version of the specific line. So the subtitles never disappear and often an old line is still displayed, after another, more recent line is displayed/updated.
take a look at the issue in this sample video file : https://code.videolan.org/videolan/vlc/uploads/58c2e1660e94e2df5e8cdb75edf531d9/GODFATHER__03_.ts
Issue reported : https://sourceforge.net/p/zapping/bugs/203/


The player is using ffmpeg and libzvbi library.


At first I suspected that the Erase Page Flag (C4) in the Page Header was not set, but the flag was indeed set (at least once between two LOPs with subtitles). After further debugging it turned out that the Teletext service in the two issues consists of just a single Teletext page - which is the reason here :


The Teletext spec defines the Magazine Serial Flag (C11) in Table 2 (ETSI EN 300 706 v1.2.1) as (bold font by me) :


When set to '1' the service is designated to be in Serial mode and the transmission of a page is terminated by the next page header with a different page number.
When set to '0' the service is designated to be in Parallel mode and the transmission of a page is terminated by the next page header with a different page number but the same magazine number.
The same setting shall be used for all page headers in the service.
(BTW it doesn't really matter, but in these two cases this flag is always 0)


In vbi_decode_teletext in /src/packet.c, storing the page is aborted, if the condition "page terminated" in the C11 definition is not met. But as the service here consists of only one page, this condition is never met !


Luckily, this issue was fixed in ffmpeg- https://github.com/FFmpeg/FFmpeg/commit/b1e0e216462a989a39e7b413aef6d32f8cedc154


and also in zvbi :
https://github.com/zapping-vbi/zvbi/commit/40a6ab0200c46b67b059b5b1fb15793ce780892a


I understand the root cause and fix in zvbi library, and how it is ignoring c4 flag in case the same page no.


But i want to understand how the ffmpeg fix is working ?
ffmpeg fix : https://github.com/FFmpeg/FFmpeg/commit/b1e0e216462a989a39e7b413aef6d32f8cedc154


what is the rule for repeated page headers ?