
Recherche avancée
Autres articles (45)
-
MediaSPIP v0.2
21 juin 2013, parMediaSPIP 0.2 est la première version de MediaSPIP stable.
Sa date de sortie officielle est le 21 juin 2013 et est annoncée ici.
Le fichier zip ici présent contient uniquement les sources de MediaSPIP en version standalone.
Comme pour la version précédente, 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 (...) -
Mise à disposition des fichiers
14 avril 2011, parPar défaut, lors de son initialisation, MediaSPIP ne permet pas aux visiteurs de télécharger les fichiers qu’ils soient originaux ou le résultat de leur transformation ou encodage. Il permet uniquement de les visualiser.
Cependant, il est possible et facile d’autoriser les visiteurs à avoir accès à ces documents et ce sous différentes formes.
Tout cela se passe dans la page de configuration du squelette. Il vous faut aller dans l’espace d’administration du canal, et choisir dans la navigation (...) -
Support audio et vidéo HTML5
10 avril 2011MediaSPIP utilise les balises HTML5 video et audio pour la lecture de documents multimedia en profitant des dernières innovations du W3C supportées par les navigateurs modernes.
Pour les navigateurs plus anciens, le lecteur flash Flowplayer est utilisé.
Le lecteur HTML5 utilisé a été spécifiquement créé pour MediaSPIP : il est complètement modifiable graphiquement pour correspondre à un thème choisi.
Ces technologies permettent de distribuer vidéo et son à la fois sur des ordinateurs conventionnels (...)
Sur d’autres sites (2940)
-
Error Linking FFmpeg with libx264 : Undefined Reference to __imp_x264_encoder_open_163
23 février 2024, par zeyuI'm attempting to compile FFmpeg with libx264 support on Windows using MinGW-w64, but I'm encountering a linking error when building . The error points to an undefined reference to in . Here are the details of the error message:libavcodec/avcodec-57.dll__imp_x264_encoder_open_163libx264.o


In fact, I want to run the AccMPEG branch from https://github.com/Alex-q-z/myh264.git, and I am looking to obtain an executable (exe) to run on Windows.


LD libavcodec/avcodec-57.dll
E:/MSY/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: libavcodec/libx264.o: in function `X264_init':
E:\MSY\home\myh264\ffmpeg-3.4.8/libavcodec/libx264.c:818: undefined reference to `__imp_x264_encoder_open_163'
collect2.exe: error: ld returned 1 exit status
make: *** [ffbuild/library.mak:103: libavcodec/avcodec-57.dll] Error 1




Here's what I've tried so far :


Ensuring libx264 is compiled with shared library support using .—enable-shared
Verifying that the libx264 version is compatible with the version of FFmpeg I'm compiling.
Adding the path to libx264 binaries to my PATH environment variable.
Environment Details :


OS : Windows 11 MSYS2
MinGW-w64 version : 13.2.0
FFmpeg version : 3.4.8
libx264 version : unknown
Questions :


What could be causing this undefined reference error ?
Is there a specific version of libx264 that's known to work with FFmpeg 3.4.8 ?
Are there additional flags or configurations I should use when compiling libx264 or FFmpeg to avoid this issue ?
Any guidance or suggestions would be greatly appreciated. Thank you in advance !


In fact, I want to run the AccMPEG branch from https://github.com/Alex-q-z/myh264.git, and I am looking to obtain an executable (exe) to run on Windows.


