使用ffmpeg推送MP4文件到Instagram直播出现IO错误如何解决
问题根因
从错误日志可以看到核心是TLS传输错误+直播会话被平台主动失效,对应av_interleaved_write_frame(): I/O error和The specified session has been invalidated for some reason两个报错,可按以下顺序排查解决:
- 替换推流协议与端口
Instagram直播同时支持RTMP和RTMPS协议,你使用的2020版ffmpeg的RTMPS传输模块存在已知不稳定问题,可将地址前缀的rtmps://改为rtmp://,端口从443改为1935,规避TLS传输报错。 - 修正音频编码格式
Instagram直播要求音频编码为AAC格式,你当前使用的libmp3lame编码的MP3格式不符合平台要求,会直接被拒流。将参数-acodec libmp3lame替换为-acodec aac即可,音频采样率、码率参数无需调整。 - 确保推流地址有效性
从instafeed.me获取的Instagram直播推流地址有效期通常仅为2~5分钟,生成地址后请在1分钟内启动推流,超时地址会自动失效,需要重新生成新的推流地址。 - 适配正确的视频分辨率比例
Instagram竖屏直播要求视频比例严格为9:16,你当前输出的504x896分辨率SAR计算异常,可能触发平台的格式校验拦截。可添加视频滤镜参数强制适配比例:-vf "scale=720:1280:force_original_aspect_ratio=decrease,pad=720:1280:(ow-iw)/2:(oh-ih)/2,setsar=1",移除原有-s 504x896参数即可。
调整后的参考命令
ffmpeg -rtbufsize 256M -re -i "1.mp4" -acodec aac -ar 44100 -b:a 128k -pix_fmt yuv420p -profile:v baseline -vf "scale=720:1280:force_original_aspect_ratio=decrease,pad=720:1280:(ow-iw)/2:(oh-ih)/2,setsar=1" -bufsize 6000k -vb 400k -maxrate 1500k -deinterlace -vcodec libx264 -preset veryfast -g 30 -r 30 -f flv "rtmp://live-upload.instagram.com:1935/rtmp/替换为你自己的推流密钥"
内容的提问来源于stack exchange,提问作者raitech
相关产品推荐
相关产品推荐

