
Recherche avancée
Médias (2)
-
Exemple de boutons d’action pour une collection collaborative
27 février 2013, par
Mis à jour : Mars 2013
Langue : français
Type : Image
-
Exemple de boutons d’action pour une collection personnelle
27 février 2013, par
Mis à jour : Février 2013
Langue : English
Type : Image
Autres articles (30)
-
Qualité du média après traitement
21 juin 2013, parLe bon réglage du logiciel qui traite les média est important pour un équilibre entre les partis ( bande passante de l’hébergeur, qualité du média pour le rédacteur et le visiteur, accessibilité pour le visiteur ). Comment régler la qualité de son média ?
Plus la qualité du média est importante, plus la bande passante sera utilisée. Le visiteur avec une connexion internet à petit débit devra attendre plus longtemps. Inversement plus, la qualité du média est pauvre et donc le média devient dégradé voire (...) -
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 (...) -
De l’upload à la vidéo finale [version standalone]
31 janvier 2010, parLe chemin d’un document audio ou vidéo dans SPIPMotion est divisé en trois étapes distinctes.
Upload et récupération d’informations de la vidéo source
Dans un premier temps, il est nécessaire de créer un article SPIP et de lui joindre le document vidéo "source".
Au moment où ce document est joint à l’article, deux actions supplémentaires au comportement normal sont exécutées : La récupération des informations techniques des flux audio et video du fichier ; La génération d’une vignette : extraction d’une (...)
Sur d’autres sites (4216)
-
HLS MP4 Independent Segments
7 décembre 2016, par MidoLong story short : Why HLS can’t just play normal MP4 files together one after one ? Why need to segment media file into .ts segments ?
Details :
We’ve segmented MP4 file into mini MP4 segments (not TS), each one about 30 seconds for testing. It never plays in any HLS player, just loading all segment files then nothing happens.
Example MP4 segment Info :
Format : MPEG-4
Format profile : Base Media
Codec ID : isom
File size : 1.44 MiB
Duration : 32s 950ms
Overall bit rate : 366 Kbps
Writing application : Lavf56.25.101
Video
ID : 1
Format : AVC
Format/Info : Advanced Video Codec
Format profile : High@L4.1
Format settings, CABAC : Yes
Format settings, ReFrames : 6 frames
Codec ID : avc1
Codec ID/Info : Advanced Video Coding
Duration : 32s 950ms
Bit rate : 230 Kbps
Width : 426 pixels
Height : 240 pixels
Display aspect ratio : 16:9
Original display aspect rat : 16:9
Frame rate mode : Constant
Frame rate : 23.976 fps
Color space : YUV
Chroma subsampling : 4:2:0
Bit depth : 8 bits
Scan type : Progressive
Bits/(Pixel*Frame) : 0.094
Stream size : 925 KiB (63%)
Writing library : x264 core 142 r2495 6a301b6
Audio
ID : 2
Format : AAC
Format/Info : Advanced Audio Codec
Format profile : LC
Codec ID : 40
Duration : 32s 896ms
Bit rate mode : Constant
Bit rate : 129 Kbps
Channel(s) : 2 channels
Channel(s)_Original : 6 channels
Channel positions : Front: L C R, Side: L R, LFE
Sampling rate : 48.0 KHz
Compression mode : Lossy
Stream size : 517 KiB (35%)The Master M3U8 :
#EXTM3U
#EXT-X-VERSION:7
#EXT-X-INDEPENDENT-SEGMENTS
#EXT-X-STREAM-INF:RESOLUTION=426x240,BANDWIDTH=370000,CODECS="avc1.640015,mp4a.40.2"
240p.m3u8
#EXT-X-STREAM-INF:RESOLUTION=640x360,BANDWIDTH=580000,CODECS="avc1.640015,mp4a.40.2"
360p.m3u8
#EXT-X-STREAM-INF:RESOLUTION=896x504,BANDWIDTH=900000,CODECS="avc1.640015,mp4a.40.2"
480p.m3u8
#EXT-X-STREAM-INF:RESOLUTION=1280x720,BANDWIDTH=1500000,CODECS="avc1.640015,mp4a.40.2"
720p.m3u8240p.m3u8
#EXTM3U
#EXT-X-VERSION:7
#EXT-X-MEDIA-SEQUENCE:0
#EXT-X-PLAYLIST-TYPE:VOD
#EXT-X-TARGETDURATION:34
#EXTINF:33.033033,
240p000.mp4
#EXTINF:33.533534,
240p001.mp4
#EXTINF:24.941608,
240p002.mp4
#EXTINF:28.611945,
240p003.mp4
#EXT-X-ENDLISTWhen tested with HLS.js, gives this error :
Parsing Error:no demux matching with content found,cannot recover,
last media error recovery failed ...Bitmovin Player : loads all segments of all variants and never plays any of them. just stop.
Tested on Chrome & Firefox On Windows, Safari on Mac, Android and iPad Browsers. Never works on any of them. Are we doing anything wrong ?!
-
Evolution #3896 : Bienvenue personnalisée à l’installation d’un plugin
6 février 2017, par jluc -La proposition ne vise pas à ouvrir un nouvel onglet comme les plugins firefox. J’aurais pas du écrire "mini page d’accueil" quand je voulais dire "message d’accueil".
La proposition vise à donner tout de suite un accès clair et visible aux informations importantes concernant un plugin après son installation et/ou à un message de bienvenue dépendant du plugin.
Ce qui m’a amené à faire cette proposition c’est le plugin menu_alpha. Voilà tous les mouvements et connaissances que j’ai du avoir pour parvenir à la page de configuration :
- Savoir qu’il faut le configurer pour que ça marche (sinon on voit rien, pas d’interface)
- Descendre chercher le plugin dans la liste (car je sais qu’à droite là il y a le bouton "outils" donnant habituellement accès à la config)
- Cliquer le nom du plugin (car je sais que ça donne des infos supplémentaires dont la doc)
- Cliquer le lien vers la doc qu’il s’est trouvé être bien là (car je savais qu’une doc bien faite me donnerait l’info cherchée)
- J’ai alors pu lire la doc, revenir au site et chercher la page de config cherchée, dans les préférences personnelles (j’ai un peu hésité car j’y vais jamais, mais je me suis souvenu de leur accès).
Un simple lien "configurer" comme le suggère marcimat serait suffisant ici
mais attention ce n’est pas la même info que celle qui fait apparaître le bouton "outils" à droite de la ligne du plugin dans la liste : menu_alpha n’a pas de bouton "outil" mais a une page de config "exotique" (ailleurs)On pourrait alors imaginer qu’il y ait d’autres moyens de faire apparaître ce bouton "outil" (pas seulement la page de configuration classique) et de le faire apparaitre aussi pour la page de config exotique de menu_alpha.
Ce serait une bonne amélioration.On peut aussi supposer que selon les plugins il peut y a d’autres infos à mettre en avant à l’installation... yc un simple message de bienvenue sympa (et non intrusif).
L’installation de plusieurs plugins simultanés amène des contraintes sur la structure visuelle de ce message, mais il me semble que ça ne change pas grand chose aux solutions envisagées. On peut évidemment juste ajouter le lien "Configurer" à la fin des messages techniques, ou bien insérer des lignes "li" supplémentaires au milieu des messages techniques d’installation, et on peut aussi créer plusieurs nouvelles petites boites à la suite de la boite des messages techniques, une pour chacun des messages personnalisés quand il y en a un.
-
Using libavcodec to read .mkv video file
10 mars 2020, par SlavTrying to read .mkv file and write it to .bmp, but resulting .bmp is black-and-white and consists of multiple mini-images of what supposed to be written :
int main()
{
av_register_all();
avformat_network_init();
avfilter_register_all();
//crashes on -Ofast without =NULL initialization:
AVFormatContext * format = NULL;
if ( avformat_open_input( & format, VIDEO_FILE, NULL, NULL ) != 0 ) {
cerr << "Could not open file " << VIDEO_FILE << endl;
return -1;
}
// Retrieve stream information
if ( avformat_find_stream_info( format, NULL ) < 0) {
cerr << "avformat_find_stream_info() failed." << endl;
return -1;
}
av_dump_format( format, 0, VIDEO_FILE, false );
AVCodec * video_dec = (AVCodec*)1;
AVCodec * audio_dec = (AVCodec*)1;
const auto video_stream_index = av_find_best_stream( format, AVMEDIA_TYPE_VIDEO, -1, -1, & video_dec, 0 );
const auto audio_stream_index = av_find_best_stream( format, AVMEDIA_TYPE_AUDIO, -1, -1, & audio_dec, 0 );
if ( video_stream_index < 0 ) {
cerr << "Failed to find video stream." << endl;
return -1;
}
if ( audio_stream_index < 0 ) {
cerr << "Failed to find audio stream." << endl;
return -1;
}
AVCodecParameters * videoParams = format->streams[ video_stream_index ]->codecpar;
cout << "Having " << videoParams->width << " | " << videoParams->height << " video." << endl;
av_read_play( format );
// create decoding context
AVCodecContext * video_ctx = avcodec_alloc_context3( video_dec );
AVCodecContext * audio_ctx = avcodec_alloc_context3( audio_dec );
if ( ! video_ctx || ! audio_ctx ) {
cerr << "Failed to avcodec_alloc_context3()" << endl;
return -1;
}
if ( video_dec->capabilities & AV_CODEC_CAP_TRUNCATED ) video_ctx->flags |= AV_CODEC_FLAG_TRUNCATED; // we do not send complete frames
/* For some codecs, such as msmpeg4 and mpeg4, width and height
MUST be initialized there because this information is not
available in the bitstream. */
avcodec_parameters_to_context( video_ctx, format->streams[ video_stream_index ]->codecpar );
avcodec_parameters_to_context( audio_ctx, format->streams[ audio_stream_index ]->codecpar );
if ( avcodec_open2( video_ctx, video_dec, NULL ) < 0 ) {
cout << "Failed to open video decoder." << endl;
return -1;
}
if ( avcodec_open2( audio_ctx, audio_dec, NULL ) < 0 ) {
cout << "Failed to open audio decoder." << endl;
return -1;
}
uint8_t* picture_buffer = (uint8_t*) (av_malloc( avpicture_get_size( AV_PIX_FMT_RGB24 , videoParams->width, videoParams->height ) ));
AVFrame* picture = av_frame_alloc();
avpicture_fill( (AVPicture *) picture, picture_buffer, AV_PIX_FMT_RGB24, video_ctx->width, video_ctx->height );
AVPacket packet;
av_init_packet( & packet );
int cnt = 0;
while ( av_read_frame( format, & packet ) >= 0 && cnt < 10 ) {
if ( packet.stream_index == video_stream_index ) {
int check;
const auto result = avcodec_decode_video2( video_ctx, picture, & check, & packet );
cout << "Bytes decoded " << result << " check " << check << endl;
std::string name = "debug/av/";
name += std::to_string( cnt ) + ".bmp";
cout << "Writing frame " << name << " with linesize " << picture->linesize[0] << " ..." << endl;
write_bmp( (uint8_t*) picture->data, videoParams->width, videoParams->height, name.c_str() );
av_frame_unref( picture );
++ cnt;
}
else if ( packet.stream_index == audio_stream_index ) {
cout << "Sound packet" << endl;
}
av_free_packet( & packet );
av_init_packet( & packet );
}
}How can I fix it ?