-
yet another screenshot encoding exercise with ffmpeg - stuck at getting AVFrame from ALT::CImage - VC++
11 septembre 2013, par sithTotal AV newbee here - trying to learn the ropes on using FFMpeg functions to encode movies. On searching for tutorials I found a few similar questions that I have linked here for reference :
Encoding a screenshot into a video using FFMPEG
[Libav-user] Encoding a screenshot into a video using FFMPEG
Save bitmap to video (libavcodec ffmpeg)
When converting from RGB to YUV using ffmpeg the video file the color is spread why ?
How to convert RGB from YUV420p for ffmpeg encoder ?
Encode bmp sequence with libavcodec...Help !
Not able to encode image with ffmpeg
For my setup FFMPEG is on VS12 - VC++ with MFC on win7.
With the help of above samples, I am able to get "some" output from the encoder, but I am not sure in what format or state the output has been encoded. Neither VLC nor WMP can play this file. It does not even seem to recognize the metadata in the file to display the FPS or video length. What would normally cause that ? Also any pointers on what could be going wrong and how to approach fixing the problems would be great. [1]
Here is the flow of my code :
Step1 : capture desktop on to a CImg :
int W=GetSystemMetrics(SM_CXSCREEN), H=GetSystemMetrics(SM_CYSCREEN), bpp=24;
CImage cImg; cImg.Create(W,H,bpp)
HDC hDC = cImg.GetDC();
CWindowDC winDC(GetDesktopWindow());
BitBlt(hDC, 0,0, rez.W(), rez.H(), winDC.m_hDC, 0, 0, SRCCOPY);At this point I am able to dump a screen shot into a bmp file -
using cImg.Save( _T("test.bmp"), Gdiplus::ImageFormatBMP) ;Step2 : Extract the BMP bits from the CImg.
HBITMAP hBitmap = (HBITMAP)cImg;
HDC memDC = CreateCompatibleDC(NULL);
SelectObject( memDC, hBitmap );
BITMAPINFO bmi; // initialized bmi with {W,-H, plane=1, bitCount=24, comp=BI_RGB, size=W*H*3 }
<< removed bmi init code for conciseness. >>>
BYTE *rgb24Data = new BYTE[W*H*3]; // 3 for 24bpp. 4 for 32...
int ret = GetDIBits(memDC, hBitmap, 0, H, rgb24Data, &bmi, DIB_RGB_COLORS);At this point I faithfully believe rgb24Data points to pixel data :) - copied out of the cImg bitmap
Step 3 : next I try to create an AV frame with the rgb24Data got from this CImg. Also this is where I have a massive knowledge gap. I am going to try and recover
// setup the codecs and contexts here as per mohM's post
AVCodec *currCodec = avcodec_find_encoder(CODEC_ID_MPEG4);
AVCodecContext *codeCtxt = avcodec_alloc_context(); // init this with bate=400k, W, H,
<< removed codeCtxt init code for conciseness. >>> // time base 1/25, gop=10, max_b=1, fmt=YUV420
avcodec_open(codeCtxt, currCodec);
SwsContext *currSWSCtxt = sws_getContext( W, H, AV_PIX_FMT_RGB24, // FROM
W, H, AV_PIX_FMT_YUV420P, // TO
SWS_FAST_BILINEAR,
NULL, NULL, NULL);
// allocate and fill AVFrame
int numBytes = avpicture_get_size(PIX_FMT_YUV420P, W, H);
uint8_t *buffer=new uint8_t[numBytes];
AVFrame *avFrame = avcodec_alloc_frame();
avpicture_fill( (AVPicture*)avFrame, buffer, PIX_FMT_YUV420P, W, H );Step 4 : transform the data frame into YUV420P as we fill the frame.
uint8_t * inData[1] = { rgb24Data };
int inLinesize[1] = { 3*W }; // RGB stride
sws_scale( currSWSCtxt, inData, inLinesize, 0, H,
avFrame->data, avFrame->linesize);step 5 encode the frame and write out the output buffer into a file.
int out_size = avcodec_encode_video( codeCtxt,
outBuf,
outBufSize,
avFrame );
fwrite(outBuf, 1, outBufSize, outFile );finally I close the file off with [0x00 0x00 0x01 0xb7]
The first hint of things gone haywire is that for a 50 screens of 1920X1080 at 24bpp encoded at 25fps gives me a 507MB unplayable-mpeg file.
As mentioned earlier, neither VLC nor WMP can play this file nor they even recognize the metadata in the file to display the FPS or video length. What would normally cause that ? Also any pointers on what could be going wrong and how to approach fixing the problems would be great. [2]
Any guidance is much appreciated.
-
Continuous RTMP Streaming with FFmpeg Without Restarting the Process for New Videos
3 avril 2024, par 刘小佳I'm facing a challenge with my workflow and would appreciate any guidance or solutions you might have. My business scenario involves a service that periodically generates new video files locally (e.g., 1.mp4, 2.mp4, ...). These files are then streamed to an RTMP server using FFmpeg, and clients pull the stream via HTTP-FLV for playback.


My goal is to ensure continuous streaming between video files without restarting the FFmpeg process each time a new video is ready to be streamed. Restarting FFmpeg for each new file introduces a disconnect in the client playback, which I'm trying to avoid to maintain stream continuity.


I've explored several approaches based on the FFmpeg Concatenate wiki (https://trac.ffmpeg.org/wiki/Concatenate), but haven't achieved the desired outcome :

Approach 1 :

Using a list.txt file with ffconcat version 1.0 and dynamically updating the file (next.mp4) being played :

ffconcat version 1.0
file next.mp4
file next.mp4



And then streaming with :

ffmpeg -re -stream_loop -1 -f concat -i list.txt -flush_packets 0 -f flv rtmp://xxx

However, when attempting to replace next.mp4 (e.g., moving 2.mp4 to next.mp4 during the streaming of 1.mp4), I encountered a "device busy" error.

Approach 2 :

Using a nested list approach where list1.txt includes 1.mp4 and list2.txt, and vice versa :

// list1.txt
ffconcat version 1.0
file '1.mp4'
file 'list2.txt'
// list2.txt
ffconcat version 1.0
file '2.mp4'
file 'list1.txt'



Streaming with :
ffmpeg -re -stream_loop -1 -f concat -i list1.txt -flush_packets 0 -f flv rtmp://xxx

In this setup, I tried modifying list1.txt to replace 1.mp4 with 3.mp4 during the streaming of 2.mp4, but FFmpeg would loop back to 1.mp4 and 2.mp4 before streaming 3.mp4 in the next cycle.

Am I missing something in my methods ? Does anyone have a better approach to fulfill this requirement ? Any help would be greatly appreciated !