0
Je veux trouver la durée d'un fichier audio de type "amr" sans le convertir en d'autres formats audio d'aucune façon?Durée d'un fichier audio amr
AK
Je veux trouver la durée d'un fichier audio de type "amr" sans le convertir en d'autres formats audio d'aucune façon?Durée d'un fichier audio amr
AK
J'ai codé ce qui suit dans Objective-C pour obtenir la durée d'un film. De même, cela peut être utilisé pour obtenir la durée de l'audio aussi:
-(double)durationOfMovieAtPath:(NSString*)inMoviePath
{
double durationToReturn = -1;
NSFileManager *fm = [NSFileManager defaultManager];
if ([fm fileExistsAtPath:inMoviePath])
{
av_register_all();
AVFormatContext *inMovieFormat = NULL;
inMovieFormat = avformat_alloc_context();
int errorCode = av_open_input_file(&inMovieFormat, [inMoviePath UTF8String], NULL, 0, NULL);
//double durationToReturn = (double)inMovieFormat->duration/AV_TIME_BASE;
if (0==errorCode)
{
// only on success
int numberOfStreams = inMovieFormat->nb_streams;
AVStream *videoStream = NULL;
for (int i=0; i<numberOfStreams; i++)
{
AVStream *st = inMovieFormat->streams[i];
if (st->codec->codec_type == CODEC_TYPE_VIDEO)
{
videoStream = st;
break;
}
}
double divideFactor;
// The duraion in AVStream is set in accordance with the time_base of AVStream, so we need to fetch back the duration using this factor
divideFactor = (double)1/rationalToDouble(videoStream->time_base);
if (NULL!=videoStream)
durationToReturn = (double)videoStream->duration/divideFactor;
//DEBUGLOG (@"Duration of movie at path: %@ = %0.3f", inMoviePath, durationToReturn);
}
else
{
DEBUGLOG (@"avformat_alloc_context error code = %d", errorCode);
}
if (nil!=inMovieFormat)
{
av_close_input_file(inMovieFormat);
//av_free(inMovieFormat);
}
}
return durationToReturn;
}
Modifier le CODEC_TYPE_VIDEO
-CODEC_TYPE_AUDIO
et je pense que cela devrait fonctionner pour vous.
ok merci! Quelque chose pour Java? – Antonis
Le code ci-dessus peut être facilement converti en java. Le code est parfait pour la vidéo, je l'ai testé. Faites-moi savoir si c'est aussi compatible avec les fichiers audio. Tout ce qui diffère est le flux que vous ramassez. –
ok je vais l'essayer! – Antonis