首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从影片剪辑中获取确切的帧数

从影片剪辑中获取确切的帧数
EN

Stack Overflow用户
提问于 2011-11-08 19:05:55
回答 4查看 3.6K关注 0票数 0

我正在构建一个用于视频分析的iphone应用程序,我需要知道电影剪辑中帧的确切数量。

我得到了帧率和持续时间,出于某种原因,我得到了2880帧,但我知道电影剪辑实际上有2840帧。

怎样才能得到确切的帧数?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-11-08 19:17:07

嗯,这将取决于视频格式。

如果它是原始视频,那么PAL和SECAM规定25帧/秒(Fps),NTSC 29.97实际胶片是24fps。是隔行扫描还是逐行扫描?

它是否已经压缩,并因此使用帧编号的近似值?

编辑

啊,所以你的视频是H.264/MPEG4标准的AAC音频?索引数据保存在文件的"moov“部分中,该部分包含组成文件的所有索引和数据值。有关MPEG4标准的更多信息,请查看here

如果你能提取这些数据,它会告诉你每一帧的数据大小等等。

票数 1
EN

Stack Overflow用户

发布于 2011-11-08 19:16:18

确切的帧数通常写在文件中的某个位置,可以检索到。但是,视频文件可能包含更多或更少的帧。例如,你得到2880帧,你知道你应该得到2840帧。我的猜测是,一些时间戳是相等的。与上一帧具有相同时间戳的解码帧应被跳过/忽略。你检查过了吗?您还可以获得更少的报告帧。这意味着一些帧的持续时间比预期的要长。例如,如果以25 fps的速度录制影片剪辑,则一帧的持续时间为40毫秒。但是,在解压缩之后,您可能会得到持续时间为80的帧。这样帧确实应该有持续时间,或者它可以重复两次...

票数 1
EN

Stack Overflow用户

发布于 2016-03-31 13:42:46

这是iOS Determine Number of Frames in Video节奏拳击手的另一个很好的答案。它在SWIFT中,但我已经尝试了bellow(Objective-C):

代码语言:javascript
复制
- (void)getTotalFramesFromVideo{
    AVURLAsset* asset = [AVURLAsset assetWithURL:URL1];
    NSError* errReader=nil;
    AVAssetReader* reader = [AVAssetReader assetReaderWithAsset:asset error:&errReader];
    if(!errReader){
        AVAssetTrack* track = [asset tracksWithMediaType:AVMediaTypeVideo].firstObject;
        AVAssetReaderOutput* readerOutput = [AVAssetReaderTrackOutput assetReaderTrackOutputWithTrack:track outputSettings:nil];
        [reader addOutput:readerOutput];
        [reader startReading];
        long long count = 0;
        BOOL isAvailable = NO;
        do {
            CMSampleBufferRef ref = [readerOutput copyNextSampleBuffer];
            if(ref){
                isAvailable = YES;
                count++;
            }else{
                isAvailable = NO;
            }
        } while (isAvailable == YES);
        NSLog(@"Total Frames in your Video is %@",@(count));
    }else{
        NSLog(@"\nAVAssetReaderError:\n%@",errReader.localizedDescription);
    }
}

这可能会对像我这样想获得视频帧数的人有所帮助。

注意:您也可以在此方法中获取CMSampleBufferRef

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8049418

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档