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

如何用ffmpeg下载SAMPLE-AES-CTR加密流?视频损坏求助

SAMPLE-AES-CTR加密流媒体下载后视频损坏的解决办法

问题根源

SAMPLE-AES-CTR是逐样本加密的流媒体格式,你用-c copy直接复制流时,FFmpeg无法把TS容器里的加密元数据正确转换成MP4要求的sinf加密盒结构,导致视频轨道解码失败;音频正常是因为音频的加密元数据转换逻辑相对简单。

可用解决方法

1. 重新编码视频(兼容性最高)

如果不介意重新编码,直接转码视频就能绕过容器加密元数据的问题,音频可以保留原始编码:

ffmpeg -i "你的流媒体URL" -c:v libx264 -c:a copy output.mp4

2. 给视频加比特流过滤器(尝试保留原编码)

要是想保留原始视频编码,加上视频流的比特流过滤器,修复加密元数据格式:

ffmpeg -i "你的流媒体URL" -c copy -bsf:v h264_mp4toannexb -bsf:a aac_adtstoasc output.mp4

h264_mp4toannexb会调整H.264流的封装格式,配合FFmpeg的解密流程让MP4容器正确识别视频轨道。

3. 先下TS片段再合并(最稳妥的备选)

要是上面的方法都没用,试试先下载所有加密TS片段再合并:

  1. 先用FFmpeg获取片段列表:
ffmpeg -i "你的m3u8地址" -hide_banner
  1. 批量下载所有TS片段(注意要带上流媒体要求的请求头,比如Cookie、Referer,否则可能下载失败)
  2. 合并解密并封装成MP4:
ffmpeg -i "concat:片段1.ts|片段2.ts|..." -c copy -bsf:a aac_adtstoasc output.mp4

额外提醒

  • 确保用的是FFmpeg 4.4以上版本,旧版本对SAMPLE-AES的容器转换支持有缺陷。
  • 如果流媒体需要验证身份,记得在命令里加请求头,比如:
ffmpeg -headers "Cookie: 你的Cookie内容" -referer "来源页面地址" -i "流媒体URL" ...

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 16:30:58