
Recherche avancée
Médias (91)
-
Richard Stallman et le logiciel libre
19 octobre 2011, par
Mis à jour : Mai 2013
Langue : français
Type : Texte
-
Stereo master soundtrack
17 octobre 2011, par
Mis à jour : Octobre 2011
Langue : English
Type : Audio
-
Elephants Dream - Cover of the soundtrack
17 octobre 2011, par
Mis à jour : Octobre 2011
Langue : English
Type : Image
-
#7 Ambience
16 octobre 2011, par
Mis à jour : Juin 2015
Langue : English
Type : Audio
-
#6 Teaser Music
16 octobre 2011, par
Mis à jour : Février 2013
Langue : English
Type : Audio
-
#5 End Title
16 octobre 2011, par
Mis à jour : Février 2013
Langue : English
Type : Audio
Autres articles (101)
-
List of compatible distributions
26 avril 2011, parThe table below is the list of Linux distributions compatible with the automated installation script of MediaSPIP. Distribution nameVersion nameVersion number Debian Squeeze 6.x.x Debian Weezy 7.x.x Debian Jessie 8.x.x Ubuntu The Precise Pangolin 12.04 LTS Ubuntu The Trusty Tahr 14.04
If you want to help us improve this list, you can provide us access to a machine whose distribution is not mentioned above or send the necessary fixes to add (...) -
MediaSPIP Core : La Configuration
9 novembre 2010, parMediaSPIP Core fournit par défaut trois pages différentes de configuration (ces pages utilisent le plugin de configuration CFG pour fonctionner) : une page spécifique à la configuration générale du squelettes ; une page spécifique à la configuration de la page d’accueil du site ; une page spécifique à la configuration des secteurs ;
Il fournit également une page supplémentaire qui n’apparait que lorsque certains plugins sont activés permettant de contrôler l’affichage et les fonctionnalités spécifiques (...) -
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 (...)
Sur d’autres sites (9306)
-
Secure and track every change to your Matomo installation with the Activity Log plugin
14 novembre 2017, par InnoCraft — PluginsAre you wondering how your colleagues are using Matomo (Piwik) ? Would you like to know if an unauthorized user got an access to your installation ? Would you like to remember the last actions you performed in Matomo some weeks ago ? At InnoCraft, we developed a plugin called “Activity Log”. With this feature you can easily track and check all major changes to your Matomo websites, for example : user permissions, goals, and funnels. In this article we will show you the different ways you can use it and explain why it is an invaluable plugin.
Activity log for better security
The activity log feature has been designed for security. Also referred to as “audit logging” or “audit trail”, with this plugin you will be able to :
- detect any suspicious actions
- detect hacker attacks
- help identify performance problems
- see clearly who did what, and when
- find out how people are using Matomo (Piwik) within your company
1 – detect any suspicious actions
With audit trail you can easily identify if a former employee still has access to your Matomo (Piwik) installation. You will then be able to know when he accessed it for the last time, and what changes she or he performed. If you got hacked, you will be able to find out if the user created, changed, or deleted any website, goals, or did anything else suspicious.
2 – detect hacker attacks
When an unregistered user is trying to access your Matomo (Piwik), each failed login attempt is registered within the Activity Log report.
3 – help identify performance problems
Activity Log can help you identify performance problems by registering the sequence of each major action a user performed. For example, if a user updated or installed a third party plugin, and suddenly Matomo (Piwik) is getting performance problems, then it is likely that the plugin update caused it.
4 – see clearly who did what, and when
It is always challenging in an organization to know who did what and when. With Activity Log, you will know who were the employee(s) that accessed Matomo (Piwik), created, updated, or deleted a goal, a funnel, a scheduled report, and much more.
5- find out how people are using Matomo within your company
By having a look at how people are using Matomo (Piwik) you will have an overview of how your colleagues use Matomo. For example, you can see who is creating Custom segments to analyse the audience in more details, who is creating funnels to learn where your users drop off. You will then be able to identify who has the knowledge and who needs training.
Did you know ?
You can help the Matomo (Piwik) core team make Matomo even better by sharing anonymously how you use Matomo on a day to day basis. You just need to install the following plugin : http://plugins.matomo.org/AnonymousPiwikUsageMeasurement
What’s in it ?
Once downloaded and installed from the marketplace, you will be able to access the activity log from the admin panel within the diagnostic section :
If you are logged as a super user administrator, you will get an overview and a detailed report about who accessed Matomo (Piwik) and which actions they performed.
Those reports are critical as they allow the super user to :
- ensure users are following all documented procedures within your organization such as naming conventions for reports, using the right settings when adding measurables…
- identify suspicious behavior. As those reports are gathering all major Matomo (Piwik) users activities it is easy to identify non conventional behavior.
- replay the sequence some users went through in order to fix any potential issues.
Activity log view report you can access through the admin panel
So you will see in a second if an unusual user got access to Matomo (Piwik) and the different actions the user performed.
It is also a good way to see the features that your users are using and identify potential misuse.As a regular user or admin, activity log is providing only the historical actions that this user performed :
Actions listed in the log include any changes (add, edit, delete) to the following features (this is a non exhaustive list) :
- Annotation
- Custom Alert
- Custom Dimension
- Goal
- Privacy settings
- Scheduled report
- Segment
- User
- Website
- …
This is a ideal to remember the actions they previously performed some weeks/months ago.
Where can I start from here ?
Activity log is a premium feature you can acquire through the Matomo (Piwik) marketplace. If you want to experience it before purchasing it, you can try it for free on our cloud infrastructure.
Activity log is just one out of the many great premium features developed by InnoCraft, the company founded by the creators of Matomo. Discover all their special plugins through the premium marketplace.
-
FFmpeg mux video use libavformat avcodec but output couldn't be played
10 août 2017, par tqnI’m trying write a app that take an input video and crop it to square video and ignore audio stream. Because bad performance if using command, I’m trying to use libavcodec and libavformat to do it. But the output isn’t playable by any video player and duration is 0 although I wrote all frame. Here are my code.
void convert_video(char* input) {
AVFormatContext *pFormatCtx = NULL;
int i, videoStreamIndex;
AVCodecContext *pCodecCtx = NULL;
AVCodec *pCodec = NULL;
AVFrame *pFrame = NULL;
AVFrame *pFrameSquare = NULL;
AVPacket packet, outPacket;
int frameFinished;
int numBytes;
uint8_t *buffer = NULL;
AVCodec *pEncodec = NULL;
AVFormatContext *poFormatCxt = NULL;
MuxOutputStream videoStream = {0}, audioStream = {0};
int tar_w, tar_h;
const enum AVPixelFormat pic_format = AV_PIX_FMT_YUV420P;
const enum AVCodecID codec_id = AV_CODEC_ID_H264;
AVDictionary *optionsDict = NULL;
char output[50];
sprintf(output, "%soutput.mp4", ANDROID_SDCARD);
// Register all formats and codecs
av_register_all();
// Open video file
if(avformat_open_input(&pFormatCtx, input, NULL, NULL)!=0)
return; // Couldn't open file
avformat_alloc_output_context2(&poFormatCxt, NULL, NULL, output);
// Retrieve stream information
if(avformat_find_stream_info(pFormatCtx, NULL)<0)
return; // Couldn't find stream information
// Find the first video stream
videoStreamIndex=-1;
for(i=0; inb_streams; i++)
if(pFormatCtx->streams[i]->codec->codec_type==AVMEDIA_TYPE_VIDEO) {
videoStreamIndex=i;
break;
}
if(videoStreamIndex==-1)
return; // Didn't find a video stream
// Get a pointer to the codec context for the video stream
pCodecCtx = pFormatCtx->streams[videoStreamIndex]->codec;
tar_w = pCodecCtx->width > pCodecCtx->height ? pCodecCtx->height : pCodecCtx->width;
tar_h = tar_w;
// Find the decoder for the video stream
pCodec=avcodec_find_decoder(pCodecCtx->codec_id);
pEncodec = avcodec_find_encoder(codec_id);
add_stream_mux(&videoStream, poFormatCxt, &pEncodec, codec_id, tar_w, tar_h);
videoStream.st[0].time_base = pFormatCtx->streams[videoStreamIndex]->time_base;
videoStream.st[0].codec->time_base = videoStream.st[0].time_base;
videoStream.st[0].codec->time_base.den *= videoStream.st[0].codec->ticks_per_frame;
// add_stream(&audioStream, poFormatCxt, &)
open_video(poFormatCxt, pEncodec, &videoStream, optionsDict);
int ret = avio_open(&poFormatCxt->pb, output, AVIO_FLAG_WRITE);
// Open codec
if(avcodec_open2(pCodecCtx, pCodec, &optionsDict) < 0)
return; // Could not open codec
ret = avformat_write_header(poFormatCxt, &optionsDict);
if (ret != 0) {
ANDROID_LOG("Died");
}
// Allocate video frame
pFrame=av_frame_alloc();
pFrame->format = videoStream.st->codec->pix_fmt;
pFrame->width = pCodecCtx->width;
pFrame->height = pCodecCtx->height;
av_frame_get_buffer(pFrame, 32);
// Allocate an AVFrame structure
pFrameSquare=av_frame_alloc();
if(pFrameSquare==NULL)
return;
// Determine required buffer size and allocate buffer
numBytes=avpicture_get_size(pic_format, tar_w,
tar_h);
buffer = (uint8_t *)av_malloc(numBytes*sizeof(uint8_t));
// Assign appropriate parts of buffer to image planes in pFrameSquare
// Note that pFrameSquare is an AVFrame, but AVFrame is a superset
// of AVPicture
ret = avpicture_fill((AVPicture *)pFrameSquare, buffer, pic_format,
tar_w, tar_h);
if (ret < 0) {
ANDROID_LOG("Can't fill picture");
return;
}
// Read frames and save first five frames to disk
i=0;
ret = av_read_frame(pFormatCtx, &packet);
while(ret >= 0) {
// Is this a packet from the video stream?
if(packet.stream_index == videoStreamIndex) {
// Decode video frame
// av_packet_rescale_ts(&packet, videoStream.st->time_base, videoStream.st->codec->time_base);
avcodec_decode_video2(pCodecCtx, pFrame, &frameFinished,
&packet);
// while (!frameFinished) {
// avcodec_decode_video2(videoStream.st->codec, pFrame, &frameFinished, NULL);
// }
ANDROID_LOG("Trying to decode frame %d with result %d", i, frameFinished);
ret = av_picture_crop((AVPicture*) pFrameSquare, (AVPicture*) pFrame, pic_format, 0, 0);
if (ret < 0) {
ANDROID_LOG("Can't crop image");
}
// av_frame_get_best_effort_timestamp(pFrame);
// av_rescale_q()
if(frameFinished) {
// Save the frame to disk
av_init_packet(&outPacket);
// av_packet_rescale_ts(&outPacket, videoStream.st->codec->time_base, videoStream.st->time_base);
pFrameSquare->width = tar_w;
pFrameSquare->height = tar_h;
pFrameSquare->format = pic_format;
pFrameSquare->pts = ++videoStream.next_pts;
ret = avcodec_encode_video2(videoStream.st->codec, &outPacket, pFrameSquare, &frameFinished);
// int count = 0;
// while (!frameFinished && count++ < 6) {
// ret = avcodec_encode_video2(videoStream.st->codec, &outPacket, NULL, &frameFinished);
// }
if (frameFinished) {
ANDROID_LOG("Writing frame %d", i);
outPacket.stream_index = videoStreamIndex;
av_interleaved_write_frame(poFormatCxt, &outPacket);
}
av_free_packet(&outPacket);
}
}
// Free the packet that was allocated by av_read_frameav_free_packet(&packet);
ret = av_read_frame(pFormatCtx, &packet);
}
ret = av_write_trailer(poFormatCxt);
if (ret < 0) {
ANDROID_LOG("Couldn't write trailer");
} else {
ANDROID_LOG("Video convert finished");
}
// Free the RGB image
av_free(buffer);
av_free(pFrameSquare);
// Free the YUV frame
av_free(pFrame);
// Close the codec
avcodec_close(pCodecCtx);
// avcodec_close(pEncodecCtx);
// Close the video file
avformat_close_input(&pFormatCtx);
return;
}Helper
#define STREAM_DURATION 10.0
#define STREAM_FRAME_RATE 25 /* 25 images/s */
#define STREAM_PIX_FMT AV_PIX_FMT_YUV420P /* default pix_fmt */
/* Add an output stream. */
void add_stream_mux(MuxOutputStream *ost, AVFormatContext *oc,
AVCodec **codec,
enum AVCodecID codec_id, int width, int heigh)
{
AVCodecContext *codecCtx;
int i;
/* find the encoder */
*codec = avcodec_find_encoder(codec_id);
if (!(*codec)) {
fprintf(stderr, "Could not find encoder for '%s'\n",
avcodec_get_name(codec_id));
exit(1);
}
ost->st = avformat_new_stream(oc, *codec);
if (!ost->st) {
fprintf(stderr, "Could not allocate stream\n");
exit(1);
}
ost->st->id = oc->nb_streams-1;
codecCtx = ost->st->codec;
switch ((*codec)->type) {
case AVMEDIA_TYPE_AUDIO:
codecCtx->sample_fmt = (*codec)->sample_fmts ?
(*codec)->sample_fmts[0] : AV_SAMPLE_FMT_FLTP;
codecCtx->bit_rate = 64000;
codecCtx->sample_rate = 44100;
if ((*codec)->supported_samplerates) {
codecCtx->sample_rate = (*codec)->supported_samplerates[0];
for (i = 0; (*codec)->supported_samplerates[i]; i++) {
if ((*codec)->supported_samplerates[i] == 44100)
codecCtx->sample_rate = 44100;
}
}
codecCtx->channels = av_get_channel_layout_nb_channels(codecCtx->channel_layout);
codecCtx->channel_layout = AV_CH_LAYOUT_STEREO;
if ((*codec)->channel_layouts) {
codecCtx->channel_layout = (*codec)->channel_layouts[0];
for (i = 0; (*codec)->channel_layouts[i]; i++) {
if ((*codec)->channel_layouts[i] == AV_CH_LAYOUT_STEREO)
codecCtx->channel_layout = AV_CH_LAYOUT_STEREO;
}
}
codecCtx->channels = av_get_channel_layout_nb_channels(codecCtx->channel_layout);
ost->st->time_base = (AVRational){ 1, codecCtx->sample_rate };
break;
case AVMEDIA_TYPE_VIDEO:
codecCtx->codec_id = codec_id;
codecCtx->bit_rate = 400000;
/* Resolution must be a multiple of two. */
codecCtx->width = width;
codecCtx->height = heigh;
/* timebase: This is the fundamental unit of time (in seconds) in terms
* of which frame timestamps are represented. For fixed-fps content,
* timebase should be 1/framerate and timestamp increments should be
* identical to 1. */
ost->st->time_base = (AVRational){ 1, STREAM_FRAME_RATE };
codecCtx->time_base = ost->st->time_base;
codecCtx->gop_size = 12; /* emit one intra frame every twelve frames at most */
codecCtx->pix_fmt = STREAM_PIX_FMT;
if (codecCtx->codec_id == AV_CODEC_ID_MPEG2VIDEO) {
/* just for testing, we also add B frames */
codecCtx->max_b_frames = 2;
}
if (codecCtx->codec_id == AV_CODEC_ID_MPEG1VIDEO) {
/* Needed to avoid using macroblocks in which some coeffs overflow.
* This does not happen with normal video, it just happens here as
* the motion of the chroma plane does not match the luma plane. */
codecCtx->mb_decision = 2;
}
break;
default:
break;
}
/* Some formats want stream headers to be separate. */
if (oc->oformat->flags & AVFMT_GLOBALHEADER)
codecCtx->flags |= AV_CODEC_FLAG_GLOBAL_HEADER;
}
static void open_video(AVFormatContext *oc, AVCodec *codec, MuxOutputStream *ost, AVDictionary *opt_arg)
{
int ret;
AVCodecContext *c = ost->st->codec;
AVDictionary *opt = NULL;
av_dict_copy(&opt, opt_arg, 0);
/* open the codec */
ret = avcodec_open2(c, codec, &opt);
av_dict_free(&opt);
if (ret < 0) {
fprintf(stderr, "Could not open video codec: %s\n", av_err2str(ret));
exit(1);
}
/* allocate and init a re-usable frame */
ost->frame = alloc_picture(c->pix_fmt, c->width, c->height);
if (!ost->frame) {
fprintf(stderr, "Could not allocate video frame\n");
exit(1);
}
/* If the output format is not YUV420P, then a temporary YUV420P
* picture is needed too. It is then converted to the required
* output format. */
ost->tmp_frame = NULL;
if (c->pix_fmt != AV_PIX_FMT_YUV420P) {
ost->tmp_frame = alloc_picture(AV_PIX_FMT_YUV420P, c->width, c->height);
if (!ost->tmp_frame) {
fprintf(stderr, "Could not allocate temporary picture\n");
exit(1);
}
}
}I’m afraid that I set wrong pts or time_base of frame, and also when decoding or encoding, I see that some first frame is lost, frameFinished is 0. See a post that I’ve to flush decoder by
avcodec_decode_video2(videoStream.st->codec, pFrame, &frameFinished, NULL)
but after try a few times, frameFinished still is 0, and withavcodec_encode_video2(videoStream.st->codec, &outPacket, NULL, &frameFinished)
will throw error in next encode frame. So how I can get all frame that lost ? I’m using FFmpeg version 3.0.1 -
Secure and track every change to your Piwik installation with the Activity Log plugin
14 novembre 2017, par InnoCraft — PluginsAre you wondering how your colleagues are using Piwik ? Would you like to know if an unauthorized user got an access to your installation ? Would you like to remember the last actions you performed in Piwik some weeks ago ? At InnoCraft, we developed a plugin called “Activity Log”. With this feature you can easily track and check all major changes to your Piwik websites, for example : user permissions, goals, and funnels. In this article we will show you the different ways you can use it and explain why it is an invaluable plugin.
Activity log for better security
The activity log feature has been designed for security. Also referred to as “audit logging” or “audit trail”, with this plugin you will be able to :
- detect any suspicious actions
- detect hacker attacks
- help identify performance problems
- see clearly who did what, and when
- find out how people are using Piwik within your company
1 – detect any suspicious actions
With audit trail you can easily identify if a former employee still has access to your Piwik installation. You will then be able to know when he accessed it for the last time, and what changes she or he performed. If you got hacked, you will be able to find out if the user created, changed, or deleted any website, goals, or did anything else suspicious.
2 – detect hacker attacks
When an unregistered user is trying to access your Piwik, each failed login attempt is registered within the Activity Log report.
3 – help identify performance problems
Activity Log can help you identify performance problems by registering the sequence of each major action a user performed. For example, if a user updated or installed a third party plugin, and suddenly Piwik is getting performance problems, then it is likely that the plugin update caused it.
4 – see clearly who did what, and when
It is always challenging in an organization to know who did what and when. With Activity Log, you will know who were the employee(s) that accessed Piwik, created, updated, or deleted a goal, a funnel, a scheduled report, and much more.
5- find out how people are using Piwik within your company
By having a look at how people are using Piwik you will have an overview of how your colleagues use Piwik. For example, you can see who is creating Custom segments to analyse the audience in more details, who is creating funnels to learn where your users drop off. You will then be able to identify who has the knowledge and who needs training.
Did you know ?
You can help the Piwik core team make Piwik even better by sharing anonymously how you use Piwik on a day to day basis. You just need to install the following plugin : http://plugins.piwik.org/AnonymousPiwikUsageMeasurement
What’s in it ?
Once downloaded and installed from the marketplace, you will be able to access the activity log from the admin panel within the diagnostic section :
If you are logged as a super user administrator, you will get an overview and a detailed report about who accessed Piwik and which actions they performed.
Those reports are critical as they allow the super user to :
- ensure users are following all documented procedures within your organization such as naming conventions for reports, using the right settings when adding measurables…
- identify suspicious behavior. As those reports are gathering all major Piwik users activities it is easy to identify non conventional behavior.
- replay the sequence some users went through in order to fix any potential issues.
Activity log view report you can access through the admin panel
So you will see in a second if an unusual user got access to Piwik and the different actions the user performed.
It is also a good way to see the features that your users are using and identify potential misuse.As a regular user or admin, activity log is providing only the historical actions that this user performed :
Actions listed in the log include any changes (add, edit, delete) to the following features (this is a non exhaustive list) :
- Annotation
- Custom Alert
- Custom Dimension
- Goal
- Privacy settings
- Scheduled report
- Segment
- User
- Website
- …
This is a ideal to remember the actions they previously performed some weeks/months ago.
Where can I start from here ?
Activity log is a premium feature you can acquire through the Piwik marketplace. If you want to experience it before purchasing it, you can try it for free on our cloud infrastructure.
Activity log is just one out of the many great premium features developed by InnoCraft, the company founded by the creators of Piwik. Discover all their special plugins through the premium marketplace.