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

使用ytdl-core+ffmpeg-static生成的视频时长异常过长问题

解决Windows 10播放器无法识别ytdl+ffmpeg合成视频时长的问题

问题根源

你当前FFmpeg参数里的empty_moov是导致异常的核心原因:这个参数会生成不带moov原子的碎片化MP4,Windows 10自带播放器必须依赖这个原子读取视频时长、进度等元数据,而VLC、Discord这类播放器能动态解析流式内容,所以不受影响。

具体修改方案

替换FFmpeg的-movflags参数,移除empty_moov,改用faststart,同时保留frag_keyframe支持流式传输:

'-movflags', 'frag_keyframe+faststart',

faststart会将moov原子移到文件头部,这样播放器在下载/播放初期就能获取到正确的元数据,既不影响流式传输,又能让Windows播放器正确识别时长并支持进度拖动。

额外优化建议

  • 你代码里重复写了-vcodec和-c:v,两者作用完全一致,保留一个即可(比如保留-c:v libx264)
  • 如果是服务端处理大量请求,建议把-preset veryslow换成medium,平衡压缩速度和文件体积;如果追求极致压缩率,可以保留原设置

修改后的FFmpeg参数片段

const ffmpegProcess = cp.spawn(ffmpeg, [
    '-i', `pipe:3`,
    '-i', `pipe:4`,
    '-map', '1:0',
    '-map', '0:0',
    '-c:v', 'libx264',
    '-c:a', 'aac',
    '-crf', '27',
    '-preset', 'veryslow',
    '-b:v', '1500k',
    '-b:a', '128k',
    '-movflags', 'frag_keyframe+faststart',
    '-f', 'mp4',
    '-loglevel', 'error',
    '-',
], {
    stdio: [
        'pipe', 'pipe', 'pipe', 'pipe', 'pipe',
    ],
});

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 20:10:02