
Recherche avancée
Médias (21)
-
1,000,000
27 septembre 2011, par
Mis à jour : Septembre 2011
Langue : English
Type : Audio
-
Demon Seed
26 septembre 2011, par
Mis à jour : Septembre 2011
Langue : English
Type : Audio
-
The Four of Us are Dying
26 septembre 2011, par
Mis à jour : Septembre 2011
Langue : English
Type : Audio
-
Corona Radiata
26 septembre 2011, par
Mis à jour : Septembre 2011
Langue : English
Type : Audio
-
Lights in the Sky
26 septembre 2011, par
Mis à jour : Septembre 2011
Langue : English
Type : Audio
-
Head Down
26 septembre 2011, par
Mis à jour : Septembre 2011
Langue : English
Type : Audio
Autres articles (77)
-
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 (...) -
MediaSPIP Player : problèmes potentiels
22 février 2011, parLe lecteur ne fonctionne pas sur Internet Explorer
Sur Internet Explorer (8 et 7 au moins), le plugin utilise le lecteur Flash flowplayer pour lire vidéos et son. Si le lecteur ne semble pas fonctionner, cela peut venir de la configuration du mod_deflate d’Apache.
Si dans la configuration de ce module Apache vous avez une ligne qui ressemble à la suivante, essayez de la supprimer ou de la commenter pour voir si le lecteur fonctionne correctement : /** * GeSHi (C) 2004 - 2007 Nigel McNie, (...)
Sur d’autres sites (9689)
-
ffmpeg record screen and save video file to disk as .mpg
7 janvier 2015, par musimbateI want to record the screen of my pc (using gdigrab on my windows machine) and store the saved video file on my disk as an mp4 or mpg file .I have found an example piece of code that grabs the screen and shows it in an SDL window here :http://xwk.iteye.com/blog/2125720 (The code is on the bottom of the page and has an english version) and the ffmpeg muxing example https://ffmpeg.org/doxygen/trunk/muxing_8c-source.html seems to be able to help encode audio and video into a desired output video file.
I have tried to combine these two by having a format context for grabbing the screen (AVFormatContext *pFormatCtx ; in my code ) and a separate format context to write the desired video file (AVFormatContext *outFormatContextEncoded ;).Within the loop to read packets from the input stream( screen grab stream) I directly encode write packets to the output file as shown in my code.I have kept the SDL code so I can see what I am recording.Below is my code with my modified write_video_frame() function .
The code builds OK but the output video can’t be played by vlc. When I run the command
ffmpeg -i filename.mpg
I get this output
[mpeg @ 003fed20] probed stream 0 failed
[mpeg @ 003fed20] Stream #0: not enough frames to estimate rate; consider increasing probesize
[mpeg @ 003fed20] Could not find codec parameters for stream 0 (Video: none): unknown codec
Consider increasing the value for the 'analyzeduration' and 'probesize' options
karamage.mpg: could not find codec parameters
Input #0, mpeg, from 'karamage.mpg':
Duration: 19:30:09.25, start: 37545.438756, bitrate: 2 kb/s
Stream #0:0[0x1e0]: Video: none, 90k tbr, 90k tbn
At least one output file must be specifiedAm I doing something wrong here ? I am new to ffmpeg and any guidance on this is highly appreciated.Thank you for your time.
int main(int argc, char* argv[])
{
AVFormatContext *pFormatCtx;
int i, videoindex;
AVCodecContext *pCodecCtx;
AVCodec *pCodec;
av_register_all();
avformat_network_init();
//Localy defined structure.
OutputStream outVideoStream = { 0 };
const char *filename;
AVOutputFormat *outFormatEncoded;
AVFormatContext *outFormatContextEncoded;
AVCodec *videoCodec;
filename="karamage.mpg";
int ret1;
int have_video = 0, have_audio = 0;
int encode_video = 0, encode_audio = 0;
AVDictionary *opt = NULL;
//ASSIGN STH TO THE FORMAT CONTEXT.
pFormatCtx = avformat_alloc_context();
//
//Use this when opening a local file.
//char filepath[]="src01_480x272_22.h265";
//avformat_open_input(&pFormatCtx,filepath,NULL,NULL)
//Register Device
avdevice_register_all();
//Use gdigrab
AVDictionary* options = NULL;
//Set some options
//grabbing frame rate
//av_dict_set(&options,"framerate","5",0);
//The distance from the left edge of the screen or desktop
//av_dict_set(&options,"offset_x","20",0);
//The distance from the top edge of the screen or desktop
//av_dict_set(&options,"offset_y","40",0);
//Video frame size. The default is to capture the full screen
//av_dict_set(&options,"video_size","640x480",0);
AVInputFormat *ifmt=av_find_input_format("gdigrab");
if(avformat_open_input(&pFormatCtx,"desktop",ifmt,&options)!=0){
printf("Couldn't open input stream.\n");
return -1;
}
if(avformat_find_stream_info(pFormatCtx,NULL)<0)
{
printf("Couldn't find stream information.\n");
return -1;
}
videoindex=-1;
for(i=0; inb_streams; i++)
if(pFormatCtx->streams[i]->codec->codec_type==AVMEDIA_TYPE_VIDEO)
{
videoindex=i;
break;
}
if(videoindex==-1)
{
printf("Didn't find a video stream.\n");
return -1;
}
pCodecCtx=pFormatCtx->streams[videoindex]->codec;
pCodec=avcodec_find_decoder(pCodecCtx->codec_id);
if(pCodec==NULL)
{
printf("Codec not found.\n");
return -1;
}
if(avcodec_open2(pCodecCtx, pCodec,NULL)<0)
{
printf("Could not open codec.\n");
return -1;
}
AVFrame *pFrame,*pFrameYUV;
pFrame=avcodec_alloc_frame();
pFrameYUV=avcodec_alloc_frame();
//PIX_FMT_YUV420P WHAT DOES THIS SAY ABOUT THE FORMAT??
uint8_t *out_buffer=(uint8_t *)av_malloc(avpicture_get_size(PIX_FMT_YUV420P, pCodecCtx->width, pCodecCtx->height));
avpicture_fill((AVPicture *)pFrameYUV, out_buffer, PIX_FMT_YUV420P, pCodecCtx->width, pCodecCtx->height);
//<<<<<<<<<<<-------PREP WORK TO WRITE ENCODED VIDEO FILES-----
avformat_alloc_output_context2(&outFormatContextEncoded, NULL, NULL, filename);
if (!outFormatContextEncoded) {
printf("Could not deduce output format from file extension: using MPEG.\n");
avformat_alloc_output_context2(&outFormatContextEncoded, NULL, "mpeg", filename);
}
if (!outFormatContextEncoded)
return 1;
outFormatEncoded=outFormatContextEncoded->oformat;
//THIS CREATES THE STREAMS(AUDIO AND VIDEO) ADDED TO OUR OUTPUT STREAM
if (outFormatEncoded->video_codec != AV_CODEC_ID_NONE) {
//YOUR VIDEO AND AUDIO PROPS ARE SET HERE.
add_stream(&outVideoStream, outFormatContextEncoded, &videoCodec, outFormatEncoded->video_codec);
have_video = 1;
encode_video = 1;
}
// Now that all the parameters are set, we can open the audio and
// video codecs and allocate the necessary encode buffers.
if (have_video)
open_video(outFormatContextEncoded, videoCodec, &outVideoStream, opt);
av_dump_format(outFormatContextEncoded, 0, filename, 1);
/* open the output file, if needed */
if (!(outFormatEncoded->flags & AVFMT_NOFILE)) {
ret1 = avio_open(&outFormatContextEncoded->pb, filename, AVIO_FLAG_WRITE);
if (ret1 < 0) {
//fprintf(stderr, "Could not open '%s': %s\n", filename,
// av_err2str(ret));
fprintf(stderr, "Could not open your dumb file.\n");
return 1;
}
}
/* Write the stream header, if any. */
ret1 = avformat_write_header(outFormatContextEncoded, &opt);
if (ret1 < 0) {
//fprintf(stderr, "Error occurred when opening output file: %s\n",
// av_err2str(ret));
fprintf(stderr, "Error occurred when opening output file\n");
return 1;
}
//<<<<<<<<<<<-------PREP WORK TO WRITE ENCODED VIDEO FILES-----
//SDL----------------------------
if(SDL_Init(SDL_INIT_VIDEO | SDL_INIT_AUDIO | SDL_INIT_TIMER)) {
printf( "Could not initialize SDL - %s\n", SDL_GetError());
return -1;
}
int screen_w=640,screen_h=360;
const SDL_VideoInfo *vi = SDL_GetVideoInfo();
//Half of the Desktop's width and height.
screen_w = vi->current_w/2;
screen_h = vi->current_h/2;
SDL_Surface *screen;
screen = SDL_SetVideoMode(screen_w, screen_h, 0,0);
if(!screen) {
printf("SDL: could not set video mode - exiting:%s\n",SDL_GetError());
return -1;
}
SDL_Overlay *bmp;
bmp = SDL_CreateYUVOverlay(pCodecCtx->width, pCodecCtx->height,SDL_YV12_OVERLAY, screen);
SDL_Rect rect;
//SDL End------------------------
int ret, got_picture;
AVPacket *packet=(AVPacket *)av_malloc(sizeof(AVPacket));
//TRY TO INIT THE PACKET HERE
av_init_packet(packet);
//Output Information-----------------------------
printf("File Information---------------------\n");
av_dump_format(pFormatCtx,0,NULL,0);
printf("-------------------------------------------------\n");
struct SwsContext *img_convert_ctx;
img_convert_ctx = sws_getContext(pCodecCtx->width, pCodecCtx->height, pCodecCtx->pix_fmt, pCodecCtx->width, pCodecCtx->height, PIX_FMT_YUV420P, SWS_BICUBIC, NULL, NULL, NULL);
//------------------------------
//
while(av_read_frame(pFormatCtx, packet)>=0)
{
if(packet->stream_index==videoindex)
{
//HERE WE DECODE THE PACKET INTO THE FRAME
ret = avcodec_decode_video2(pCodecCtx, pFrame, &got_picture, packet);
if(ret < 0)
{
printf("Decode Error.\n");
return -1;
}
if(got_picture)
{
//THIS IS WHERE WE DO STH WITH THE FRAME WE JUST GOT FROM THE STREAM
//FREE AREA--START
//IN HERE YOU CAN WORK WITH THE FRAME OF THE PACKET.
write_video_frame(outFormatContextEncoded, &outVideoStream,packet);
//FREE AREA--END
sws_scale(img_convert_ctx, (const uint8_t* const*)pFrame->data, pFrame->linesize, 0, pCodecCtx->height, pFrameYUV->data, pFrameYUV->linesize);
SDL_LockYUVOverlay(bmp);
bmp->pixels[0]=pFrameYUV->data[0];
bmp->pixels[2]=pFrameYUV->data[1];
bmp->pixels[1]=pFrameYUV->data[2];
bmp->pitches[0]=pFrameYUV->linesize[0];
bmp->pitches[2]=pFrameYUV->linesize[1];
bmp->pitches[1]=pFrameYUV->linesize[2];
SDL_UnlockYUVOverlay(bmp);
rect.x = 0;
rect.y = 0;
rect.w = screen_w;
rect.h = screen_h;
SDL_DisplayYUVOverlay(bmp, &rect);
//Delay 40ms----WHY THIS DELAY????
SDL_Delay(40);
}
}
av_free_packet(packet);
}//THE LOOP TO PULL PACKETS FROM THE FORMAT CONTEXT ENDS HERE.
//AFTER THE WHILE LOOP WE DO SOME CLEANING
//av_read_pause(context);
av_write_trailer(outFormatContextEncoded);
close_stream(outFormatContextEncoded, &outVideoStream);
if (!(outFormatContextEncoded->flags & AVFMT_NOFILE))
/* Close the output file. */
avio_close(outFormatContextEncoded->pb);
/* free the stream */
avformat_free_context(outFormatContextEncoded);
//STOP DOING YOUR CLEANING
sws_freeContext(img_convert_ctx);
SDL_Quit();
av_free(out_buffer);
av_free(pFrameYUV);
avcodec_close(pCodecCtx);
avformat_close_input(&pFormatCtx);
return 0;
}
/*
* encode one video frame and send it to the muxer
* return 1 when encoding is finished, 0 otherwise
*/
static int write_video_frame(AVFormatContext *oc, OutputStream *ost,AVPacket * pkt11)
{
int ret;
AVCodecContext *c;
AVFrame *frame;
int got_packet = 0;
c = ost->st->codec;
//DO NOT NEED THIS FRAME.
//frame = get_video_frame(ost);
if (oc->oformat->flags & AVFMT_RAWPICTURE) {
//IGNORE THIS FOR A MOMENT
/* a hack to avoid data copy with some raw video muxers */
AVPacket pkt;
av_init_packet(&pkt);
if (!frame)
return 1;
pkt.flags |= AV_PKT_FLAG_KEY;
pkt.stream_index = ost->st->index;
pkt.data = (uint8_t *)frame;
pkt.size = sizeof(AVPicture);
pkt.pts = pkt.dts = frame->pts;
av_packet_rescale_ts(&pkt, c->time_base, ost->st->time_base);
ret = av_interleaved_write_frame(oc, &pkt);
} else {
ret = write_frame(oc, &c->time_base, ost->st, pkt11);
}
if (ret < 0) {
fprintf(stderr, "Error while writing video frame: %s\n");
exit(1);
}
return 1;
} -
Evolution #3358 : Création d’un pipeline "modifier_session"
19 février 2015, par Peet duLa fonction
session_set()
me convient bien. La question est alors de savoir où et quand utiliser cette fonction ?
Il me semble que dans bien des cas il suffirait d’implémenter une nouvelle variable de session au moment où la personne se logue.
La création d’un pipeline "modifier_session", placé dans /ecrire/auth/spip.php (?) permettrait cela. -
Anomalie #3164 (Nouveau) : Problème de sauveagrde en MySQL
2 février 2014, par Franck DalotBonsoir
Alors après beaucoup de tests :-D Je fais un ticket de plus plutôt qu’une suite au autre, car il y a beaucoup de choses différente
J’ai fini par trouver le moyen de reproduire le bug concernant les sauvegardes de spip"s"
A savoir que j’ai fait que des tests de sauvegarde, je n’ai pas fait de vérification concernant la "qualité" des sauveagardes n’y même de restauration de base.
Tests fait avec Firefox 26 et chez OVH en php 5.4.23Problème 1
Contexte
J’instal un spip 2.1.25 en choisissant MySQL via spip_loader, Je fais le choix concernant le prefix des tables de : spip21vers30bis
Après l’instal, je vais dans "plugins" pour inserer les listes des plug (http://plugins.spip.net/rss-+-selection-2-1-+ et http://www.spip-contrib.net/?page=rss-plugins-spip-2-1)
Puis, je fais la création d’une rubrique et d’un article de test que je publi en ligne.
Enfin, je donne un nom au site et je vide le cache via l’interface de spip.Enfin, je vais dans "maintenance avancer" pour faire une sauvegarde de la base
Je passe la souris sur "OPTIONS AVANCÉES"
Et surprise... spip souhaite sauvegarder des tables qui n’existent pas "spip_article" et d’autres non, alors qu’elles existent "spip21vers30bis_articles"
Sons en Gras les table que spip "coche" par défault
spip21vers30bis_articles (1)
spip21vers30bis_auteurs (1)
spip21vers30bis_auteurs_articles (1)
spip21vers30bis_auteurs_messages (0)
spip21vers30bis_auteurs_rubriques (0)
spip21vers30bis_breves (0)
spip21vers30bis_documents (0)
spip21vers30bis_documents_liens (0)
spip21vers30bis_forum (0)
spip21vers30bis_groupes_mots (0)
spip21vers30bis_messages (0)
spip21vers30bis_meta (93)
spip21vers30bis_mots (0)
spip21vers30bis_mots_articles (0)
spip21vers30bis_mots_breves (0)
spip21vers30bis_mots_documents (0)
spip21vers30bis_mots_forum (0)
spip21vers30bis_mots_rubriques (0)
spip21vers30bis_mots_syndic (0)
spip21vers30bis_petitions (0)
spip21vers30bis_referers (0)
spip21vers30bis_referers_articles (0)
spip21vers30bis_resultats (0)
spip21vers30bis_rubriques (1)
spip21vers30bis_signatures (0)
spip21vers30bis_syndic (0)
spip21vers30bis_syndic_articles (0)
spip21vers30bis_types_documents (164)
spip21vers30bis_urls (0)
spip21vers30bis_versions (0)
spip21vers30bis_versions_fragments (0)
spip21vers30bis_visites (0)
spip21vers30bis_visites_articles (0)
spip_articles (1)
spip_auteurs (1)
spip_auteurs_articles (1)
spip_auteurs_messages (0)
spip_auteurs_rubriques (0)
spip_breves (0)
spip_documents (0)
spip_documents_liens (0)
spip_forum (0)
spip_groupes_mots (0)
spip_messages (0)
spip_meta (93)
spip_mots (0)
spip_mots_articles (0)
spip_mots_breves (0)
spip_mots_documents (0)
spip_mots_forum (0)
spip_mots_rubriques (0)
spip_mots_syndic (0)
spip_petitions (0)
spip_rubriques (1)
spip_signatures (0)
spip_syndic (0)
spip_syndic_articles (0)
spip_types_documents (164)
spip_urls (0)Problème 2
Contexte
Je place un fichier mes_options avec dedans :
< ?php
define(’SPIP_ERREUR_REPORT’,E_ALL) ;
define(’_NO_CACHE’, -1) ;
error_reporting(E_ALL^E_NOTICE) ;
ini_set ("display_errors", "On") ;
define(’_DEBUG_SLOW_QUERIES’, true) ;
define(’_BOUCLE_PROFILER’, 5000) ;
define(’_LOG_FILTRE_GRAVITE’,8) ;
define(’_MAX_DEBUG_AFF’, ’1’) ;
?>Via spip_loader je fais le passage en SPIP 3.1.0-dev [21172]
Apparission de notices pendant le passage :
Notice : Undefined variable : r in /.../ecrire/req/mysql.php on line 974
Notice : Undefined variable : row in /.../ecrire/req/mysql.php on line 539
Notice : Undefined index : objet in /.../ecrire/req/mysql.php on line 1127
Notice : Undefined index : creer_htpasswd in /.../ecrire/auth/spip.php on line 345
+ certaines qui ne sont pas systématique
Notice : Undefined index : spip_lang in /.../ecrire/inc/lang.php on line 269
Notice : Undefined variable : rub_ in /.../ecrire/base/dump.php on line 34Je vide le cache via l’interface de spip, et je vais dans "sauvegarder la base", je décoche "Sauvegarder toutes les tables"
Surprise, spip me propose toutes les tables cocher sauf "spip_resultats" et "spip_test" (il me semble que c’est normal), par contre, il ne me propose pas les tables avec le préfix que j’avais choisi au moment de l’instal en spip 2.1.25Problème 3
Je re-coche "Sauvegarder toutes les tables", choisi comme nom de sauvegarde "essai" et fait une sauveagardeDes notices apparaisent
Notice : Undefined index : extra in /.../ecrire/req/sqlite_generique.php on line 1108
Notice : Undefined index : objet in /.../ecrire/req/sqlite_generique.php on line 1053La sauvegarde ne semble pas correcte (voir la copie d’écran "sauvegarde1" jointe)
Problème 4
Je vide le cache, puis je fais une nouvelle sauveagrde de la base de données, mais uniquement d’une table "spip_articles" (Cela fait pareil avec toutes les tables qui sont en "gras" dans la copie d’écran "sauvegarde1"). je lui done le nom de "essai2"Des notices apparaissent
Notice : Undefined index : extra in /.../ecrire/req/sqlite_generique.php on line 1108
Notice : Undefined index : id_version in /.../ecrire/req/sqlite_generique.php on line 1108
Notice : Undefined index : extra in /.../ecrire/req/sqlite_generique.php on line 1153
Notice : Undefined index : id_version in /.../ecrire/req/sqlite_generique.php on line 1153La sauvegarde semble se faire
Par contre quand il n’y a qu’une table, il faudrait que sont nom soit à gauche, il y a une puce de trop (voir la copie d’écran "sauvegarde2" jointe)problème 5
Que cela soit en spip 3.0.15 ou 3.1 quand je regarde les tables que spip va sauveagrder, le prefix des table qui apparait ne correspond pas au prefix que j’ai choisi au moemnt de l’instalProblème 6 (divers)
Des notices sont apparu lors de tests mais pas moyen de me souvenir si j’étais en 3.0.15 ou 3.1
lors des essai, firefox mavais dit dans une page blanche qu’il y avait :
Erreur d’encodageDes notices étaient visible
Notice : Undefined index : contenu in /.../ecrire/req/sqlite_generique.php on line 1108
Notice : Undefined index : extrait in /.../ecrire/req/sqlite_generique.php on line 1108
Notice : Undefined index : composition in /.../ecrire/req/sqlite_generique.php on line 1108
Notice : Undefined index : composition_lock in /.../ecrire/req/sqlite_generique.php on line 1108
Notice : Undefined index : oembed in /.../ecrire/req/sqlite_generique.php on line 1108Et quand je faisait une sauvegarde, les table suivante étaient systématiquement en "gras"
spip_article
spip_depots
spip_documents
spip_groupes_mots
spip_mots
spip_paquets
spip_plugins
spip_auteurs
spip_metaD’autres notices
Notice : ob_end_flush() : failed to delete and flush buffer. no buffer to delete or flush in /.../plugins-dist/dump/inc/sauvegarde.php on line 59
Notice : Undefined index : id in /.../ecrire/plugins/infos_plugin.php on line 170