
Recherche avancée
Autres articles (26)
-
D’autres logiciels intéressants
12 avril 2011, parOn ne revendique pas d’être les seuls à faire ce que l’on fait ... et on ne revendique surtout pas d’être les meilleurs non plus ... Ce que l’on fait, on essaie juste de le faire bien, et de mieux en mieux...
La liste suivante correspond à des logiciels qui tendent peu ou prou à faire comme MediaSPIP ou que MediaSPIP tente peu ou prou à faire pareil, peu importe ...
On ne les connais pas, on ne les a pas essayé, mais vous pouvez peut être y jeter un coup d’oeil.
Videopress
Site Internet : (...) -
Encoding and processing into web-friendly formats
13 avril 2011, parMediaSPIP automatically converts uploaded files to internet-compatible formats.
Video files are encoded in MP4, Ogv and WebM (supported by HTML5) and MP4 (supported by Flash).
Audio files are encoded in MP3 and Ogg (supported by HTML5) and MP3 (supported by Flash).
Where possible, text is analyzed in order to retrieve the data needed for search engine detection, and then exported as a series of image files.
All uploaded files are stored online in their original format, so you can (...) -
Création définitive du canal
12 mars 2010, parLorsque votre demande est validée, vous pouvez alors procéder à la création proprement dite du canal. Chaque canal est un site à part entière placé sous votre responsabilité. Les administrateurs de la plateforme n’y ont aucun accès.
A la validation, vous recevez un email vous invitant donc à créer votre canal.
Pour ce faire il vous suffit de vous rendre à son adresse, dans notre exemple "http://votre_sous_domaine.mediaspip.net".
A ce moment là un mot de passe vous est demandé, il vous suffit d’y (...)
Sur d’autres sites (7281)
-
FFmpeg, access violation on av_frame_free when running though Unity
27 octobre 2016, par MockarutanI’m working on a video recording plugin for Unity using ffmpeg. I’m new to the video encoding domain and just got my code to work today. But I think a might have a few memory leaks and trying to fix them crashes Unity.
The plugin is written i c++ (as external "C" code) and imported in a c# script in unity with a simple DllImport. Again, this is not my comfort area either, but it works.
When a screen buffer is rendered, I put in a RGB24 buffer and send it to my c++ function, this one :
int encode_frame(uint8_t* rgb24Data)
{
AVFrame *frame = av_frame_alloc();
if (!frame)
return COULD_NOT_ALLOCATE_FRAME;
frame->format = codec_context->pix_fmt;
frame->width = codec_context->width;
frame->height = codec_context->height;
int ret = av_image_alloc(frame->data, frame->linesize, codec_context->width, codec_context->height, codec_context->pix_fmt, 32);
if (ret < 0)
return COULD_NOT_ALLOCATE_PIC_BUF;
SwsContext * ctx = sws_getContext(codec_context->width, codec_context->height,
AV_PIX_FMT_RGB24, codec_context->width, codec_context->height,
AV_PIX_FMT_YUV420P, 0, 0, 0, 0);
uint8_t * inData[1] = { rgb24Data };
int inLinesize[1] = { 3 * codec_context->width };
sws_scale(ctx, inData, inLinesize, 0, codec_context->height, frame->data, frame->linesize); // From RGB to YUV
frame->pts = frame_counter++;
ret = avcodec_send_frame(codec_context, frame);
if (ret < 0)
return ERROR_ENCODING_FRAME_SEND;
AVPacket pkt;
av_init_packet(&pkt);
pkt.data = NULL;
pkt.size = 0;
while (true)
{
ret = avcodec_receive_packet(codec_context, &pkt);
if (!ret)
{
if (pkt.pts != AV_NOPTS_VALUE)
pkt.pts = av_rescale_q(pkt.pts, codec_context->time_base, video_st->time_base);
if (pkt.dts != AV_NOPTS_VALUE)
pkt.dts = av_rescale_q(pkt.dts, codec_context->time_base, video_st->time_base);
av_write_frame(outctx, &pkt);
av_packet_unref(&pkt);
}
else if (ret == AVERROR(EAGAIN))
{
frame->pts = frame_counter++;
ret = avcodec_send_frame(codec_context, frame);
if (ret < 0)
return ERROR_ENCODING_FRAME_SEND;
}
else if (ret < 0)
return ERROR_ENCODING_FRAME_RECEIVE;
else
break;
}
// This one
av_frame_free(&frame);
}Now, this code might have a lot of issues that I’m not aware of, and you are free to point them out if you like. But the line that gives me error is
av_frame_free(&frame);
.If I run this in a synthetic test app in c++ that I made, it works. I can even run it in a c# synthetic test app (exactly like the c++ one), and it works. But if I run it though Unity, it crashes on the first frame. The log says "Read from location fe7f8097 caused an access violation.".
I have tried with
av_freep()
andav_free()
. Not sure exactly what makes them different (different example codes use different ones), but none work.So, what I’m I missing ? The
frame
is leaking if I don’t free it right ? But why does it crash in Unity ?The whole thing works great in Unity if I don’t have the
av_frame_free(&frame);
. Resulting video looks great !PS. I’m aware (as far as I know) that the frame also leaks if something fails and returns an error code. But one thing at a time.
-
FFmpeg, access violation on av_frame_free when running though Unity
1er février 2021, par MockarutanI'm working on a video recording plugin for Unity using ffmpeg. I'm new to the video encoding domain and just got my code to work today. But I think a might have a few memory leaks and trying to fix them crashes Unity.



