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

如何在Windows系统下使用FFmpeg命令将.ts文件数据写入命名管道

如何在Windows系统下使用FFmpeg命令将.ts文件数据写入命名管道

我之前刚好做过类似的测试,给你梳理下完整的操作步骤:

首先得先创建好Windows的命名管道,我当时用C++写了一段核心代码来创建管道:

HANDLE hPipe = CreateNamedPipe(
    "\\\\.\\pipe\\mpegts",         // Windows命名管道的固定格式:\\.\pipe\管道名
    PIPE_ACCESS_DUPLEX,           // 设置管道为双向访问模式
    PIPE_TYPE_BYTE | PIPE_READMODE_BYTE | PIPE_WAIT,  // 字节传输模式+阻塞等待
    PIPE_UNLIMITED_INSTANCES,     // 允许创建无限个管道实例
    1024 * 1024 * 10,             // 输出缓冲区大小(10MB)
    1024 * 1024 * 10,             // 输入缓冲区大小(10MB)
    0,                            // 使用默认超时设置
    NULL                          // 使用默认安全属性
);
if (hPipe == INVALID_HANDLE_VALUE) {
    // 这里可以补充错误处理逻辑,比如打印GetLastError()获取具体错误码
    return -1;
}
// 保持管道处于监听状态,等待客户端连接
Sleep(1000000);

这段代码会创建一个名为mpegts的命名管道,并且一直处于等待状态,直到有程序连接进来写入数据。

接下来就是用FFmpeg把.ts文件的数据写入这个管道了,Windows下要注意命名管道的路径转义,完整命令如下:

ffmpeg -re -stream_loop -1 -i input.ts -c copy -f mpegts "\\\\.\\pipe\\mpegts"

给你解释几个关键参数:

  • -re:按照视频的实际帧率读取数据,避免一次性把文件全部读完
  • -stream_loop -1:无限循环读取输入的.ts文件
  • -i input.ts:替换成你实际的.ts文件路径
  • -c copy:直接复制音视频流,不做编码转码,保证效率
  • -f mpegts:指定输出格式为mpegts,和管道接收端的格式匹配
  • \\\\.\\pipe\\mpegts:命令行里反斜杠需要转义,所以用四个反斜杠开头,也可以用双引号直接包裹\\.\pipe\mpegts

⚠️ 注意操作顺序:必须先运行创建管道的C++程序,让管道处于监听状态,再启动FFmpeg命令,否则FFmpeg会因为找不到管道而报错。

备注:内容来源于stack exchange,提问作者qyt

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.13 16:17:57