
Recherche avancée
Médias (91)
-
Collections - Formulaire de création rapide
19 février 2013, par
Mis à jour : Février 2013
Langue : français
Type : Image
-
Les Miserables
4 juin 2012, par
Mis à jour : Février 2013
Langue : English
Type : Texte
-
Ne pas afficher certaines informations : page d’accueil
23 novembre 2011, par
Mis à jour : Novembre 2011
Langue : français
Type : Image
-
The Great Big Beautiful Tomorrow
28 octobre 2011, par
Mis à jour : Octobre 2011
Langue : English
Type : Texte
-
Richard Stallman et la révolution du logiciel libre - Une biographie autorisée (version epub)
28 octobre 2011, par
Mis à jour : Octobre 2011
Langue : English
Type : Texte
-
Rennes Emotion Map 2010-11
19 octobre 2011, par
Mis à jour : Juillet 2013
Langue : français
Type : Texte
Autres articles (104)
-
MediaSPIP 0.1 Beta version
25 avril 2011, parMediaSPIP 0.1 beta is the first version of MediaSPIP proclaimed as "usable".
The zip file provided here only contains the sources of MediaSPIP in its standalone version.
To get a working installation, you must manually install all-software dependencies on the server.
If you want to use this archive for an installation in "farm mode", you will also need to proceed to other manual (...) -
MediaSPIP version 0.1 Beta
16 avril 2011, parMediaSPIP 0.1 beta est la première version de MediaSPIP décrétée comme "utilisable".
Le fichier zip ici présent contient uniquement les sources de MediaSPIP en version standalone.
Pour avoir une installation fonctionnelle, il est nécessaire d’installer manuellement l’ensemble des dépendances logicielles sur le serveur.
Si vous souhaitez utiliser cette archive pour une installation en mode ferme, il vous faudra également procéder à d’autres modifications (...) -
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 (...)
Sur d’autres sites (11328)
-
How to grab ffmpeg's output as binary and write it to a file on the fly such that video players can play it in real time ?
29 décembre 2022, par Mister MystèreI want to stream a RTSP-streaming device to a video player such as VLC but the catch is that, in between, the binary data needs to go through a custom high-speed serial link. I control what goes in this link from a C++ program.


I was happily surprised to see that the following line allowed me to watch the RTSP stream by just opening "out.bin" from VLC which was a good lead for fast and efficient binary transmission of the stream :


ffmpeg -i "rtsp://admin:password@X.X.X.X:554/h264Preview_01_main" -c:v copy -c:a copy -f mpegts out.bin



I already wondered how ffmpeg manages to allow VLC to read that file, while itself writing to it at the same time. Turns out I was right to wonder, see below.


I told myself I could make this command pipe its output to the standard output, and then in turn pipe the standard output to a file that I can read, (later, slice it, transmit the chunks and reconstruct it) and then write to an output file. However, this does not work :


#include 
#include 
#include 

#define BUFSIZE 188 //MPEG-TS packet size

int main()
{
 char *cmd = (char*)"ffmpeg -i \"rtsp://admin:password@X.X.X.X:554/h264Preview_01_main\" -c:v copy -c:a copy -f mpegts pipe:1 -loglevel quiet";
 char buf[BUFSIZE];
 FILE *ptr, *file;

 file = fopen("./out.bin", "w");

 if (!file)
 {
 printf("Failed to open output file for writing, aborting");
 abort();
 }

 if ((ptr = popen(cmd, "r")) != NULL) {
 printf("Writing RTSP stream to file...");

 while (!kbhit())
 {
 if(fread(&buf, sizeof(char), BUFSIZE, ptr) != 0)
 {
 fwrite(buf, sizeof(char), BUFSIZE, file);
 }
 else
 {
 printf("No data\n");
 }
 }
 pclose(ptr);
 }
 else
 {
 printf("Failed to open pipe from ffmpeg command, aborting");
 }

 printf("End of program");

 fclose(file);
 return 0;
}



Since VLC says "your input can't be opened" - whereas this works just fine :


ffmpeg -i "rtsp://admin:password@X.X.X.X:554/h264Preview_01_main" -c:v copy -c:a copy -f mpegts pipe:1 -loglevel quiet > out.bin



This is what ends up in the file after I close the program, versus the result of the command immediately above :



The file is always 2kB regardless of how long I run the program : "No data" is shown repeatedly in the console output.


Why doesn't it work ? If it is not just a bug, how can I grab the stream as binary at some point, and write it at the end to a file that VLC can read ?


Update


New code after applying Craig Estey's fix to my stupid mistake. The end result is that the MPEG-TS frames don't seem to shift anymore but the file writing stops partway into one of the first few frames (the console only shows a few ">" symbols and then stays silent, c.f. code).


#include 
#include 
#include 

#define BUFSIZE 188 // MPEG-TS packet size

