我正在制作一个支持视频通话的应用程序,我正在寻找解释h.264编解码器结构的教程/文档.我希望能够打包流,将其包装在数据报中,在接收端发送和解压缩.
有什么建议/阅读材料吗?
我将很快开始最后一年的工程项目,包括对在2D表面上移动的物体的实时跟踪.我的算法将使用特征提取来注册对象.
我正在尝试做一些研究来决定是否应该使用MATLAB或使用Python Numpy(数值Python).我考虑的一些因素:
1.)经验
我在两者方面都有合理的经验,但也许有更多使用Numpy的图像处理经验.但是,我总是发现MATLAB非常直观且易于掌握.
2.)实时能力
我的选择能够支持从外部摄像机实时获取视频数据,这一点非常重要.我发现MATLAB的这个链接显示了如何做到这一点.我确信Python可能也是如此,也许使用OpenCV库?
3.)表现
我听说过,虽然从未使用过,但MATLAB可以轻松地在多个内核之间分离独立的计算.我认为这会非常有用,我不确定Numpy是否也同样简单?
4.)价格
我知道有一个与MATLAB相关的成本,但我将在一所大学工作,因此可以访问完整的MATLAB而不需要任何成本,因此价格不是一个因素.
我非常感谢任何做过类似事情的人的任何意见,以及你的经历.谢谢!
我正在为iOS和Android编写基于视频的社交应用程序(WinPhone正在等待中).我在iPhone上使用AVFoundation框架以mov格式录制视频并将其上传到服务器.它可以在iPhone客户端上下载和播放.但是在Android设备上,下载的视频无法播放,因为它的格式在Android上不受支持.支持多个移动设备平台的视频录制和播放的最佳解决方案是什么?
我必须实现在单个会话中重复暂停和恢复视频捕获的功能,但是将每个新段(每次暂停后捕获的段)添加到同一视频文件中AVFoundation.目前,每当我再次按"停止"然后再"记录"时,它只会将新的视频文件保存到我的iPhone的文档目录中,并开始捕获到新文件.我需要能够按下"记录/停止"按钮,仅在记录处于活动状态时捕获视频和音频...然后当按下"完成"按钮时,将一个包含所有段的AV文件放在一起.所有这些都需要在同一个捕获会话/预览会话中发生.
我没用AVAssetWriterInput.
我能想到尝试这个的唯一方法是按下"完成"按钮,获取每个单独的输出文件并将它们组合成一个文件.
此代码适用于iOS 5,但不适用于iOS 6.实际上,对于iOS 6,我第一次暂停录制(停止录制)AVCaptureFileOutputRecordingDelegate方法(captureOutput: didFinishRecordingToOutputFileAtURL: fromConnections: error:),但在此之后,当我开始录制时,captureOutput: didFinishRecordingToOutputFileAtURL: fromConnections: error:再次调用委托方法()但是在停止录制时不会调用它.
我需要一个解决这个问题的方法.请帮我.
//View LifeCycle
- (void)viewDidLoad
{
[super viewDidLoad];
self.finalRecordedVideoName = [self stringWithNewUUID];
arrVideoName = [[NSMutableArray alloc]initWithCapacity:0];
arrOutputUrl = [[NSMutableArray alloc] initWithCapacity:0];
CaptureSession = [[AVCaptureSession alloc] init];
captureDevices = [AVCaptureDevice devicesWithMediaType:AVMediaTypeVideo];
if ([captureDevices count] > 0)
{
NSError *error;
VideoInputDevice = [[AVCaptureDeviceInput alloc] initWithDevice:[self backFacingCamera] error:&error];
if (!error)
{
if ([CaptureSession canAddInput:VideoInputDevice])
[CaptureSession addInput:VideoInputDevice];
else
NSLog(@"Couldn't add video …Run Code Online (Sandbox Code Playgroud) 我想写一个视频编辑软件,"逻辑"结论是我必须使用的语言是C++ ...但我不喜欢它(抱歉c ++粉丝)
我想写一些很酷的东西,比如Lisp或Haskell或Erlang ...但我不知道这些语言的开源实现(我没有钱购买许可证)让我制作了一个有竞争力的软件(在表演区)
你怎么看?您有什么推荐的吗?
有人可以指导我阅读教程或指导我如何跟踪用6自由度移动的物体的运动.我计划使用移动玩具车的视频流.我想计算玩具车的位移和旋转角度.我发现了一些研究论文,但找不到任何图书馆.
有没有办法使用OpenCV或Matlab或其他一些免费提供的软件?
谢谢
我试图在原始帖子中回答这个问题,但是不会让我这么做.希望有更多权限的人可以将其合并到原始问题中.
好的,这是一个更完整的答案.首先,设置捕获:
// Create capture session
self.captureSession = [[AVCaptureSession alloc] init];
[self.captureSession setSessionPreset:AVCaptureSessionPresetPhoto];
// Setup capture input
self.inputDevice = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo];
AVCaptureDeviceInput *captureInput = [AVCaptureDeviceInput deviceInputWithDevice:self.inputDevice
error:nil];
[self.captureSession addInput:captureInput];
// Setup video processing (capture output)
AVCaptureVideoDataOutput *captureOutput = [[AVCaptureVideoDataOutput alloc] init];
// Don't add frames to the queue if frames are already processing
captureOutput.alwaysDiscardsLateVideoFrames = YES;
// Create a serial queue to handle processing of frames
_videoQueue = dispatch_queue_create("cameraQueue", NULL);
[captureOutput setSampleBufferDelegate:self queue:_videoQueue];
// Set the video output to store …Run Code Online (Sandbox Code Playgroud) 我正在尝试决定选择哪个库来创建可以过滤视频的应用,例如美化或清晰度.
在我搜索期间,我遇到了两个候选人:OpenCv和FFmpeg,我找到了一个仅适用于FFmpeg的完整框架(所以+1为此).
我无法找到两者之间的完全比较,所以如果有人尝试过它们并且可以发布答案,那将非常有帮助.
编辑:
另一个候选人是Android的Marvin框架(Java项目) - https://code.google.com/p/android-image-filtering/
我正在使用以下代码打开视频流:
import cv2
video = cv2.VideoCapture()
video.open("some_m3u8_link")
success, image = video.read()
Run Code Online (Sandbox Code Playgroud)
但是,即使代码在本地工作,在Heroku success上总是错误的.
我正在使用带有以下buildpacks的cedar-14堆栈:
Heroku的/蟒蛇
https://github.com/jonathanong/heroku-buildpack-ffmpeg-latest.git
(我为ffmpeg尝试了几个buildpack选项)
ffmpeg --version在heroku实例上运行将返回ffmpeg version 4.0-static https://johnvansickle.com/ffmpeg/
是否有任何我错过的设置/配置,以使其在部署上工作?谢谢!
稍后编辑:我尝试了几个"some_m3u8_link"链接,包括来自抽搐和其他流媒体服务(包括流量传输)复制的一个例子:
python -c "import cv2; video=cv2.VideoCapture(); video.open('https://hddn01.skylinewebcams.com/live.m3u8?a=5tm6kfqrhqbpblan9j5d4bmua4'); success, image = video.read(); print(success)"
Run Code Online (Sandbox Code Playgroud)
在本地计算机上返回True,在Heroku上返回False.
(链接取自这里)