You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在.NET容器服务中获取音视频时长及视频尺寸(无需本地存储)

解决方案

1. 选择跨平台媒体处理依赖

使用FFmpeg的.NET封装库FFmpegCore,它支持直接从流读取媒体信息,无需落地文件,且兼容Linux环境。

2. 核心代码实现(直接处理IFormFile流)

无需将文件保存到本地,直接通过流解析视频元数据:

using FFmpegCore;
using FFmpegCore.Pipes;
using Microsoft.AspNetCore.Mvc;

[ApiController]
[Route("api/video")]
public class VideoController : ControllerBase
{
    [HttpPost("info")]
    public async Task<IActionResult> GetVideoMetadata(IFormFile file)
    {
        if (file == null || file.Length == 0)
            return BadRequest("未上传有效视频文件");

        // 直接读取IFormFile的流,无需本地存储
        using var stream = file.OpenReadStream();
        var mediaInfo = await FFmpeg.GetMediaInfoAsync(new StreamPipeSource(stream));

        var videoStream = mediaInfo.VideoStreams.FirstOrDefault();
        if (videoStream == null)
            return BadRequest("上传文件不是视频格式");

        return Ok(new
        {
            DurationSeconds = mediaInfo.Duration.TotalSeconds,
            Width = videoStream.Width,
            Height = videoStream.Height,
            Format = mediaInfo.Format.Name
        });
    }
}

3. Docker容器配置(Linux环境)

FFmpegCore依赖系统级FFmpeg二进制文件,需在Docker镜像中安装FFmpeg:

Dockerfile示例(基于ASP.NET Core镜像)

# 基础运行时镜像(Linux)
FROM mcr.microsoft.com/dotnet/aspnet:8.0-bookworm-slim AS base
WORKDIR /app
EXPOSE 8080

# 安装FFmpeg依赖
RUN apt-get update && \
    apt-get install -y --no-install-recommends ffmpeg && \
    rm -rf /var/lib/apt/lists/*

# 构建阶段
FROM mcr.microsoft.com/dotnet/sdk:8.0-bookworm-slim AS build
WORKDIR /src
COPY ["YourProjectName.csproj", "."]
RUN dotnet restore "./YourProjectName.csproj"
COPY . .
WORKDIR "/src/."
RUN dotnet build "YourProjectName.csproj" -c Release -o /app/build

# 发布阶段
FROM build AS publish
RUN dotnet publish "YourProjectName.csproj" -c Release -o /app/publish /p:UseAppHost=false

# 最终镜像
FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "YourProjectName.dll"]

4. 关键注意事项

  • 安装NuGet包:执行dotnet add package FFmpegCore引入依赖
  • 大文件处理:若需支持大视频,建议添加文件大小限制,并考虑分段流式解析避免内存溢出
  • 格式兼容:FFmpeg支持MP4、AVI、MKV等主流视频格式,无需额外配置

内容的提问来源于stack exchange,提问作者Huynh Son

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 08:04:52