簡體   English   中英

AMR音頻文件的持續時間

[英]Duration of an amr audio file

我想找到類型為“ amr”的音頻文件的持續時間,而不用任何方式將其轉換為其他音頻格式?

阿克

我已經在Objective-C中編寫了以下代碼,以獲取電影的播放時間。 同樣可以使用它來獲取音頻的持續時間:

-(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;
}

CODEC_TYPE_VIDEO更改為CODEC_TYPE_AUDIO ,我認為它應該對您CODEC_TYPE_AUDIO

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM