.net - 使用FFMPEG上传后如何获取音频文件的持续时间

标签 .net asp.net ffmpeg

我正在使用 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/

相关文章:

c# - C# 中的高效图像处理

audio - FFMPEG 是否有 "guard"反对剪辑?

c# - 变量声明应该总是放在循环之外吗?

.net - 如何检测 MarshalByRefObject 是本地还是远程?

c# - 关于依赖注入(inject),何时使用抽象类与接口(interface)?

javascript - 通过javascript从radiobuttonlist获取值?

c# - 无法访问 asp :TextBox tag from the C# file : the name 'txtUsername' does not exist in the current context

c# - ASP.NET Web 应用程序 - 在部署时,System.Speech.dll 对象未设置为对象的实例

android - ffmpeg 视频编辑器库可以在 android 中免费使用吗?

command-line - ffmpeg concat 命令未正确读取输入文件