
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 (84)
-
Des sites réalisés avec MediaSPIP
2 mai 2011, parCette page présente quelques-uns des sites fonctionnant sous MediaSPIP.
Vous pouvez bien entendu ajouter le votre grâce au formulaire en bas de page. -
Ecrire une actualité
21 juin 2013, parPrésentez les changements dans votre MédiaSPIP ou les actualités de vos projets sur votre MédiaSPIP grâce à la rubrique actualités.
Dans le thème par défaut spipeo de MédiaSPIP, les actualités sont affichées en bas de la page principale sous les éditoriaux.
Vous pouvez personnaliser le formulaire de création d’une actualité.
Formulaire de création d’une actualité Dans le cas d’un document de type actualité, les champs proposés par défaut sont : Date de publication ( personnaliser la date de publication ) (...) -
MediaSPIP Player : les contrôles
26 mai 2010, parLes contrôles à la souris du lecteur
En plus des actions au click sur les boutons visibles de l’interface du lecteur, il est également possible d’effectuer d’autres actions grâce à la souris : Click : en cliquant sur la vidéo ou sur le logo du son, celui ci se mettra en lecture ou en pause en fonction de son état actuel ; Molette (roulement) : en plaçant la souris sur l’espace utilisé par le média (hover), la molette de la souris n’exerce plus l’effet habituel de scroll de la page, mais diminue ou (...)
Sur d’autres sites (9870)
-
Wav File encoded with FFMPEG has issues with codecs while playing using VLC Player
24 mai 2022, par user924702I want to convert raw PCM data(Taken from Android Phone mic) into a libGSM Wave file. After encoding into file, VLC player shows right codec information and duration but unable to play contents. Please help me to find what I am doing wrong.



Below is my code for encoding and header writing :



void EncodeTest(uint8_t *audioData, size_t audioSize)
{
 AVCodecContext *audioCodec;
 AVCodec *codec;
 uint8_t *buf; int bufSize, frameBytes;
 __android_log_print(ANDROID_LOG_INFO, DEBUG_TAG,"Lets encode :%u with size %d\n",(int)audioData, (int)audioSize);
 //Set up audio encoder
 codec = avcodec_find_encoder(CODEC_ID_GSM);
 if (codec == NULL){
 __android_log_print(ANDROID_LOG_ERROR, DEBUG_TAG,"ERROR:: Unable to find encoder(CODEC_ID_GSM)");
 codec = avcodec_find_encoder(CODEC_ID_GSM);
 if (codec == NULL){
 __android_log_print(ANDROID_LOG_ERROR, DEBUG_TAG,"ERROR:: Unable to find encoder(CODEC_ID_GSM)");
 return;
 }
 }
 audioCodec = avcodec_alloc_context();
 audioCodec->channels = 1;
 audioCodec->sample_rate = 8000;
 audioCodec->sample_fmt = SAMPLE_FMT_S16;
 audioCodec->bit_rate = 13200;
 audioCodec->priv_data = gsm_create();

 switch(audioCodec->codec_id) {
 case CODEC_ID_GSM:
 audioCodec->frame_size = GSM_FRAME_SIZE;
 audioCodec->block_align = GSM_BLOCK_SIZE;
 int one = 1;
 gsm_option(audioCodec->priv_data, GSM_OPT_WAV49, &one);
 break;
 case CODEC_ID_GSM_MS: {
 int one = 1;
 gsm_option(audioCodec->priv_data, GSM_OPT_WAV49, &one);
 audioCodec->frame_size = 2*GSM_FRAME_SIZE;
 audioCodec->block_align = GSM_MS_BLOCK_SIZE;
 }
 }
 audioCodec->coded_frame= avcodec_alloc_frame();
 audioCodec->coded_frame->key_frame= 1;
 audioCodec->time_base = (AVRational){1, audioCodec->sample_rate};
 audioCodec->codec_type = CODEC_TYPE_AUDIO;

 if (avcodec_open(audioCodec, codec) < 0){
 __android_log_print(ANDROID_LOG_ERROR, DEBUG_TAG,"ERROR:: Unable to avcodec_open");
 return;
 }

 bufSize = FF_MIN_BUFFER_SIZE * 10;
 buf = (uint8_t *)malloc(bufSize);
 if (buf == NULL) return;
 frameBytes = audioCodec->frame_size * audioCodec->channels * 2;
 FILE *fileWrite = fopen(FILE_NAME,"w+b");
 if(NULL == fileWrite){
 __android_log_print(ANDROID_LOG_ERROR, DEBUG_TAG,"ERROR:: Unable to open file for reading.");
 }
 /*Write wave header*/
 WriteWav(fileWrite, 32505);/*Just for test*/

 /*Lets encode raw packet and write into file after header.*/
 __android_log_print(ANDROID_LOG_INFO, DEBUG_TAG,"Lets Encode Actual Bytes");
 int nChunckSize = 0;
 while (audioSize >= frameBytes)
 {
 int packetSize;

 packetSize = avcodec_encode_audio(audioCodec, buf, bufSize, (short *)audioData);
 __android_log_print(ANDROID_LOG_INFO, DEBUG_TAG,"Encoder returned %d bytes of data\n", packetSize);
 nChunckSize += packetSize;
 audioData += frameBytes;
 audioSize -= frameBytes;
 if(NULL != fileWrite){
 fwrite(buf, packetSize, 1, fileWrite);
 }
 else{
 __android_log_print(ANDROID_LOG_ERROR, DEBUG_TAG,"Unable to open file for writting... NULL");
 }
 }
 if(NULL != fileWrite){
 fclose(fileWrite);
 }
 __android_log_print(ANDROID_LOG_INFO, DEBUG_TAG,"----- Done with nChunckSize: %d --- ",nChunckSize);
 __android_log_print(ANDROID_LOG_INFO, DEBUG_TAG,"*****************************");
 wavReadnDisplayHeader(FILE_NAME);
 __android_log_print(ANDROID_LOG_INFO, DEBUG_TAG,"*****************************");
 wavReadnDisplayHeader("/sdcard/Voicemail2.wav");
}




