iOS录屏直播能把CMSampleBufferRef从子App传输到宿主App中吗?

追沐 发布于 2019/06/04 19:12
阅读 1K+
收藏 0
iOS

iOS录屏直播怎么把CMSampleBufferRef从子Extension中传输到宿主App中?可以通过写group写入文件,在主App中读出来,CMSampleBufferRef转成什么类型的文件存储呢,NSData吗?

加载中
0
追沐
追沐
- (NSData *)dataWithSampBuffer:(CMSampleBufferRef)sampBuffer { CVImageBufferRef imageBuffer = CMSampleBufferGetImageBuffer(sampBuffer); CVPixelBufferLockBaseAddress(imageBuffer,0); size_t bytesPerRow = CVPixelBufferGetBytesPerRow(imageBuffer); size_t width = CVPixelBufferGetWidth(imageBuffer); size_t height = CVPixelBufferGetHeight(imageBuffer); void *src_buff = CVPixelBufferGetBaseAddress(imageBuffer); NSData *data = [NSData dataWithBytes:src_buff length:bytesPerRow * height]; CVPixelBufferUnlockBaseAddress(imageBuffer, 0); return data; }
追沐
追沐
这样可以把数据写入共享文件中,在宿主App中也能读取到,但是读取到之后怎么转成CMSampleBufferRef呢?
0
追沐
追沐

转成NSData,然后通过group组写入文件中,发送通知到宿主App,宿主App将NSData读取出来,然后怎么将NSData转回到sampBuffer呢?如果你知道请咋告诉我。谢谢!

https://stackoverflow.com/questions/19592820/convert-nsdata-to-cmsamplebufferref

OSC_ZPemZG
OSC_ZPemZG
具体你去参照下网易云通信屏幕共享的处理方式
0
追沐
追沐

            CMSampleBufferRef sampleBuffer = (CMSampleBufferRef)data.bytes;   ??????

0
追沐
追沐

从CMSampleBufferRef中提取yuv数据,即将视频的CMSampleBufferRef转成NSData。

0
我也不知道改说啥了
我也不知道改说啥了

我也遇到相同的问题了

0
我也不知道改说啥了
amplesky
amplesky
怎么弄的说下吧,现在不知道怎么转
s
ss20090567
回复 @Morris_ : 利用local socket可以把扩展的buffer传到宿主
M
Morris_
你了解zoom的SDK吗,他们就是将数据实时传到宿主App里,宿主App的负责推流的,这样子App中不用引推流功能的SDK。
M
Morris_
怎么解决的,求教。
0
OSC_ZPemZG
OSC_ZPemZG

1.建立本地socket通信,然后将sampleBuffer转化成i420Frame 最终以data方式发送到主工程;

2.主工程接收data转换成i420Frame 再转换成sampleBuffer,然后进行屏幕共享的操作;

丶九月
丶九月
回复 @OSC_ZPemZG : 如果主App没有启动,通过宿主App直接录制文件,主App和宿主App之间无法连接?
M
Morris_
回复 @OSC_ZPemZG : 谢谢。
OSC_ZPemZG
OSC_ZPemZG
https://github.com/wangzhao0630/TestSampleBuffer
0
Lco
Lco

swift 中 怎么处理数据呢?目前看到的都是OC的

OSCHINA
登录后可查看更多优质内容
返回顶部
顶部