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

FFmpeg拼接yt-dlp下载的视频失败,求助解决方法

FFmpeg拼接yt-dlp下载的视频失败,求助解决方法

我之前也踩过FFmpeg拼接YT下载视频的坑,给你梳理几个大概率能解决的方向,你可以一步步排查:

1. 先确认所有待拼接视频的参数完全一致

用-f concat + -c copy这种“直接复制流”的拼接方式,要求所有视频的编码格式、分辨率、帧率、音频参数(比如采样率、声道数)完全匹配——这是最容易踩的坑:yt-dlp下载的分段视频,有时候会因为源站的流参数不同,导致片段之间参数不兼容,直接用-c copy就会报错。

你可以用ffprobe命令快速检查单条视频的参数:

ffprobe -v error -select_streams v:0 -show_entries stream=codec_name,width,height,r_frame_rate -of default=noprint_wrappers=1:nokey=1 你的视频文件名.mp4

把所有待拼接的视频都跑一遍这个命令,对比输出的结果,如果有任何一项不一样,就说明参数不统一,-c copy肯定用不了。

2. 针对参数不统一的两种解决办法

办法A:重新下载统一参数的视频

直接让yt-dlp下载编码、参数一致的流,比如指定下载H264编码的MP4视频(兼容性最好):

yt-dlp -f "bestvideo[ext=mp4][vcodec*=h264]+bestaudio[ext=m4a]/best[ext=mp4]" <你的视频链接>

如果是批量下载的分段视频,这个命令能确保所有片段都是同一套参数,之后再用你原来的concat命令就能直接copy拼接了。

办法B:用FFmpeg重新编码后拼接

如果不想重新下载,就放弃-c copy,让FFmpeg把所有视频转成统一编码再拼接,虽然耗时久一点,但兼容性拉满:

ffmpeg -y -f concat -safe 0 -i files.txt -c:v libx264 -c:a aac merged.mp4

从你贴的FFmpeg编译信息来看,你的版本是支持libx264和aac编码的,这个命令肯定能跑通。

3. 检查你的files.txt格式是否正确

别小看这个细节!files.txt里的每一行必须严格写成:

file '你的视频文件的绝对路径/文件名.mp4'

比如Windows下是file 'C:\Users\xxx\Downloads\video_1.mp4',Linux/macOS是file '/home/xxx/Downloads/video_1.mp4',用单引号把路径括起来,避免空格或特殊字符导致的识别错误。

4. 试试添加音频流修复参数

你之前试过-bsf:a aac_adtstoasc,这个参数是用来修复有些MP4音频流缺少ADTS头的问题,如果你的视频参数本身是一致的,但还是报错,可以把这个参数加上再试:

ffmpeg -y -f concat -safe 0 -i files.txt -map 0 -c copy -bsf:a aac_adtstoasc merged.mp4

你可以先从检查视频参数开始排查,大概率就能找到问题啦~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.15 15:23:05