
Recherche avancée
Médias (1)
-
Bug de détection d’ogg
22 mars 2013, par
Mis à jour : Avril 2013
Langue : français
Type : Video
Autres articles (45)
-
Publier sur MédiaSpip
13 juin 2013Puis-je poster des contenus à partir d’une tablette Ipad ?
Oui, si votre Médiaspip installé est à la version 0.2 ou supérieure. Contacter au besoin l’administrateur de votre MédiaSpip pour le savoir -
Ajouter notes et légendes aux images
7 février 2011, parPour pouvoir ajouter notes et légendes aux images, la première étape est d’installer le plugin "Légendes".
Une fois le plugin activé, vous pouvez le configurer dans l’espace de configuration afin de modifier les droits de création / modification et de suppression des notes. Par défaut seuls les administrateurs du site peuvent ajouter des notes aux images.
Modification lors de l’ajout d’un média
Lors de l’ajout d’un média de type "image" un nouveau bouton apparait au dessus de la prévisualisation (...) -
HTML5 audio and video support
13 avril 2011, parMediaSPIP uses HTML5 video and audio tags to play multimedia files, taking advantage of the latest W3C innovations supported by modern browsers.
The MediaSPIP player used has been created specifically for MediaSPIP and can be easily adapted to fit in with a specific theme.
For older browsers the Flowplayer flash fallback is used.
MediaSPIP allows for media playback on major mobile platforms with the above (...)
Sur d’autres sites (4527)
-
avfilter/vsrc_testsrc : add missing alpha plane define
14 octobre 2024, par James Almer -
vulkan_ffv1 : remove unused define
5 avril, par Lynne -
ffmpeg : How to define AVFormatContext input to take the output of another AVFormatContext ?
21 août 2016, par Victor.dMdBI have 2 functions running in 2 threads. One is written with opencv to parse images then write them to avformatcontext :
VideoCapture vidSrc = cv::VideoCapture(vidURL);
int vidWidth = vidSrc.get(CV_CAP_PROP_FRAME_WIDTH);
int vidHeight = vidSrc.get(CV_CAP_PROP_FRAME_HEIGHT);
AVRational vidFPS = {(int) vidSrc.get(CV_CAP_PROP_FPS), 1};
AVFormatContext* av_fmt_ctx = avformat_alloc_context();
av_fmt_ctx->flags = AVFMT_NOFILE;
cmd_data_ptr->video_data_conf.av_fmt_ctx = av_fmt_ctx;
av_fmt_ctx->oformat = av_guess_format( NULL, props.vidURL.c_str(), NULL );
AVCodec* vcodec = avcodec_find_encoder(av_fmt_ctx->oformat->video_codec);
AVStream* vstrm = avformat_new_stream(av_fmt_ctx, vcodec);
vstrm->codec = avcodec_alloc_context3(vcodec);
vstrm->codec->width = vidWidth;
vstrm->codec->height = vidHeight;
vstrm->codec->pix_fmt = vcodec->pix_fmts[0];
vstrm->codec->time_base = vstrm->time_base = av_inv_q(vidFPS);
vstrm->r_frame_rate = vstrm->avg_frame_rate = vidFPS;
if (av_fmt_ctx->oformat->flags & AVFMT_GLOBALHEADER)
vstrm->codec->flags |= AV_CODEC_FLAG_GLOBAL_HEADER;
avcodec_open2(vstrm->codec, vcodec, nullptr);
int got_pkt = 0;
AVFrame* frame = av_frame_alloc();
std::vector framebuf(av_image_get_buffer_size(vstrm->codec->pix_fmt, vidWidth, vidHeight,32));
avpicture_fill(reinterpret_cast(frame), framebuf.data(), vstrm->codec->pix_fmt, vidWidth, vidHeight);
frame->width = vidWidth;
frame->height = vidHeight;
frame->format = static_cast<int>(vstrm->codec->pix_fmt);
while(true){
vidSrc >> in;
cv::Mat towrite;
const int stride[] = { static_cast<int>(towrite.step[0]) };
sws_scale(swsctx, &towrite.data, stride, 0, towrite.rows, frame->data, frame->linesize);
frame->pts = frame_pts++;
AVPacket pkt;
pkt.data = nullptr;
pkt.size = 0;
pkt.stream_index = vstrm->id;
av_init_packet(&pkt);
avcodec_encode_video2(vstrm->codec, &pkt, end_of_stream ? nullptr : frame, &got_pkt);
if (got_pkt) {
pkt.duration = 1;
av_packet_rescale_ts(&pkt, vstrm->codec->time_base, vstrm->time_base);
av_write_frame(av_fmt_ctx, &pkt);
}
av_packet_unref(&pkt);
}
av_frame_free(&frame);
avcodec_close(vstrm->codec);
</int></int>And another thread reads those frames
while(1){
AVPacket packet;
av_read_frame(av_fmt_ctx, &packet);
...
}The first function doesn’t seem to be working properly, as there is a segmentation error on
av_write_frame
or even withav_dump_format
. Is it correct that the first function is created as an output context ? Or should I be setting up as an input context for the other thread ? I’m a bit confused. I’m still trying to wrap my head around ffmpeg.