
Recherche avancée
Autres articles (18)
-
Déploiements possibles
31 janvier 2010, parDeux types de déploiements sont envisageable dépendant de deux aspects : La méthode d’installation envisagée (en standalone ou en ferme) ; Le nombre d’encodages journaliers et la fréquentation envisagés ;
L’encodage de vidéos est un processus lourd consommant énormément de ressources système (CPU et RAM), il est nécessaire de prendre tout cela en considération. Ce système n’est donc possible que sur un ou plusieurs serveurs dédiés.
Version mono serveur
La version mono serveur consiste à n’utiliser qu’une (...) -
Taille des images et des logos définissables
9 février 2011, parDans beaucoup d’endroits du site, logos et images sont redimensionnées pour correspondre aux emplacements définis par les thèmes. L’ensemble des ces tailles pouvant changer d’un thème à un autre peuvent être définies directement dans le thème et éviter ainsi à l’utilisateur de devoir les configurer manuellement après avoir changé l’apparence de son site.
Ces tailles d’images sont également disponibles dans la configuration spécifique de MediaSPIP Core. La taille maximale du logo du site en pixels, on permet (...) -
Contribute to a better visual interface
13 avril 2011MediaSPIP is based on a system of themes and templates. Templates define the placement of information on the page, and can be adapted to a wide range of uses. Themes define the overall graphic appearance of the site.
Anyone can submit a new graphic theme or template and make it available to the MediaSPIP community.
Sur d’autres sites (6987)
-
Anomalie #2374 (Fermé) : request url too long
17 octobre 2011, par Ben .la solution : define(’_CACHE_CONTEXTES_AJAX’,true) ; dans le mes_options.php duplicate #2123
-
Anomalie #4631 : flux rss sur une rubrique privée
3 février 2021, par Zouheir AKSILil y uniquement
< ?php
// permettre aux auteurs de choisir un login de 3 caractères
define(’_LOGIN_TROP_COURT’, 2) ; -
How does ffmpeg extract audio data from mp3 files ?
13 août 2022, par aszswazIn the ffmpeg documentation, an example of mp2 decoding is given. I try to apply this to mp3 :


#define SOURCE_FILE "ignore/audio01.mp3"
#define TARGET_FILE "ignore/target-audio01.pcm"
#define AUDIO_INBUF_SIZE 20480
#define AUDIO_REFILL_THRESH 4096
#define av_perr(errnum) \
 char av_err_buff[AV_ERROR_MAX_STRING_SIZE]; \
 av_strerror(errnum, (char *) &av_err_buff, AV_ERROR_MAX_STRING_SIZE); \
 fprintf(stderr, "\033[91m%s\033[0m\n", av_err_buff);

static int decode(AVCodecContext *dec_ctx, AVPacket *pkt, AVFrame *frame, FILE *outfile) {
 int ret, i, j;
 int data_size;

 ret = avcodec_send_packet(dec_ctx, pkt);
 if (ret < 0) {
 av_perr(ret);
 return EXIT_FAILURE;
 }

 while (ret >= 0) {
 ret = avcodec_receive_frame(dec_ctx, frame);
 if (ret == AVERROR(EAGAIN) || ret == AVERROR_EOF) {
 break;
 } else if (ret < 0) {
 av_perr(ret);
 return EXIT_FAILURE;
 }
 data_size = av_get_bytes_per_sample(dec_ctx->sample_fmt);
 if (data_size < 0) {
 av_perr(data_size);
 return EXIT_FAILURE;
 }
 for (i = 0; i < frame->nb_samples; i++) {
 for (j = 0; j < dec_ctx->channels; j++) {
 fwrite(frame->data[j] + data_size * i, 1, data_size, outfile);
 }
 }
 }

 return EXIT_SUCCESS;
}

#define IS_NULL_PTR(ptr, message) \
 if (!ptr) { \
 fprintf(stderr, "\033[91m%s\033[0m\n", message); \
 goto FINALLY; \
 }
#define av_perr(errnum) \
 char av_err_buff[AV_ERROR_MAX_STRING_SIZE]; \
 av_strerror(errnum, (char *) &av_err_buff, AV_ERROR_MAX_STRING_SIZE); \
 fprintf(stderr, "\033[91m%s\033[0m\n", av_err_buff);

int main(int argc, char **argv) {
 const AVCodec *codec;
 AVCodecContext *c = nullptr;
 AVCodecParserContext *parser = nullptr;
 enum AVSampleFormat sfmt;

 int ret = 0, len = 0, n_channels = 0;
 FILE *source_file = nullptr, *target_file = nullptr;
 const char *fmt = nullptr;
 uint8_t inbuf[AUDIO_INBUF_SIZE + AV_INPUT_BUFFER_PADDING_SIZE];
 uint8_t *data = nullptr;
 size_t data_size = 0;
 AVPacket *pkt = nullptr;
 AVFrame *decode_frame = nullptr;

 ...

 data = inbuf;
 data_size = fread(inbuf, 1, AUDIO_INBUF_SIZE, source_file);
 while (data_size > 0) {
 ret = av_parser_parse2(parser, c, &pkt->data, &pkt->size, data, data_size, AV_NOPTS_VALUE, AV_NOPTS_VALUE, 0);
 if (ret < 0) {
 fprintf(stderr, "\033[91mError while parsing\033[0m\n");
 goto FINALLY;
 }
 data += ret;
 data_size -= ret;
 if (pkt->size && decode(c, pkt, decode_frame, target_file)) goto FINALLY;

 if (data_size < AUDIO_REFILL_THRESH) {
 memmove(inbuf, data, data_size);
 data = inbuf;
 len = fread(data + data_size, 1, AUDIO_INBUF_SIZE - data_size, source_file);
 if (len > 0) data_size += len;
 }
 }
 ...
}



I get these errors :


[mp3float @ 0x55c51ac63440] Header missing
Invalid data found when processing input



Here is the version of the ffmpeg library :


libavutil 57. 17.100 / 57. 17.100
libavcodec 59. 18.100 / 59. 18.100
libavformat 59. 16.100 / 59. 16.100
libavdevice 59. 4.100 / 59. 4.100
libavfilter 8. 24.100 / 8. 24.100
libswscale 6. 4.100 / 6. 4.100
libswresample 4. 3.100 / 4. 3.100
libpostproc 56. 3.100 / 56. 3.100



I guess this is due to the fundamental difference in the data format of the mp3 and mp2 frames, but I can't find a way to decode the mp3.


What is the essential difference between the audio formats of mp3 and mp2 ? Also, what can I do to properly handle mp3 audio ?