int
main()
{
 char *cmd = (char *) "ffmpeg -i \"rtsp://127.0.0.1:8554/test.sdp\" -c:v copy -c:a copy -f mpegts pipe:1 -loglevel quiet";
 char buf[BUFSIZE];
 FILE *ptr,
 *file;

 file = fopen("./out.ts", "w");

 if (!file) {
 printf("Failed to open output file for writing, aborting");
 abort();
 }

 if ((ptr = popen(cmd, "r")) != NULL) {
 printf("Writing RTSP stream to file...");

 while(!kbhit()) {
 ssize_t rlen = fread(&buf, sizeof(char), BUFSIZE, ptr);
 if(rlen != 0)
 {
 printf(">");
 fwrite(buf, sizeof(char), rlen, file);
 fflush(file);
 }
 }
 pclose(ptr);
 }
 else {
 printf("Failed to open pipe from ffmpeg command, aborting");
 }

 printf("End of program");

 fclose(file);
 return 0;
}



This can be tested on any computer with VLC and a webcam : open VLC, open capture device, capture mode directshow, (switch "play" for "stream"), next, display locally, select RTSP, Add, path=/test.sdp, next, transcoding=H264+MP3 (TS), replace rtsp ://:8554/ with rtsp ://127.0.0.1:8554/ in the generated command line, stream.


To test that streaming is ok, you can just open a command terminal and enter "ffmpeg -i "rtsp ://127.0.0.1:8554/test.sdp" -c:v copy -c:a copy -f mpegts pipe:1 -loglevel quiet", the terminal should fill up with binary data.


To test the program, just compile, run, and open out.ts after the program has run.


-
How to preserve data stream with none codec from a video while compressing it using ffmpeg ?
5 octobre 2022, par rj_7I'm using the following command to compress a video of size 1.5GB to 80 MB.


ffmpeg -i input.mp4 -copy_unknown -map_metadata 0 -c copy -c:v h264 -b:v 5000k -c:a aac -b:a 48k -map 0:v -map 0:a -map 0:d output.mp4



The problem I'm facing is - it doesn't copy the data stream to the output video even when I explicitly mention it via mapping. If I don't use the -map options for each kind of stream, it just process the video and audio as expected. But I also want the data stream in my output video.


The logs for the above command are -


ffmpeg version 4.2.2 Copyright (c) 2000-2019 the FFmpeg developers
 built with gcc 9.2.1 (GCC) 20200122
 configuration: --disable-static --enable-shared --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-amf --enable-ffnvcodec --enable-cuvid --enable-d3d11va --enable-nvenc --enable-nvdec --enable-dxva2 --enable-avisynth --enable-libopenmpt
 libavutil 56. 31.100 / 56. 31.100
 libavcodec 58. 54.100 / 58. 54.100
 libavformat 58. 29.100 / 58. 29.100
 libavdevice 58. 8.100 / 58. 8.100
 libavfilter 7. 57.100 / 7. 57.100
 libswscale 5. 5.100 / 5. 5.100
 libswresample 3. 5.100 / 3. 5.100
 libpostproc 55. 5.100 / 55. 5.100
[mov,mp4,m4a,3gp,3g2,mj2 @ 0000022581bc0f80] stream 0, timescale not set
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'input.mp4':
 Metadata:
 major_brand : mp42
 minor_version : 0
 compatible_brands: mp42mp41isomiso2
 creation_time : 2021-09-16T16:10:08.000000Z
 artist : AnafiThermal-H006560
 title : Thu, 16 Sep 2021 09:10:08 -0700
 date : 2021-09-16T09:10:08-07:00
 make : Parrot
 model : AnafiThermal
 encoder : PI040445AC0H006560
 location : +33.67128695-117.61610583+415.50/
 com.apple.quicktime.artist: AnafiThermal-H006560
 com.apple.quicktime.title: Thu, 16 Sep 2021 09:10:08 -0700
 com.apple.quicktime.creationdate: 2021-09-16T09:10:08-07:00
 com.apple.quicktime.make: Parrot
 com.apple.quicktime.model: AnafiThermal
 com.apple.quicktime.software: 1.8.0
 com.apple.quicktime.location.ISO6709: +33.67128695-117.61610583+415.50/
 com.parrot.model.id: 0919
 com.parrot.serial: PI040445AC0H006560
 com.parrot.build.id: anafi-thermal-1.8.0
 com.parrot.run.date: 2021-09-16T09:04:29-07:00
 com.parrot.run.id: 0B3D536B2F1A425EFA8978850B4C2C71
 com.parrot.boot.id: 992D5FBA74A04BA5077C3FCA3BE9C707
 com.parrot.video.mode: Standard
 Duration: 00:02:05.49, start: 0.000000, bitrate: 100391 kb/s
 Stream #0:0(eng): Video: h264 (Main) (avc1 / 0x31637661), yuv420p(tv, bt709), 3840x2160 [SAR 1:1 DAR 16:9], 99998 kb/s, 29.98 fps, 29.97 tbr, 30k tbn, 59.94 tbc (default)
 Metadata:
 creation_time : 2021-09-16T16:10:08.000000Z
 handler_name : DefaultVideo
 Stream #0:1(eng): Data: none (mett / 0x7474656D), 27 kb/s (default)
 Metadata:
 creation_time : 2021-09-16T16:10:08.000000Z
 handler_name : ParrotVideoMetadata
 Stream #0:2(eng): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 384 kb/s (default)
 Metadata:
 creation_time : 2021-09-16T16:10:08.000000Z
 handler_name : DefaultAudio
 Stream #0:3: Video: mjpeg (Baseline), yuvj420p(pc, bt470bg/unknown/unknown), 320x180 [SAR 1:1 DAR 16:9], 90k tbr, 90k tbn, 90k tbc (attached pic)
