peilinok / screen-recorder

This repo has been archived, please visit https://github.com/peilinok/traa to get the new project!
GNU General Public License v3.0
152 stars 63 forks source link

音频和视频编码的时候不需要比较下时间戳吗? #19

Closed openlina closed 3 years ago

openlina commented 3 years ago

您好,我在学习您的代码,但是没有看到 av_compare_ts 的调用,比较好奇,所以请教一下

peilinok commented 3 years ago

一定是看到了雷神的博客和各种例子了,实时的合流不需要的,甚至后面我可能会放弃用FFMPEG进行合流,合流是否同步的关键是时间戳打的是否正确

peilinok commented 3 years ago

您好,我在学习您的代码,但是没有看到 av_compare_ts 的调用,比较好奇,所以请教一下

https://my.oschina.net/u/4312833/blog/4405326

刚好我也在看实时通讯的同步机制,建议你也可以看看,这样对时间戳理解有帮助

openlina commented 3 years ago

好的,学习了。 您后面放弃用ffmpeg合流,是打算要用单独的封装格式进行封装吗? 如flv 格式, 分别编两路video/audio,然后放进flv的容器中?

peilinok commented 3 years ago

好的,学习了。 您后面放弃用ffmpeg合流,是打算要用单独的封装格式进行封装吗? 如flv 格式, 分别编两路video/audio,然后放进flv的容器中?

差不多类似的,FFMPEG没精力去裁剪编译,官方包体积太大了

peilinok commented 3 years ago

好的,学习了。 您后面放弃用ffmpeg合流,是打算要用单独的封装格式进行封装吗? 如flv 格式, 分别编两路video/audio,然后放进flv的容器中?

修复了一个困扰了很久的问题,已经提交,现在音视频的时间戳同步时钟都用了是ffmpeg内部微秒级的了,之前的是强制的设置为同一个起跑线

openlina commented 3 years ago

还有个问题请教一下: 代码中使用了ring_buffer,环形缓冲区, 会出现这种情况吗? buffer初始化大小为10, 每次put数据长度为3, put了4组数据,假设4组数据分别是 1,2,3; 4,5,6; 7,8,9; 10,11,12. 这时候队列的数据是 11,12,3,4,5,6,7,8,9,10, 现在取第1组数据,得到的不是预想的1,2,3, 而是 11,12,3

peilinok commented 3 years ago

还有个问题请教一下: 代码中使用了ring_buffer,环形缓冲区, 会出现这种情况吗? buffer初始化大小为10, 每次put数据长度为3, put了4组数据,假设4组数据分别是 1,2,3; 4,5,6; 7,8,9; 10,11,12. 这时候队列的数据是 11,12,3,4,5,6,7,8,9,10, 现在取第1组数据,得到的不是预想的1,2,3, 而是 11,12,3

有可能会的,后续不会再用环形缓冲区

openlina commented 3 years ago

还有个问题请教一下: 代码中使用了ring_buffer,环形缓冲区, 会出现这种情况吗? buffer初始化大小为10, 每次put数据长度为3, put了4组数据,假设4组数据分别是 1,2,3; 4,5,6; 7,8,9; 10,11,12. 这时候队列的数据是 11,12,3,4,5,6,7,8,9,10, 现在取第1组数据,得到的不是预想的1,2,3, 而是 11,12,3

有可能会的,后续不会再用环形缓冲区

现在没有出现这个问题,可能是因为初始化分配足够大的空间,或者分配的空间是所放进来数据的整数倍吧

openlina commented 3 years ago

还有个问题请教一下: 代码中使用了ring_buffer,环形缓冲区, 会出现这种情况吗? buffer初始化大小为10, 每次put数据长度为3, put了4组数据,假设4组数据分别是 1,2,3; 4,5,6; 7,8,9; 10,11,12. 这时候队列的数据是 11,12,3,4,5,6,7,8,9,10, 现在取第1组数据,得到的不是预想的1,2,3, 而是 11,12,3

有可能会的,后续不会再用环形缓冲区

现在没有出现这个问题,可能是因为初始化分配足够大的空间,或者分配的空间是所放进来数据的整数倍吧

分配了足够大的空间, 会导致读空间紧紧跟着写空间,不会出现数据交叠; 如果是整数倍的空间, 数据按照单元进行覆盖,只会数据丢失,不会交错

peilinok commented 3 years ago

还有个问题请教一下: 代码中使用了ring_buffer,环形缓冲区, 会出现这种情况吗? buffer初始化大小为10, 每次put数据长度为3, put了4组数据,假设4组数据分别是 1,2,3; 4,5,6; 7,8,9; 10,11,12. 这时候队列的数据是 11,12,3,4,5,6,7,8,9,10, 现在取第1组数据,得到的不是预想的1,2,3, 而是 11,12,3

有可能会的,后续不会再用环形缓冲区

现在没有出现这个问题,可能是因为初始化分配足够大的空间,或者分配的空间是所放进来数据的整数倍吧

分配了足够大的空间, 会导致读空间紧紧跟着写空间,不会出现数据交叠; 如果是整数倍的空间, 数据按照单元进行覆盖,只会数据丢失,不会交错

是这样字的,当时这样写的用意就是不希望有错数据,宁愿有丢失的数据

openlina commented 3 years ago

嗯嗯,明白了 : )

peilinok commented 3 years ago

嗯嗯,明白了 : )

你有兴趣参与2.0开发吗?我一个人精力不够,有的话给我私人邮箱发邮件,peilinok@163.com