
Recherche avancée
Médias (2)
-
SPIP - plugins - embed code - Exemple
2 septembre 2013, par
Mis à jour : Septembre 2013
Langue : français
Type : Image
-
Publier une image simplement
13 avril 2011, par ,
Mis à jour : Février 2012
Langue : français
Type : Video
Autres articles (71)
-
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 (...) -
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. -
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 (7819)
-
How to process video stream ?
27 avril 2016, par sharpenerI would like to ask some experienced multimedia professional how to proceed with following task :
Given URL provides video stream and we would like to get access to decoded frames (byte stream in memory) in managed
Win7+
application (C#
). We don’t want to render/present the frames the standard way. The video format is known but not fixed (might get changed between two successive sessions, but we will know the parameters).So far, I have found there are several methods and I have build following picture in my mind :
ffmpeg
wrapper- Pros
- Self contained (no dependency to windows technologies)
- Powerful
- Cons
- Little more complex to understand
- Lot of different wrapping variants (
FFmpeg.NET
,ffmpeg-sharp
,ffmpeg-shard
,FFmpeg.AutoGen
, ...)
- Pros
DirectShow
wrapper- Pros
- Widely used/supported technology (variaous filters freely available)
- Nice/detailed documentation on
MSDN
- Cons
- Quite old
- Considered obsolete from the point of author’s view (available only for
desktop
model on runtime >= Win8)
- Pros
MediaFoundation
wrapper- Pros
- Theoretical successor of
DirectShow
, so should be available in the future
- Theoretical successor of
- Cons
- Seems to be not as good as
DirectShow
- Not very popular, limited "community" support
- Seems to be not as good as
- Pros
FFmpegInterop
wrapper- Pros
- Microsoft’s open source wrapper alternative
- Cons
- Not available for runtime < Win8
- Pros
-
Hwaccel with AVCodec in FFMPEG ?
6 janvier 2020, par HellBloodI am using AVCodec as a video stream decoder and would like to know if it was possible to use hardware acceleration with hwaccel via FFMPEG ? or is it already used by default ?
I have already listed codecs available but I do not understand how to implement them in my code.AVHWAccel* pHwaccel = NULL;
pHwaccel = av_hwaccel_next(NULL);
while(pHwaccel!=NULL)
{
TkCore::Logger::info("%s", pHwaccel->name);
pHwaccel = av_hwaccel_next(pHwaccel);
}i obtain : h264_qsv, h264_vaapi,h264_vdpaufor h264.
I saw that the command :
AVHWAccel * ff_find_hwaccel (codecID enum codec_id, enum PixelFormat pix_fmt)
been obsolete.
Thank you in advance for your help. -
Access Violation at avcodec_encode_video2()
23 mars 2016, par bot1131357I am trying to understand the FFmpeg API by following online examples available but it seems that the FFmpeg API has changed over time, making most of the examples obsolete ; I hope some of you can help me make more sense of the FFmpeg API examples.
I am currently trying to understand the encoding-example from FFmpeg, but I am getting an Access Violation error at this line :
out_size = avcodec_encode_video2(codecCtx, &avpkt, picture, &got_packet);
where I get "Unhandled exception at 0x77c29e42 in test01_encode.exe : 0xC0000005 : Access violation reading location 0xccccccc8." from Visual Studio.
I understand that avcodec_encode_video() is deprecated in favour of avcodec_encode_video2(), which uses AVPacket. I’ve allocated a buffer to data member of AVPacket and set its size, but still the same. What did I miss ?
The library that I’m using is ffmpeg-20160219-git-98a0053-win32-dev. I would really really appreciate if you could help me out of this confusion.
(Side : What does it mean by "get delayed frames" and why are we encoding by specifying AVFrame* parameter as NULL ?)
/*
* Video encoding example
*/
char filename[] = "test.mpg";
int main(int argc, char** argv)
{
AVCodec *codec;
AVCodecContext *codecCtx= NULL;
int i, out_size, size, x, y, outbuf_size;
FILE *f;
AVFrame *picture;
uint8_t *outbuf, *picture_buf;
printf("Video encoding\n");
// Register all formats and codecs
av_register_all();
/* find the mpeg1 video encoder */
codec = avcodec_find_encoder(AV_CODEC_ID_MPEG1VIDEO);
if (!codec) {
fprintf(stderr, "codec not found\n");
exit(1);
}
codecCtx= avcodec_alloc_context3(codec);
picture= av_frame_alloc();
/* put sample parameters */
codecCtx->bit_rate = 400000;
/* resolution must be a multiple of two */
codecCtx->width = 352;
codecCtx->height = 288;
/* frames per second */
//codecCtx->time_base= (AVRational){1,25};
codecCtx->time_base.num = 1;
codecCtx->time_base.den = 25;
codecCtx->gop_size = 10; /* emit one intra frame every ten frames */
codecCtx->max_b_frames=1;
codecCtx->pix_fmt = AV_PIX_FMT_YUV420P;
/* open it */
if (avcodec_open2(codecCtx, codec, NULL) < 0) {
fprintf(stderr, "could not open codec\n");
exit(1);
}
fopen_s(&f,filename, "wb");
if (!f) {
fprintf(stderr, "could not open %s\n", filename);
exit(1);
}
/* alloc image and output buffer */
outbuf_size = 100000;
outbuf = (uint8_t*) malloc(outbuf_size);
size = codecCtx->width * codecCtx->height;
picture_buf = (uint8_t*) malloc((size * 3) / 2); /* size for YUV 420 */
picture->data[0] = picture_buf;
picture->data[1] = picture->data[0] + size;
picture->data[2] = picture->data[1] + size / 4;
picture->linesize[0] = codecCtx->width;
picture->linesize[1] = codecCtx->width / 2;
picture->linesize[2] = codecCtx->width / 2;
picture->width = codecCtx->width;
picture->height = codecCtx->height;
picture->format = codecCtx->pix_fmt;
AVPacket avpkt;
int got_packet;
avpkt.size=av_image_get_buffer_size(codecCtx->pix_fmt, codecCtx->width,
codecCtx->height,1);
avpkt.data = (uint8_t *)av_malloc(avpkt.size*sizeof(uint8_t));
/* encode 1 second of video */
for(i=0;i<25;i++) {
fflush(stdout);
/* prepare a dummy image */
/* Y */
for(y=0;yheight;y++) {
for(x=0;xwidth;x++) {
picture->data[0][y * picture->linesize[0] + x] = x + y + i * 3;
}
}
/* Cb and Cr */
for(y=0;yheight/2;y++) {
for(x=0;xwidth/2;x++) {
picture->data[1][y * picture->linesize[1] + x] = 128 + y + i * 2;
picture->data[2][y * picture->linesize[2] + x] = 64 + x + i * 5;
}
}
/* encode the image */
//out_size = avcodec_encode_video(codecCtx, outbuf, outbuf_size, picture);
// <access violation="violation">
out_size = avcodec_encode_video2(codecCtx, &avpkt, picture, &got_packet);
printf("encoding frame %3d (size=%5d)\n", i, out_size);
//fwrite(outbuf, 1, out_size, f);
fwrite(avpkt.data, 1, avpkt.size, f);
}
/* get the delayed frames */
for(; out_size; i++) {
fflush(stdout);
//out_size = avcodec_encode_video(codecCtx, outbuf, outbuf_size, NULL);
out_size = avcodec_encode_video2(codecCtx, &avpkt, NULL, &got_packet);
printf("write frame %3d (size=%5d)\n", i, out_size);
//fwrite(outbuf, 1, out_size, f);
fwrite(avpkt.data, 1, avpkt.size, f);
}
/* add sequence end code to have a real mpeg file */
outbuf[0] = 0x00;
outbuf[1] = 0x00;
outbuf[2] = 0x01;
outbuf[3] = 0xb7;
fwrite(outbuf, 1, 4, f);
fclose(f);
free(picture_buf);
free(outbuf);
avcodec_close(codecCtx);
av_free(codecCtx);
av_free(picture);
printf("\n");
}
</access>