iOS硬解码H264,创建VTDecompressionSessionRef时,返回 -12913

        status = VTDecompressionSessionCreate(kCFAllocatorDefault,

                                              _decoderFormatDescription,

                                              NULL, attrs,

                                              &callBackRecord,

                                              &_decoderSession);


返回:kVTVideoDecoderNotAvailableNowErr       = -12913,    导致_decoderSession == nil,解码失败;



解决:

及时释放资源:

-(void)clearH264Deocder {

    if(_decoderSession) {

        VTDecompressionSessionInvalidate(_decoderSession);

        CFRelease(_decoderSession);

        _decoderSession = NULL;

    }

    

    if(_decoderFormatDescription) {

        CFRelease(_decoderFormatDescription);

        _decoderFormatDescription = NULL;

    }

    

    free(_sps);

    free(_pps);

    _spsSize = _ppsSize = 0;

}


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Flutter是一种跨平台的移动应用开发框架可以用于开发iOS和Android应用。要解码H264二进制流,可以使用Flutter的插件来实现。 一个常用的Flutter插件是flutter_ffmpeg,它是FFmpeg在Flutter中的封装。FFmpeg是一个开源的音视频处理库,支持多种音视频解码格式,包括H264。 使用flutter_ffmpeg插件,你可以将H264二进制流传递给FFmpeg进行解码。以下是一个简单的示例代码: 1. 首先,在pubspec.yaml文件中添加flutter_ffmpeg插件的依赖: ``` dependencies: flutter_ffmpeg: ^0.4.0 ``` 2. 然后,在Flutter代码中导入flutter_ffmpeg插件: ``` import 'package:flutter_ffmpeg/flutter_ffmpeg.dart'; ``` 3. 创建一个FlutterFFmpeg对象,并使用decode方法解码H264二进制流: ``` FlutterFFmpeg flutterFFmpeg = FlutterFFmpeg(); String inputPath = "path_to_h264_stream"; String outputPath = "path_to_output_file"; flutterFFmpeg.execute("-i $inputPath -c:v copy $outputPath").then((rc) { if (rc == 0) { print("解码成功"); // 解码成功后的处理逻辑 } else { print("解码失败"); // 解码失败后的处理逻辑 } }); ``` 在上面的代码中,`inputPath`是H264二进制流的路径或URL,`outputPath`是解码后的输出文件路径。`-c:v copy`参数表示直接复制视频流,不进行重新编码。 请注意,解码H264二进制流可能涉及到更多的配置和处理,具体的实现方式可能因应用需求而有所不同。以上只是一个简单的示例,你可以根据自己的需求进行相应的调整和扩展。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值