
Recherche avancée
Médias (1)
-
Richard Stallman et le logiciel libre
19 octobre 2011, par
Mis à jour : Mai 2013
Langue : français
Type : Texte
Autres articles (68)
-
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 (...) -
Configurer la prise en compte des langues
15 novembre 2010, parAccéder à la configuration et ajouter des langues prises en compte
Afin de configurer la prise en compte de nouvelles langues, il est nécessaire de se rendre dans la partie "Administrer" du site.
De là, dans le menu de navigation, vous pouvez accéder à une partie "Gestion des langues" permettant d’activer la prise en compte de nouvelles langues.
Chaque nouvelle langue ajoutée reste désactivable tant qu’aucun objet n’est créé dans cette langue. Dans ce cas, elle devient grisée dans la configuration et (...) -
Support audio et vidéo HTML5
10 avril 2011MediaSPIP utilise les balises HTML5 video et audio pour la lecture de documents multimedia en profitant des dernières innovations du W3C supportées par les navigateurs modernes.
Pour les navigateurs plus anciens, le lecteur flash Flowplayer est utilisé.
Le lecteur HTML5 utilisé a été spécifiquement créé pour MediaSPIP : il est complètement modifiable graphiquement pour correspondre à un thème choisi.
Ces technologies permettent de distribuer vidéo et son à la fois sur des ordinateurs conventionnels (...)
Sur d’autres sites (6652)
-
Revision 200ec69abb : Simplify the skip flag cost code Code refactoring. Change-Id : Idad53cb80497d13
16 septembre 2014, par Yunqing WangChanged Paths :
Modify /vp9/encoder/vp9_rdopt.c
Simplify the skip flag cost codeCode refactoring.
Change-Id : Idad53cb80497d13551a142a642f7529fc305b0bc
-
Revision 906c1b4bd9 : changed to avoid code confusion The previous double if and else code snippets w
22 octobre 2012, par Yaowu XuChanged Paths : Modify /vp8/common/findnearmv.c changed to avoid code confusion The previous double if and else code snippets were rather confusing. Change-Id : Id1b6152fa0e471beb9b20407aa406e109c1471e3
-
store pcm data into file, but can not play that file
25 mai 2016, par Peng QuI am writing a simple program, which reads mp3 file and store its pcm data into another file. I could get that file now, but when I play that on windows, I failed. So is there any wrong in my code, or windows couldn’t play raw audio data ?
#include
#include
#include <libavutil></libavutil>avutil.h>
#include <libavformat></libavformat>avformat.h>
#include <libavcodec></libavcodec>avcodec.h>
int main()
{
int err;
FILE *fout = fopen("test.wav", "wb");
av_register_all();
// step 1, open file and find audio stream
AVFormatContext *fmtx = NULL;
err = avformat_open_input(&fmtx, "melodylove.mp3", NULL, NULL);
assert(!err);
err = avformat_find_stream_info(fmtx, NULL);
assert(!err);
int audio_stream_idx = -1;
AVStream *st;
AVCodecContext *decx;
AVCodec *dec;
for (int i = 0; i < fmtx->nb_streams; ++i) {
audio_stream_idx = i;
if (fmtx->streams[i]->codec->codec_type == AVMEDIA_TYPE_AUDIO) {
st = fmtx->streams[i];
decx = st->codec;
dec = avcodec_find_decoder(decx->codec_id);
decx->request_channel_layout = AV_CH_LAYOUT_STEREO_DOWNMIX;
decx->request_sample_fmt = AV_SAMPLE_FMT_FLT;
avcodec_open2(decx, dec, NULL);
break;
}
}
assert(audio_stream_idx != -1);
int channels = decx->channels;
int sample_rate = decx->sample_rate;
int planar = av_sample_fmt_is_planar(decx->sample_fmt);
int num_planes = planar? decx->channels : 1;
const char *sample_name = av_get_sample_fmt_name(decx->sample_fmt);
printf("sample name: %s, channels: %d, sample rate: %d\n",
sample_name, channels, sample_rate);
printf("is planar: %d, planes: %d\n", planar, num_planes);
/*
* above I print some infomation about mp3 file, they are:
* sample name: s16p, channels: 2, sample rate: 48000
* is planar: 1, planes: 2
*/
getchar();
AVPacket pkt;
av_init_packet(&pkt);
AVFrame *frame = av_frame_alloc();
while (1) {
err = av_read_frame(fmtx, &pkt);
if (err < 0) {
printf("read frame fail\n");
fclose(fout);
exit(-1);
}
if (pkt.stream_index != audio_stream_idx) {
printf("we don't need this stream\n");
continue;
}
printf("data size: %d\n", pkt.size);
int got_frame = 0;
int bytes = avcodec_decode_audio4(decx, frame, &got_frame, &pkt);
if (bytes < 0) {
printf("decode audio fail\n");
continue;
}
printf("frame size: %d, samples: %d\n", bytes, frame->nb_samples);
if (got_frame) {
int input_samples = frame->nb_samples * decx->channels;
int sz = input_samples / num_planes;
short buffer1[input_samples];
for (int j = 0; j < frame->nb_samples; ++j) {
for (int i = 0; i < num_planes; ++i) {
short *d = (short *)frame->data[i];
buffer1[j*2+i] = d[j];
}
}
fwrite(buffer1, input_samples, 2, fout);
} else {
printf("why not get frame???");
}
}
}