The plugin is written i c++ (as external "C" code) and imported in a c# script in unity with a simple DllImport. Again, this is not my comfort area either, but it works.



When a screen buffer is rendered, I put in a RGB24 buffer and send it to my c++ function, this one :



int encode_frame(uint8_t* rgb24Data)
{
 AVFrame *frame = av_frame_alloc();
 if (!frame)
 return COULD_NOT_ALLOCATE_FRAME;

 frame->format = codec_context->pix_fmt;
 frame->width = codec_context->width;
 frame->height = codec_context->height;

 int ret = av_image_alloc(frame->data, frame->linesize, codec_context->width, codec_context->height, codec_context->pix_fmt, 32);
 if (ret < 0)
 return COULD_NOT_ALLOCATE_PIC_BUF;

 SwsContext * ctx = sws_getContext(codec_context->width, codec_context->height,
 AV_PIX_FMT_RGB24, codec_context->width, codec_context->height,
 AV_PIX_FMT_YUV420P, 0, 0, 0, 0);


 uint8_t * inData[1] = { rgb24Data };
 int inLinesize[1] = { 3 * codec_context->width };

 sws_scale(ctx, inData, inLinesize, 0, codec_context->height, frame->data, frame->linesize); // From RGB to YUV

 frame->pts = frame_counter++;

 ret = avcodec_send_frame(codec_context, frame);
 if (ret < 0)
 return ERROR_ENCODING_FRAME_SEND;

 AVPacket pkt;
 av_init_packet(&pkt);
 pkt.data = NULL;
 pkt.size = 0;

 while (true)
 {
 ret = avcodec_receive_packet(codec_context, &pkt);
 if (!ret)
 {
 if (pkt.pts != AV_NOPTS_VALUE)
 pkt.pts = av_rescale_q(pkt.pts, codec_context->time_base, video_st->time_base);
 if (pkt.dts != AV_NOPTS_VALUE)
 pkt.dts = av_rescale_q(pkt.dts, codec_context->time_base, video_st->time_base);

 av_write_frame(outctx, &pkt);
 av_packet_unref(&pkt);
 }
 else if (ret == AVERROR(EAGAIN))
 {
 frame->pts = frame_counter++;
 ret = avcodec_send_frame(codec_context, frame);
 if (ret < 0)
 return ERROR_ENCODING_FRAME_SEND;
 }
 else if (ret < 0)
 return ERROR_ENCODING_FRAME_RECEIVE;
 else
 break;
 }

 // This one
 av_frame_free(&frame);
}




Now, this code might have a lot of issues that I'm not aware of, and you are free to point them out if you like. But the line that gives me error is
av_frame_free(&frame);
.


If I run this in a synthetic test app in c++ that I made, it works. I can even run it in a c# synthetic test app (exactly like the c++ one), and it works. But if I run it though Unity, it crashes on the first frame. The log says "Read from location fe7f8097 caused an access violation.".



I have tried with
av_freep()
andav_free()
. Not sure exactly what makes them different (different example codes use different ones), but none work.


So, what I'm I missing ? The
frame
is leaking if I don't free it right ? But why does it crash in Unity ?


The whole thing works great in Unity if I don't have the
av_frame_free(&frame);
. Resulting video looks great !


PS. I'm aware (as far as I know) that the frame also leaks if something fails and returns an error code. But one thing at a time.


-
cuda10.2 cuvidParseVideoData call back data CUVIDPICPARAMS has problem
19 mai 2021, par goforwardffmpeg3.4.5 parse H265 stream, call av_read_frame(), and pass AVPacket to CUVIDSOURCEDATAPACKET,
then call cuvidParseVideoData, call is successful. but call back function pfnDecodePicture return with wrong CUVIDPICPARAMS (picwidthinmbs = 0)