
Recherche avancée
Médias (1)
-
Video d’abeille en portrait
14 mai 2011, par
Mis à jour : Février 2012
Langue : français
Type : Video
Autres articles (78)
-
Amélioration de la version de base
13 septembre 2013Jolie sélection multiple
Le plugin Chosen permet d’améliorer l’ergonomie des champs de sélection multiple. Voir les deux images suivantes pour comparer.
Il suffit pour cela d’activer le plugin Chosen (Configuration générale du site > Gestion des plugins), puis de configurer le plugin (Les squelettes > Chosen) en activant l’utilisation de Chosen dans le site public et en spécifiant les éléments de formulaires à améliorer, par exemple select[multiple] pour les listes à sélection multiple (...) -
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 (...)
Sur d’autres sites (11173)
-
HLS playback stopped with Player error : mediaError - bufferAppendError
23 janvier, par SumoanandI am trying to merge two videos together in the m3u8 manifest file.
However, exactly at the point to HLS stream discontinuity, video playback stops with following error :
Player error : mediaError - bufferAppendError


Here is the sample m3u8 snippet :


#EXT-X-PROGRAM-DATE-TIME:2025-01-23T01:23:10.200-06:00
#EXTINF:6.000
17.ts
#EXT-X-PROGRAM-DATE-TIME:2025-01-23T01:23:16.200-06:00
#EXTINF:6.000
18.ts
#EXT-X-DISCONTINUITY
#EXT-X-KEY:METHOD=NONE
#EXT-X-PROGRAM-DATE-TIME:2025-01-23T01:23:21.700-06:00
#EXTINF:6.000
10ak171685189367-007cb1c1a5398250e495vHD.20.ts
#EXT-X-PROGRAM-DATE-TIME:2025-01-23T01:23:27.700-06:00
#EXTINF:6.000
10ak171685189367-007cb1c1a5398250e495vHD.21.ts



FFprobe output of 18.ts :


Duration: 00:00:06.01, start: 1692.774667, bitrate: 3440 kb/s
 Program 1 
 Stream #0:0[0x100]: Video: h264 (High) ([27][0][0][0] / 0x001B), yuv420p(progressive), 1280x720 [SAR 1:1 DAR 16:9], 30 fps, 30 tbr, 90k tbn
 Stream #0:1[0x101]: Audio: aac (LC) ([15][0][0][0] / 0x000F), 48000 Hz, stereo, fltp, 159 kb/s



FFprobe output of 10ak171685189367-007cb1c1a5398250e495vHD.20.ts :


Duration: 00:00:06.02, start: 1.443444, bitrate: 744 kb/s
 Program 1 
 Metadata:
 Stream #0:0[0x100]: Video: h264 (High) ([27][0][0][0] / 0x001B), yuv420p(progressive), 1280x720 [SAR 1:1 DAR 16:9], 30 fps, 30 tbr, 90k tbn
 Stream #0:1[0x101](eng): Audio: aac (LC) ([15][0][0][0] / 0x000F), 44100 Hz, stereo, fltp, 65 kb/s



I would greatly appreciate any inputs.


-
Stream H264 raw data on RTSP server
1er janvier, par AitazazI have H264 hex string data saved in a list.
The data is in correct format as it is being received, I am trying to stream it to RTSP server.


I have stream the data in realtime as it is from a dashcam.


The RTSP server is deployed but when I stream frames to it, the connection is created and then ends in an instant (does not last for a second)


The code is mentioned below which performs this streaming task.


def h264_stream_to_rtsp(data_list, rtsp_url):
 try:
 ffmpeg_command = [
 "ffmpeg", 
 "-f", "h264",
 "-i", "-",
 "-vcodec", "libx264",
 "-preset", "fast",
 "-f", "rtsp",
 "-analyzeduration", "5000000",
 "-probesize", "5000000", 
 rtsp_url # The RTSP URL to stream to
 ]
 
 ffmpeg_process = subprocess.Popen(ffmpeg_command, stdin=subprocess.PIPE)

 for index, hex_data in enumerate(data_list):
 # print(f"Processing hex data {index + 1}/{len(data_list)}...")

 if len(hex_data) % 2 != 0:
 hex_data = '0' + hex_data # Append a leading zero if length is odd

 binary_data = binascii.unhexlify(hex_data)

 ffmpeg_process.stdin.write(binary_data)

 ffmpeg_process.stdin.close()

 ffmpeg_process.wait()
 print("Stream completed.")

 except KeyboardInterrupt:
 print("Stopping live stream.")
 except Exception as e:
 print(f"Error: {e}")



Logs from the RTSP server are mentioned below :


2025/01/01 10:56:04 INF [RTSP] [conn 20.174.9.78:35474] opened
2025/01/01 10:56:04 INF [RTSP] [session 1d2bb871] created by 20.174.9.78:35474
2025/01/01 10:56:04 INF [RTSP] [session 1d2bb871] is publishing to path 'live', 1 track (H264)
2025/01/01 10:56:04 INF [RTSP] [session 1d2bb871] destroyed: torn down by 20.174.9.78:35474
2025/01/01 10:56:04 INF [RTSP] [conn 20.174.9.78:35474] closed: EOF
2025/01/01 10:56:48 INF [RTSP] [conn 20.174.9.78:54448] opened
2025/01/01 10:56:48 INF [RTSP] [session b6a95e71] created by 20.174.9.78:54448
2025/01/01 10:56:48 INF [RTSP] [session b6a95e71] is publishing to path 'live', 1 track (H264)
2025/01/01 10:56:48 INF [RTSP] [session b6a95e71] destroyed: torn down by 20.174.9.78:54448



How can I stream continuously ?


-
Can I use the file buffer or stream as input for fluent-ffmpeg ? I am trying to avoid saving the video locally to get its path before removing
22 avril 2023, par Moath ThawahrehI am receiving the file via an api, I was trying to process the file.buffer as input for FFmpeg but it did not work, I had to save the video locally first and then process the path and remove the saved video later on.
I don't want to believe that there is no other way to solve this and I have been looking for solutions and workarounds but it was all about ffmpeg input as a path.


I would love to find a solution using fluent-ffmpeg because it has some other great features, but I won't mind any suggestions for compressing the video using any different approaches if it's more efficient


Again my code below works fine but I have to save the video and then remove it I am hoping for a more efficient solution :


fs.writeFileSync('temp.mp4', file.buffer);

 // Resize the temporary file using ffmpeg
 ffmpeg('temp.mp4') // here I tried pass file.buffer as readable stream,it receives paths only 
 .format('mp4')
 .size('50%')
 .save('resized.mp4')
 .on('end', async () => {
 // Upload the resized file to Firebase
 const resizedFileStream = bucket.file(`video/${uniqueId}`).createWriteStream();
 fs.createReadStream('resized.mp4').pipe(resizedFileStream);

 await new Promise<void>((resolve, reject) => {
 resizedFileStream
 .on('finish', () => {
 // Remove the local files after they have been uploaded
 fs.unlinkSync('temp.mp4');
 fs.unlinkSync('resized.mp4');
 resolve();
 })
 .on('error', reject);
 });

 // Get the URL of the uploaded resized version
 const resizedFile = bucket.file(`video/${uniqueId}`);
 const url = await resizedFile.getSignedUrl({
 action: 'read',
 expires: '03-17-2025', // Change this to a reasonable expiration date
 });

 console.log('Resized file uploaded successfully.');
 })
 .on('error', (err) => {
 console.log('An error occurred: ' + err.message);
 });
</void>