Open gg22mm opened 1 month ago
俺也一样!
大老是个流 操作高手中的高手~~ 正看啃代码,云里雾里的,我盲猜是通过队列来实现 音频与视频同步的。 ~~ , 感觉这块好复杂呀, 要是有个精简的例子就好了 。或是有别的更简单的方式~~
//不管是音频还是视频帧,都放队里中 video_track._queue.put(new_frame) frame = await self._queue.get()
res_frame_queue.put((res_frame,__mirror_index(length,index),audio_frames[i2:i2+2])) res_frame,idx,audio_frames = self.res_frame_queue.get(block=True, timeout=1)
俺也不懂!
一点浅见:process_frames承接同一个文件的inference函数的输出,在有数据时将人脸合成到原有图片上,否则采用原有视频的图片处理。然后将图片与视频合并放在audio与video track(webrtc.py) 中,计算时间戳,走webrtc channel发送。同步是基于图像帧数(25fps)与音频帧数(50fps)。所以那边会有个2倍的音频处理。
简单的例子看看aiortc里的example
一点浅见:process_frames承接同一个文件的inference函数的输出,在有数据时将人脸合成到原有图片上,否则采用原有视频的图片处理。然后将图片与视频合并放在audio与video track(webrtc.py) 中,计算时间戳,走webrtc channel发送。同步是基于图像帧数(25fps)与音频帧数(50fps)。所以那边会有个2倍的音频处理。
没做你说的这一步: 《然后将图片与视频合并放在audio》, 作者直接用图片了。 ~~ , 说白了就是直接推图片,一秒25张,与声音25帧到队列,然后从队列渲染到页面,然后接着从50开始依次循环..,没有牵扯到合并,合并就慢了. ~~不过我 想想都麻烦
作者是全网一个把视频与音频做成流来推送的,非常有创新 ,不过我感觉好麻烦呀
看不懂是怎么回事~~