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

使用FFmpeg生成空白视频失败:无文件生成且无报错信息

问题描述

在C#中执行FFmpeg命令生成空白视频文件时出现异常,相关代码如下:

string ffmpegPath = "path/to/ffmpeg";
string outputPath = "empty.mpeg";

string command = $"{ffmpegPath} -t 7200 -s 640x480 -f rawvideo -pix_fmt rgb24 -r 25 -i /dev/zero {outputPath}";

// ... 执行FFmpeg命令的代码 ...

运行后未生成目标文件empty.mpeg,控制台无任何输出或报错提示。已确认FFmpeg安装正常、可执行文件及输出路径均正确,尝试过重定向标准错误流、更换多种文件格式和扩展名,问题仍未解决。

解决思路
  • 适配操作系统特殊设备路径:/dev/zero是Linux/Unix系统专属的零数据设备文件,Windows系统无法识别,这是核心问题。Windows环境下需将输入源替换为NUL,修改后的命令如下:
    {ffmpegPath} -t 7200 -s 640x480 -f rawvideo -pix_fmt rgb24 -r 25 -i NUL {outputPath}
    
  • 规范C#进程执行逻辑:确保正确配置FFmpeg进程的输出/错误流重定向,避免因流阻塞导致进程未正常执行。示例执行代码:
    ProcessStartInfo startInfo = new ProcessStartInfo
    {
        FileName = ffmpegPath,
        Arguments = "-t 7200 -s 640x480 -f rawvideo -pix_fmt rgb24 -r 25 -i NUL empty.mpeg",
        RedirectStandardOutput = true,
        RedirectStandardError = true,
        UseShellExecute = false,
        CreateNoWindow = true
    };
    
    using (Process process = Process.Start(startInfo))
    {
        string output = process.StandardOutput.ReadToEnd();
        string error = process.StandardError.ReadToEnd();
        process.WaitForExit();
    
        // 输出日志用于排查
        Console.WriteLine("FFmpeg输出:" + output);
        Console.WriteLine("FFmpeg错误:" + error);
    }
    
  • 简化命令快速验证:先缩短视频时长(例如-t 10生成10秒视频)减少测试等待时间;同时明确指定视频编码器,比如添加-c:v mpeg2video确保MPEG格式编码流程正常:
    {ffmpegPath} -t 10 -s 640x480 -f rawvideo -pix_fmt rgb24 -r 25 -i NUL -c:v mpeg2video empty.mpeg
    
  • 终端直接测试命令:跳过C#代码,直接在系统终端运行修改后的FFmpeg命令,验证命令本身是否能生成文件,排除代码执行逻辑的问题。

内容的提问来源于stack exchange,提问作者Frost Dream

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 22:13:40