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

如何使用FFmpeg将MP4文件以AV1编码推流至RTMP服务器?

AV1编码推流RTMP的问题解决

问题背景

原本使用H264编码,现尝试将视频转为AV1编码,通过FFmpeg将MP4文件推流至RTMP服务器,使用NVIDIA GeForce 4070 Ti显卡硬件加速,执行命令后出现两类错误:

错误1

[mp4 @ 000001438fbc8580] muxer does not support non seekable output  
[out#0/mp4 @ 000001438dc6e500] Could not write header (incorrect codec parameters ?): Invalid argument

错误2

[flv @ 00000185737c8580] Video codec av1 not compatible with flv
[out#0/flv @ 000001857182e500] Could not write header (incorrect codec parameters ?): Function not implemented
Conversion failed!

错误原因

第一个错误大概率是命令执行时的临时参数冲突(比如输出格式意外切换为MP4而非FLV),核心问题是第二个错误:FLV容器(RTMP默认封装格式)原生不支持AV1编码,FLV官方规范未定义AV1的编码标识,因此FFmpeg默认拒绝将AV1编码内容封装进FLV。

解决方案

前提条件

你的RTMP服务器需支持实验性FLV AV1扩展(如新版nginx-rtmp模块、OBS Studio内置RTMP服务器等)。

可行FFmpeg命令

ffmpeg -hwaccel cuda -i av1video.mp4 -c:v av1_nvenc -c:a aac -b:v 4M -strict experimental -f flv "rtmp://[test_server_ip]/app/[my_streamkey]"

参数说明

  • 移除冗余的-vf "hwupload_cuda":-hwaccel cuda已将解码帧加载至CUDA设备,av1_nvenc编码器会直接调用硬件资源,无需额外上传操作。
  • 替换-c:a copy为-c:a aac:FLV仅支持AAC、MP3等少数音频编码,aac是兼容性最高的选择,避免原音频编码不被FLV支持导致推流失败。
  • 添加-strict experimental:强制FFmpeg启用FLV封装AV1的实验性功能,需服务器端对应支持。

替代方案

若服务器不支持实验性FLV AV1扩展,则标准RTMP协议无法传输AV1编码内容,建议更换为支持AV1的流媒体协议,如HLS、DASH或SRT。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 02:12:50