我可以从iPhone的相机中获得单独的帧.我需要的是一种用声音打包它们以便流式传输到服务器的方法.我拥有它们后发送文件并不是什么大问题.它生成的流媒体文件我遇到了问题.我一直试图让FFMpeg没有太多运气.
任何人都有任何关于如何解决这个问题的想法?我想要一个已知的工作API或有关让FFMpeg在iPhone应用程序中正确编译的说明.
我已经使用ffmpeg来解码我从ip cam收到的每一帧.简短的代码如下所示:
-(void) decodeFrame:(unsigned char *)frameData frameSize:(int)frameSize{
AVFrame frame;
AVPicture picture;
AVPacket pkt;
AVCodecContext *context;
pkt.data = frameData;
pat.size = frameSize;
avcodec_get_frame_defaults(&frame);
avpicture_alloc(&picture, PIX_FMT_RGB24, targetWidth, targetHeight);
avcodec_decode_video2(&context, &frame, &got_picture, &pkt);
}
Run Code Online (Sandbox Code Playgroud)
代码很好,但它是软件解码.我想通过硬件解码来提高解码性能.经过大量的研究,我知道它可以通过AVFoundation框架实现.AVAssetReader类可能会有所帮助,但我无法弄清楚下一步是什么.有人可以为我指出以下步骤吗?任何帮助,将不胜感激.
我真的很喜欢这个问题,因为我没有在互联网上看到有关iOS视频编码的足够信息,但是我们可以观察到大量应用成功解决视频流问题的应用程序(skype,qik,justin.tv等) .)
我将开发一个应用程序,它应该将从摄像机获得的视频帧发送到网络服务器,并在h.263(h.264或MPEG-4,它正在决定)中编码.为此,我需要一些视频编码库.显然,ffmpeg可以处理这个任务,但它是在LGPL许可下,这可能会导致在AppStore中提交应用程序时出现一些问题.另一方面,有些应用程序似乎使用ffmpeg库,但只有Timelapser在应用程序描述中明确说明了这一事实.这是否意味着,其他应用程序没有使用ffmpeg或仅隐藏此信息?
请分享您对此主题的想法和经验.我对dicsussion持开放态度.
所以这是一个更理论化的问题/讨论,因为我无法从网上找到其他SO帖子和来源的明确答案.似乎有很多选择:
如果我想在iOS上为H.264(mov)文件进行硬件解码,我可以简单地使用AVFoundation和AVAssets,还是应该使用VideoToolbox(或任何其他框架).使用这些时,如何在运行项目时分析/基准测试硬件性能? - 只是通过简单地查看XCode中"Debug Navigator"中的CPU使用情况?
简而言之,我基本上是在询问AVFoundation和AVAssets是否执行硬件编码?它们是否足够,我如何对实际性能进行基准测试?
谢谢!
我从developer.Apple网站下载了示例代码GLPaint,使用OpenGL在Canvas上绘制图片.
我已经完成了GLPaint应用程序中的更改以满足我的要求.
现在我需要将绘图记录为m4v视频文件,该文件应该集成我在绘制图像时说出的口头指令.
例如:
点击"绘制和录制"按钮后,我开始画一个圆圈并说出"这是一个圆圈".
单击完成按钮后,结果应为包含绘图操作的视频文件,其中包含"这是一个圆圈"的声音
我研究了这个主题,但我没有找到任何好的方法来完成这个功能.
PaintingView.h EAGLContext*context;
// OpenGL names for the renderbuffer and framebuffers used to render to this view
GLuint viewRenderbuffer, viewFramebuffer;
// OpenGL name for the depth buffer that is attached to viewFramebuffer, if it exists (0 if it does not exist)
GLuint depthRenderbuffer;
GLuint brushTexture;
CGPoint location;
CGPoint previousLocation;
Run Code Online (Sandbox Code Playgroud)
PaintingView.m
// Handles the start of a touch
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
CGRect bounds = [self bounds];
UITouch* touch = [[event touchesForView:self] …Run Code Online (Sandbox Code Playgroud) ios ×3
avfoundation ×2
ffmpeg ×2
h.264 ×2
iphone ×2
objective-c ×1
opengl-es ×1
video ×1
xcode ×1