zoukankan      html  css  js  c++  java
  • GPU 踩的几个坑

    GPUimage
    前几帧是黑色的;
    背景色是蓝色的;
    静音录制崩溃;
    push 的时间延迟;

    前几帧是黑色的,
    https://github.com/BradLarson/GPUImage/issues/1255
    static BOOL allowWriteAudio = NO;
    
    - (void)startRecording;
    {
      ...
      allowWriteAudio = NO;
    }
    
    - (void)processAudioBuffer:(CMSampleBufferRef)audioBuffer;
    {
      if (!allowWriteAudio) {
        return;
      }
      ...
    }
    
    - (void)newFrameReadyAtTime:(CMTime)frameTime atIndex:(NSInteger)textureIndex;
    {
      ...
      if (![assetWriterPixelBufferInput appendPixelBuffer:pixel_buffer withPresentationTime:frameTime])
        NSLog(@"Problem appending pixel buffer at time: %@", CFBridgingRelease(CMTimeCopyDescription(kCFAllocatorDefault, frameTime)));
    
      allowWriteAudio = YES;   //< add this
      ...
    }
    
    push 的时间延迟bug
                //只有一段视频
                [KJUtility hideProgressDialog];
                NSDictionary *dict = self.kj_videoArray.firstObject;
                self.kj_outPath = dict[@"path"];
    
    
    
                [self saveVideoToLibrary];
                WS(weakSelf)
                if (self.kjFileDelegate && [self.kjFileDelegate respondsToSelector:@selector(kj_videoFileCompleteLocalPath:)]) {
                    NSLog(@"一段视频:.........%@",self.kj_outPath);
                    [self.kjFileDelegate kj_videoFileCompleteLocalPath:self.kj_outPath];
                } else {
                    [self saveVideoToLibrary];
                }
    
    
    蓝边的bug
    //        kj_movieWriter = [[GPUImageMovieWriter alloc] initWithMovieURL:videoURL size:CGSizeMake(SCREEN_WIDTH, SCREEN_HEIGHT)];
    
            kj_movieWriter = [[GPUImageMovieWriter alloc] initWithMovieURL:videoURL size:CGSizeMake(floor(1080), floor(1920))];
    

    https://github.com/BradLarson/GPUImage/issues/1276

    静音的bug
    AVURLAsset *kj_videoAsset = [[AVURLAsset alloc] initWithURL:tmpUrl options:kj_options];
            if ([[kj_videoAsset tracksWithMediaType:AVMediaTypeAudio] count] > 0){
                kj_movieComposition.audioEncodingTarget = kj_movieWriter;
            } else {//no audio
                kj_movieComposition.audioEncodingTarget = nil;
            }
    //        kj_movieComposition.audioEncodingTarget = kj_movieWriter;
    
     if ([[anAsset tracksWithMediaType:AVMediaTypeAudio] count] > 0){
                _movieFile.audioEncodingTarget = _movieWriter;
            } else {//no audio
                _movieFile.audioEncodingTarget = nil;
            }
    
  • 相关阅读:
    python-字典
    C#公历转农历算法
    GridView控件显示图片
    SQLite DBHelp
    面向服务体系结构:适用于敏捷的系统
    针对 .NET 框架的安全编码指南
    Microsoft .NET Pet Shop 4
    C#.NET数据库访问类DBHelper
    Emgu CV 高斯建模
    .NET代码编写规范 整理
  • 原文地址:https://www.cnblogs.com/guligei/p/9834881.html
Copyright © 2011-2022 走看看