Stream mapping:
 Stream #0:0 -> #0:0 (h264 (native) -> h264 (libx264))
 Stream #0:3 -> #0:1 (mjpeg (native) -> h264 (libx264))
 Stream #0:2 -> #0:2 (aac (native) -> aac (native))
 Stream #0:1 -> #0:3 (copy)
Press [q] to stop, [?] for help
[mp4 @ 0000022581c5e280] Frame rate very high for a muxer not efficiently supporting it.
Please consider specifying a lower framerate, a different muxer or -vsync 2
[libx264 @ 0000022582975a00] using SAR=1/1
[libx264 @ 0000022582975a00] MB rate (21600000) > level limit (16711680)
[libx264 @ 0000022582975a00] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2 AVX FMA3 BMI2 AVX2
[libx264 @ 0000022582975a00] profile High, level 6.2, 4:2:0, 8-bit
[libx264 @ 0000022582975a00] 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=6 lookahead_threads=1 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=abr mbtree=1 bitrate=5000 ratetol=1.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 ip_ratio=1.40 aq=1:1.00
[libx264 @ 000002258241c980] using SAR=1/1
[libx264 @ 000002258241c980] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2 AVX FMA3 BMI2 AVX2
[libx264 @ 000002258241c980] profile High, level 5.1, 4:2:0, 8-bit
[libx264 @ 000002258241c980] 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=abr mbtree=1 bitrate=5000 ratetol=1.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 ip_ratio=1.40 aq=1:1.00
[mp4 @ 0000022581c5e280] Could not find tag for codec h264 in stream #1, codec not currently supported in container
Could not write header for output file #0 (incorrect codec parameters ?): Invalid argument
Error initializing output stream 0:0 --
[libx264 @ 000002258241c980] final ratefactor: 25.51
[libx264 @ 0000022582975a00] final ratefactor: 73.59
[aac @ 00000225829747c0] Qavg: 63100.754
[aac @ 00000225829747c0] 2 frames left in the queue on closing
Conversion failed!



I've also tried mapping the streams via number, that doesn't work either (shows same logs as above).


ffmpeg -i input.mp4 -copy_unknown -map_metadata 0 -c copy -c:v h264 -b:v 5000k -c:a aac -b:a 48k -map 0:0 -map 0:1 -map 0:2 output.mp4



So, essentially my question is - How to preserve data stream (packed) with none codec from a video while compressing it using ffmpeg ?


-
Integrate necessary ffmpeg libraries in own project for MCU (microcontrolers) [closed]
16 septembre 2023, par Borel KamnangI use two ffmpeg commands here :


ffmpeg -i BigBuckBunny_320x180.mp4 -vf scale=192:96,setsar=1:1 outputBBB.mp4
ffmpeg -i outputBBB.mp4 -vf "fps=12,scale=-1:96:flags=lanczos,crop=192:in_h:(in_w-192)/2:0" -c:v rawvideo -pix_fmt rgb565be BigBuckBunny_192x96_12fps.rgb



The first is to downscale an original video and the second is to convert the scaled video to a .rgb format.


As anew user of ffmpeg, I would like to know what are libraries used for that two command to just integrate them in my Arduino IDE C++ project an just call the necessary functions to do the downscale and the conversion.


And another of my concerns is knowing how I can run any ffmpeg in an Raspberry Pi Pico W (RP2040) or ESP32 microcontroller ?


I tried to include the ffmpeg libraries folder in a created Arduino IDE project for Raspberry pico w and the link for files doesn't work. In addition to having the config.h and config components.h files missing in the folder downloaded from the ffmpeg site, there are too many dependencies between .h and .c files.


extern "C" {
 #include "src/ffmpeg/libavcodec/avcodec.h" 
 #include "src/ffmpeg/libavutil/mathematics.h"
}
void setup() {
 Serial.begin(115200);
 delay(10000);
 }
 loop(){
 }



It's been three days today that I've been trying to compile from Arduino IDE, and correct the links in the files.
The problem is also that I don't even have the certainty of what it will work in the Raspberry Pi PicoW or ESP32 afterwards.