Header Writing :



/** Writes WAV headers */
void WriteWav(FILE *f, long int bytes)
{
 /* quick and dirty */
 fwrite("RIFF",sizeof(char),4,f); /* 0-3 */ //RIFF
 PutNum(bytes+44-8,f,1,4); /* 4-7 */ //ChunkSize
 fwrite("WAVEfmt ",sizeof(char),8,f); /* 8-15 */ //WAVE Header + FMT header
 PutNum(16,f,1,4); /* 16-19 */ //Size of the fmt chunk
 PutNum(49,f,1,2); /* 20-21 */ //Audio format, 49=libgsm wave, 1=PCM,6=mulaw,7=alaw, 257=IBM Mu-Law, 258=IBM A-Law, 259=ADPCM
 PutNum(1,f,1,2); /* 22-23 */ //Number of channels 1=Mono 2=Sterio
 PutNum(8000,f,1,4); /* 24-27 */ //Sampling Frequency in Hz 
 PutNum(2*8000,f,1,4); /* 28-31 */ //bytes per second /Sample/persec
 PutNum(2,f,1,2); /* 32-33 */ // 2=16-bit mono, 4=16-bit stereo 
 PutNum(16,f,1,2); /* 34-35 */ // Number of bits per sample
 fwrite("data",sizeof(char),4,f); /* 36-39 */ 
 PutNum(bytes,f,1,4); /* 40-43 */ //Sampled data length 
}




Please help....


