ffmpeg实时流转码相机快速移动带来的A / V同步问题

问题描述

  1. 我与服务器创建了一个Webrtc对等连接(仅电击)
  2. 为服务器使用pion webrtc
  3. 我将接收到的RTP数据包作为VP8和opus流as described here写到两个管道(写入器;在golang中使用os.Pipe()创建)
  4. ffmpeg接收这两个管道的读取端作为输入(通过exec.Command.ExtraFiles),以便使用libx264和aac转码为单个流。命令:
ffmpeg -re -i pipe:3 -re -r pipe:4 -c:a aac -af aresample=48000 -c:v libx264 -x264-params keyint=48:min-keyint=24 -profile:v main -preset ultrafast -tune zerolatency -crf 20 -fflags genpts -avoid_negative_ts make_zero -vsync vfr -map 0:0,0:0 -map 1:0,0:0 -f matroska -strict -2 pipe:5
  1. 以上命令将以下内容输出到管道(:5),该管道的读取端作为输入:
ffmpeg -hide_banner -y -re -i pipe:3 -sn -vf scale=-1:'min(ih,360)' -c:v libx264 -pix_fmt yuv420p -ca aac -b:a 128k -b:v 1400k -maxrate 1498k -bufsize 2100k -hls_time 1 -hls_playlist_type event -hls_base_url /workdir/streamID/360p -hls_segment_filename /workdir/streamID/360p/360_%%03d.ts -f hls /workdir/streamID/360p.m3u8
  1. 只要我的网络摄像头没有动静,此方法就可以正常工作。发生的那一刻,视频速度突然增加了一秒钟,并引入了音频延迟。每当我摇动网络摄像头时,这种延迟都会不断增加。

上面第4点中的第一个命令-如果单独写入文件,就影音同步而言,即使有剧烈的相机晃动,也绝对可以。仅当为hls输出进行转码时才出现奇怪的音频延迟,无论我实际上是实时查看它还是稍后再播放。

这是我第一次与ffmpeg / hls / webrtc一起工作-如果至少可以将我指向正确的方向以进行调试或什至知道为什么会发生,这将非常有帮助。任何帮助都将不胜感激

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...