我正在使用 FFMPEG 在 asp.net 中上传音频文件。我的问题是如何获得文件的持续时间(以秒为单位)。
请给我建议。
谢谢并恭祝安康
斯里尼瓦斯 M
最佳答案
为什么要解析输出?而是使用 FFMpeg API 从文件的音频流中获取持续时间。不能依赖输出字符串,例如开发团队决定将来更改日志。所以使用 API 来获取持续时间。
按着这些次序:
1. av_register_all();
2. AVFormatContext * inAudioFormat = NULL;
inAudioFormat = avformat_alloc_context();
int errorCode = av_open_input_file(& inAudioFormat, "your_audio_file_path", NULL, 0, NULL);
3. int numberOfStreams = inAudioFormat->nb_streams;
AVStream *audioStream = NULL;
for (int i=0; i<numberOfStreams; i++)
{
AVStream *st = inAudioFormat->streams[i];
if (st->codec->codec_type == CODEC_TYPE_AUDIO)
{
audioStream = st;
break;
}
}
4. double divideFactor;
divideFactor = (double)1/rationalToDouble(audioStream->time_base);
5. double durationOfAudio = (double) audioStream->duration / divideFactor;
6. av_close_input_file(inAudioFormat);
我没有在此代码中包含任何错误检查,您可以自己解决。我希望这有帮助。
关于.net - 使用FFMPEG上传后如何获取音频文件的持续时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2697324/