-
Wav File encoded with FFMPEG has issues with codecs while playing using VLC Player
6 décembre 2012, par user924702I want to convert raw PCM data(Taken from Android Phone mic) into a libGSM Wave file. After encoding into file, VLC player shows right codec information and duration but unable to play contents. Please help me to find what I am doing wrong.
Below is my code for encoding and header writing :
void EncodeTest(uint8_t *audioData, size_t audioSize)
{
AVCodecContext *audioCodec;
AVCodec *codec;
uint8_t *buf; int bufSize, frameBytes;
__android_log_print(ANDROID_LOG_INFO, DEBUG_TAG,"Lets encode :%u with size %d\n",(int)audioData, (int)audioSize);
//Set up audio encoder
codec = avcodec_find_encoder(CODEC_ID_GSM);
if (codec == NULL){
__android_log_print(ANDROID_LOG_ERROR, DEBUG_TAG,"ERROR:: Unable to find encoder(CODEC_ID_GSM)");
codec = avcodec_find_encoder(CODEC_ID_GSM);
if (codec == NULL){
__android_log_print(ANDROID_LOG_ERROR, DEBUG_TAG,"ERROR:: Unable to find encoder(CODEC_ID_GSM)");
return;
}
}
audioCodec = avcodec_alloc_context();
audioCodec->channels = 1;
audioCodec->sample_rate = 8000;
audioCodec->sample_fmt = SAMPLE_FMT_S16;
audioCodec->bit_rate = 13200;
audioCodec->priv_data = gsm_create();
switch(audioCodec->codec_id) {
case CODEC_ID_GSM:
audioCodec->frame_size = GSM_FRAME_SIZE;
audioCodec->block_align = GSM_BLOCK_SIZE;
int one = 1;
gsm_option(audioCodec->priv_data, GSM_OPT_WAV49, &one);
break;
case CODEC_ID_GSM_MS: {
int one = 1;
gsm_option(audioCodec->priv_data, GSM_OPT_WAV49, &one);
audioCodec->frame_size = 2*GSM_FRAME_SIZE;
audioCodec->block_align = GSM_MS_BLOCK_SIZE;
}
}
audioCodec->coded_frame= avcodec_alloc_frame();
audioCodec->coded_frame->key_frame= 1;
audioCodec->time_base = (AVRational){1, audioCodec->sample_rate};
audioCodec->codec_type = CODEC_TYPE_AUDIO;
if (avcodec_open(audioCodec, codec) < 0){
__android_log_print(ANDROID_LOG_ERROR, DEBUG_TAG,"ERROR:: Unable to avcodec_open");
return;
}
bufSize = FF_MIN_BUFFER_SIZE * 10;
buf = (uint8_t *)malloc(bufSize);
if (buf == NULL) return;
frameBytes = audioCodec->frame_size * audioCodec->channels * 2;
FILE *fileWrite = fopen(FILE_NAME,"w+b");
if(NULL == fileWrite){
__android_log_print(ANDROID_LOG_ERROR, DEBUG_TAG,"ERROR:: Unable to open file for reading.");
}
/*Write wave header*/
WriteWav(fileWrite, 32505);/*Just for test*/
/*Lets encode raw packet and write into file after header.*/
__android_log_print(ANDROID_LOG_INFO, DEBUG_TAG,"Lets Encode Actual Bytes");
int nChunckSize = 0;
while (audioSize >= frameBytes)
{
int packetSize;
packetSize = avcodec_encode_audio(audioCodec, buf, bufSize, (short *)audioData);
__android_log_print(ANDROID_LOG_INFO, DEBUG_TAG,"Encoder returned %d bytes of data\n", packetSize);
nChunckSize += packetSize;
audioData += frameBytes;
audioSize -= frameBytes;
if(NULL != fileWrite){
fwrite(buf, packetSize, 1, fileWrite);
}
else{
__android_log_print(ANDROID_LOG_ERROR, DEBUG_TAG,"Unable to open file for writting... NULL");
}
}
if(NULL != fileWrite){
fclose(fileWrite);
}
__android_log_print(ANDROID_LOG_INFO, DEBUG_TAG,"----- Done with nChunckSize: %d --- ",nChunckSize);
__android_log_print(ANDROID_LOG_INFO, DEBUG_TAG,"*****************************");
wavReadnDisplayHeader(FILE_NAME);
__android_log_print(ANDROID_LOG_INFO, DEBUG_TAG,"*****************************");
wavReadnDisplayHeader("/sdcard/Voicemail2.wav");
}Header Writing :
/** Writes WAV headers */
void WriteWav(FILE *f, long int bytes)
{
/* quick and dirty */
fwrite("RIFF",sizeof(char),4,f); /* 0-3 */ //RIFF
PutNum(bytesã8,f,1,4); /* 4-7 */ //ChunkSize
fwrite("WAVEfmt ",sizeof(char),8,f); /* 8-15 */ //WAVE Header + FMT header
PutNum(16,f,1,4); /* 16-19 */ //Size of the fmt chunk
PutNum(49,f,1,2); /* 20-21 */ //Audio format, 49=libgsm wave, 1=PCM,6=mulaw,7=alaw, 257=IBM Mu-Law, 258=IBM A-Law, 259=ADPCM
PutNum(1,f,1,2); /* 22-23 */ //Number of channels 1=Mono 2=Sterio
PutNum(8000,f,1,4); /* 24-27 */ //Sampling Frequency in Hz
PutNum(2*8000,f,1,4); /* 28-31 */ //bytes per second /Sample/persec
PutNum(2,f,1,2); /* 32-33 */ // 2=16-bit mono, 4=16-bit stereo
PutNum(16,f,1,2); /* 34-35 */ // Number of bits per sample
fwrite("data",sizeof(char),4,f); /* 36-39 */
PutNum(bytes,f,1,4); /* 40-43 */ //Sampled data length
}Please help....
-
ffserver + ffmpeg, out rtsp stream : why ffplay cannot play the stream, but movie player can
18 juillet 2014, par user1914692Ubuntu 12.04
I use ffserver + ffmpeg.There are a little revision of the original /etc/ffserver.conf :
RTSPPort 5454
RTSPBindAddress 0.0.0.0
# ...
<stream>
Format rtp
# coming from live feed 'feed1'
Feed feed1.ffm
</stream>The command of ffmpeg (Option 1) is :
ffmpeg -re -i '/usr/share/red5/webapps/oflaDemo/streams/hobbit_vp6.flv' http://localhost:8090/feed1.ffm
BTW, if I use Option 2 as below, it does not work :
ffmpeg -re -i '/usr/share/red5/webapps/oflaDemo/streams/hobbit_vp6.flv' http://192.168.1.105:8090/feed1.ffm
## not work:
[http @ 0x21a9c80] HTTP error 404 Not Found
http://192.168.1.105:8090/feed1.ffm: Input/output errorSo now I need to display the stream.
On the other computer :(Option 1)
ffplay rtsp://192.168.1.105:5454/test2-rtsp.mpg
Not work. [Output] rtsp UDP timeout, retrying with TCP.
Why ?(Option 2) movie player : Open location : rtsp ://192.168.1.105:5454/test2-rtsp.mpg
it works !