
Recherche avancée
Médias (91)
-
GetID3 - Boutons supplémentaires
9 avril 2013, par
Mis à jour : Avril 2013
Langue : français
Type : Image
-
Core Media Video
4 avril 2013, par
Mis à jour : Juin 2013
Langue : français
Type : Video
-
The pirate bay depuis la Belgique
1er avril 2013, par
Mis à jour : Avril 2013
Langue : français
Type : Image
-
Bug de détection d’ogg
22 mars 2013, par
Mis à jour : Avril 2013
Langue : français
Type : Video
-
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 (75)
-
Gestion des droits de création et d’édition des objets
8 février 2011, parPar défaut, beaucoup de fonctionnalités sont limitées aux administrateurs mais restent configurables indépendamment pour modifier leur statut minimal d’utilisation notamment : la rédaction de contenus sur le site modifiables dans la gestion des templates de formulaires ; l’ajout de notes aux articles ; l’ajout de légendes et d’annotations sur les images ;
-
Des sites réalisés avec MediaSPIP
2 mai 2011, parCette page présente quelques-uns des sites fonctionnant sous MediaSPIP.
Vous pouvez bien entendu ajouter le votre grâce au formulaire en bas de page. -
Supporting all media types
13 avril 2011, parUnlike most software and media-sharing platforms, MediaSPIP aims to manage as many different media types as possible. The following are just a few examples from an ever-expanding list of supported formats : images : png, gif, jpg, bmp and more audio : MP3, Ogg, Wav and more video : AVI, MP4, OGV, mpg, mov, wmv and more text, code and other data : OpenOffice, Microsoft Office (Word, PowerPoint, Excel), web (html, CSS), LaTeX, Google Earth and (...)
Sur d’autres sites (9430)
-
why is powershell stripping the first "-" in my arguments to ffmpeg [duplicate]
12 décembre 2022, par robynChillHere is a simplified version of the powershell script I'm trying to write to join some .mp4 files :


[string]$inputs = ""
$filenames = "input1.mp4", "input2.mp4", "input3.mp4"
foreach ($f in $filenames) {
 $inputs += "-i $f "
}
Write-Host $inputs
.\bin\ffmpeg.exe $inputs -filter_complex...



The
write-host
prints out the string like I expect, but then ffmpeg gives me an error that says :



Unrecognized option 'i input1.mp4 -i input2.mp4 -i input3.mp4 '.
Error splitting the argument list : Option not found




So it looks like when the arguments are being passed to cmd.exe to be passed to ffmpeg, something is getting lost (at least that's how I think it works). I've read other questions that talk about problems with passing double-quotes in arguments, but my problem is with
-
. Can someone explain what is going in my case ? I don't think it's an escaping issue since the second and third-
look like they're being passed. Also, if I just usestart-process
with the-argumentList
option (and prepare one big$arguments
string beforehand) then everything works.

-
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 do I fix "undefined reference" errors in my Qt-Creator project while linking the ffmpeg library "libav" ?
25 décembre 2022, par VCoder12345I'm currently trying to use the libav library from FFmpeg in my Qt-Creator project, but I get over a thousand "undefined reference to ..." errors and I have no idea what I'm doing wrong. The errors don't depend on the actual code, because I changed it a few times, but as long as I use methods of the library these errors occur.
I have also tried to run the code in Visual Studio and that worked.


My project-file looks like this :


QT -= gui

CONFIG += c++11 console
CONFIG -= app_bundle

# You can make your code fail to compile if it uses deprecated APIs.
# In order to do so, uncomment the following line.
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0
INCLUDEPATH += D:\Programme\ffmpeg-source\ffmpeg-5.1.2\vs2019_build\include

SOURCES += \
 Main.cpp

# Default rules for deployment.
qnx: target.path = /tmp/$${TARGET}/bin
else: unix:!android: target.path = /opt/$${TARGET}/bin
!isEmpty(target.path): INSTALLS += target

QMAKE_CXXFLAGS += -D__STDC_CONSTANT_MACROS

LIBS += -lMfuuid
LIBS += -lStrmiids
LIBS += -lMfplat
LIBS += -lBcrypt
LIBS += -lSecur32
LIBS += -lWs2_32
LIBS += -pthread
LIBS += -L"D:\Programme\ffmpeg-source\ffmpeg-5.1.2\vs2019_build\lib"
LIBS += -lavdevice
LIBS += -lavfilter
LIBS += -lavformat
LIBS += -lavcodec
LIBS += -lswresample
LIBS += -lswscale
LIBS += -lavutil

HEADERS += \
 wrapper.h



The library files are stored at D :\Programme\ffmpeg-source\ffmpeg-5.1.2\vs2019_build\lib. The errors I get when running the program look something like this (extract).


:-1: Fehler: D:\Programme\ffmpeg-source\ffmpeg-5.1.2\vs2019_build\lib/libavformat.a(libavformat/aviobuf.o):(.text$mn+0x16): undefined reference to `__security_cookie'
:-1: Fehler: D:\Programme\ffmpeg-source\ffmpeg-5.1.2\vs2019_build\lib/libavformat.a(libavformat/aviobuf.o):(.xdata[$unwind$ff_read_string_to_bprint_overwrite]+0x1c): more undefined references to `__GSHandlerCheck' follow
:-1: Fehler: D:\Programme\ffmpeg-source\ffmpeg-5.1.2\vs2019_build\lib/libavformat.a(libavformat/4xm.o):(.text$mn+0x250): undefined reference to `__security_check_cookie'
:-1: Fehler: D:\Programme\ffmpeg-source\ffmpeg-5.1.2\vs2019_build\lib/libavformat.a(libavformat/yuv4mpegdec.o):(.text$mn+0x2fe): undefined reference to `sscanf'
:-1: Fehler: D:\Programme\ffmpeg-source\ffmpeg-5.1.2\vs2019_build\lib/libavformat.a(libavformat/yuv4mpegdec.o):(.text$mn+0x33f): undefined reference to `sscanf'
:-1: Fehler: D:\Programme\ffmpeg-source\ffmpeg-5.1.2\vs2019_build\lib/libavformat.a(libavformat/yuv4mpegdec.o):(.text$mn+0x65b): undefined reference to `__report_rangecheckfailure'
:-1: Fehler: D:\Programme\ffmpeg-source\ffmpeg-5.1.2\vs2019_build\lib/libavformat.a(libavformat/yuv4mpegdec.o):(.text$mn+0x18): undefined reference to `__security_cookie'
:-1: Fehler: D:\Programme\ffmpeg-source\ffmpeg-5.1.2\vs2019_build\lib/libavformat.a(libavformat/yuv4mpegdec.o):(.text$mn+0x97): undefined reference to `__security_check_cookie'
:-1: Fehler: D:\Programme\ffmpeg-source\ffmpeg-5.1.2\vs2019_build\lib/libavformat.a(libavformat/yuv4mpegdec.o):(.text$mn+0x14d): undefined reference to `__report_rangecheckfailure'
:-1: Fehler: D:\Programme\ffmpeg-source\ffmpeg-5.1.2\vs2019_build\lib/libavformat.a(libavformat/yuv4mpegdec.o):(.xdata[$unwind$yuv4_read_header]+0x20): undefined reference to `__GSHandlerCheck'
:-1: Fehler: D:\Programme\ffmpeg-source\ffmpeg-5.1.2\vs2019_build\lib/libavformat.a(libavformat/yuv4mpegdec.o):(.xdata[$unwind$yuv4_read_packet]+0x18): undefined reference to `__GSHandlerCheck'
:-1: Fehler: D:\Programme\ffmpeg-source\ffmpeg-5.1.2\vs2019_build\lib/libavformat.a(libavformat/xwma.o):(.text$mn+0x14): undefined reference to `__security_cookie'
:-1: Fehler: D:\Programme\ffmpeg-source\ffmpeg-5.1.2\vs2019_build\lib/libavformat.a(libavformat/xwma.o):(.text$mn+0x2e0): undefined reference to `__security_check_cookie'
...



Is a library missing ? Am I including the lMfuuid, Strmiids, Mfplat, etc. the wrong way ? If you have any idea I would be very grateful. I'm really confused. I'm using the MinGW64 compiler.