我在Windows上有C#.net客户端,需要从.mov文件中提取开始时间码和持续时间/长度元数据.谁在那里谁知道如何做到这一点?我在网上环顾四周但还没找到任何东西.在此先感谢您的时间.
QTKit Capture API是否支持屏幕录制 - 即,我可以指定当前屏幕输出作为录制的输入源吗?如果是这样,怎么样?
Quicktime Player X支持屏幕录制,但QTKit Capture API文档仅提及从外部摄像头捕获.
有谁知道更换旧的QTMovieCurrentSizeAttribute和 QTMovieSizeDidChangeNotification任务的正确方法?我正在尝试清除旧的弃用代码.
我发现这QTMovieNaturalSizeDidChangeNotification不是替代品QTMovieSizeDidChangeNotification.同样QTMovieNaturalSizeAttribute不是替代品QTMovieCurrentSizeAttribute.Natural Size指的QTMovie是原始分辨率,同时Current Size指的QTMovie是显示a的分辨率(这也可能是电影被解码的分辨率,可以从原生调整大小).例如,如果源是变形的或具有非方形像素,则s Natural和Current Sizes将不相同.在QuickTime 7 Player的Movie Inspector窗口中很容易看出差异.
就像我所知,QuickTime X允许多个视图相同QTMovie,因此Current Size需要用新的东西替换.(也许Current Size功能被移入QTMovieView?或解码器查询?)任何人都可以向我推荐新方式的文档或示例代码吗?
电影检查器窗口的任何示例代码已经更新以显示,Natural并且Current ('Actual') Sizes不使用已弃用的代码,这将是理想的.到目前为止,这一直非常令人困惑.
我正在尝试从.mov文件解析H.264帧.我想我已经得出结论,来自AVFormat的mov.c - FFMPEG的一部分是要走的路.但mov.c是未注释代码旁边约2600行.我正在寻找FFMPEG的使用示例,尤其是解析任何文件类型的结构.无论是MPEG4还是Quicktime Movie都没关系,因为它们在结构上非常相似.
如果没有现有的例子(我找不到)可能有人使用过它并且可以给我几行代码,或者解释如何开始?
我正在尝试做的事情:我使用AVCaptureSession从摄像机捕获样本,然后在H264中对这些样本进行编码,并借助AVAssetsWriter,AVAssetsWriterInput和AVAssetsWriterInputPixelBufferAdaptor将其写入文件.原因是我无法直接访问硬件H264编码,因为苹果不允许这样做.我现在需要做的事情(我认为不确定)是解析出来的:
.mov文件中的" mdat "-atom(电影数据,我认为可能不止一个).那么" 视频 "-atom然后在视频原子内(视频数据样本,可能有不止一个).我想我会相信几个原子是帧.这些将是"avc1"类型(这是H264的类型).请纠正我,因为我很确定我还没有正确地完成这一切.
我的问题是,我将如何解析单帧.我一直在阅读文档并查看了iFrameExtractor(由于它对帧进行解码,因此不是很有帮助).我想我理解正确的话时,我应该使用mov.c从FFMPEG-AVFormat,但我不知道.
编辑:我现在正在尝试这样:
我运行稍微减少的init函数i iFrameExtractor,它在.mov文件中找到了视频流.
我得到框架的数据,如下所示:
AVPacket packet;
av_read_frame(pFormatCtx, &packet);
NSData *frame;
if(packet.stream_index == videoStream){
frame = [NSData dataWithBytes:packet.data length:packet.size];
}
videoStream++;
av_free_packet(&packet);
return frame;
Run Code Online (Sandbox Code Playgroud)然后我将它传递给NSOperation的子类,在那里保留等待上传.但我收到一个EXC_BAD_ACC,从框架中复制数据时我做错了什么?有任何想法吗.当我尝试NSData* frame使用其(非原子,保留)属性设置类变量时,我得到了EXC _... (它在合成行上说EXC_BAD_ACC)
你知道如何将.m4p文件(DRM quicktime)转换为mp3或ogg而不使用昂贵的软件(带脚本的AKA),也可能在Linux上吗?
核心视频专家,我正在为.mov文件创建自定义视频播放器。我正在使用.mov解析器,并使用QTCoreVideo101示例来尝试播放视频。
我的问题是显示链接getFrameForTime我不知道如何使用时间值来找到正确的帧。
CVTimeStamp中包含的值对我来说没有任何意义。以下是1秒视频请求的值示例。谁能解释我如何使用这些值在.mov文件中找到正确的帧?
前三个请求-CVTimeStamp的值
视频时间:489150134353920.000000主机时间:2026048145326080.000000视频时间比例:241500000.000000速率标量:1.000000视频刷新时间:4028320.000000
视频时间:489150201462784.000000主机时间:2026048279543808.000000视频时间比例:241500000.000000速率标量:0.999985视频刷新时间:4028320.000000
视频时间:489156643913728.000000主机时间:2026074988871680.000000视频时间比例:241500000.000000速率标量:1.000000视频刷新时间:4028320.000000
有没有办法获取QuickTime视频信息?(在Google上搜索时,我发现QT的一个cl选项已被破坏.)
我希望找到pasp,长度,音频通道,音频分配,拍手以及通常使用"Dumpster"程序找到的各种其他属性.使用ffmpeg无法获得大部分此类信息.
我在Mac上使用QuickTime Player 10创建屏幕录像。是否可以设置电影的尺寸或需要拍摄的位置?我必须使用精确的屏幕尺寸和位置来制作多部电影。
我有一个EVENT类型的HLS播放列表.它有#EXT-X-PLAYLIST-TYPE:EVENT标签.播放列表尚未完成.它没有#EXT-X-ENDLIST标签.
当我在Quicktime中播放播放列表时,它不允许我四处寻找.由于这是一个事件播放列表,因此所有以前的段都可用.Quicktime应该拥有回头所需的一切.
我在OS X 10.6和Maverick上试过这个问题并且出现问题.我也在运行iOS 5的旧iPad上试过这个.在iOS 5上,问题不会发生.
这是播放列表本身:
#EXTM3U
#EXT-X-VERSION:6
#EXT-X-ALLOW-CACHE:NO
#EXT-X-MEDIA-SEQUENCE:0
#EXT-X-PLAYLIST-TYPE:EVENT
#EXT-X-START:TIME-OFFSET=0,PRECISE=NO
#EXT-X-TARGETDURATION:10
#EXTINF:10,
live_robocop_hd-rate_01_6512.ts
#EXTINF:10,
live_robocop_hd-rate_01_6513.ts
#EXTINF:10,
live_robocop_hd-rate_01_6514.ts
#EXTINF:10,
live_robocop_hd-rate_01_6515.ts
# ... more segments here ...
Run Code Online (Sandbox Code Playgroud) 我有两个USB摄像头.一种是低成本的WebCam,另一种是低成本的USB显微镜 ; 都是从eBay购买的.显微镜实际上只是另一个WebCam.
我想将USB显微镜与Mac OS X 10.5和QTKit一起使用.MyRecorder可以与我的低成本WebCam一起使用,但是当我连接显微镜时它只显示黑色视频.
如果我打开QuickTime Player并创建电影录制,我会收到错误消息:"录制失败,因为没有收到任何数据.|确保媒体输入源已打开并播放."
序列捕获器演示适用于两个摄像头.
miXscope也适用于两个摄像头(似乎它使用序列采集器).
这是剥离的MyRecorder(为了更好的概述):
- (void)awakeFromNib
{
NSError *error;
mCaptureSession = [[QTCaptureSession alloc] init];
QTCaptureDevice *videoDevice = [QTCaptureDevice defaultInputDeviceWithMediaType:QTMediaTypeVideo];
BOOL success = [videoDevice open:&error];
if(!success)
{
videoDevice = [QTCaptureDevice defaultInputDeviceWithMediaType:QTMediaTypeMuxed];
success = [videoDevice open:&error];
}
if(!success) return;
mCaptureVideoDeviceInput = [[QTCaptureDeviceInput alloc] initWithDevice:videoDevice];
success = [mCaptureSession addInput:mCaptureVideoDeviceInput error:&error];
if(!success) return;
if(![videoDevice hasMediaType:QTMediaTypeSound] && ![videoDevice hasMediaType:QTMediaTypeMuxed])
{
QTCaptureDevice *audioDevice = [QTCaptureDevice defaultInputDeviceWithMediaType:QTMediaTypeSound];
success = audioDevice && [audioDevice open:&error];
if(success)
{
mCaptureAudioDeviceInput …Run Code Online (Sandbox Code Playgroud)