iOS FFmpeg实时YUV420P编码H264

该博客详细介绍了如何在iOS平台上使用FFmpeg库将YUV420P格式的视频帧实时编码为H264格式。在FFmpeg编译时需包含libx264库。编码过程中,设置了关键帧的PTS以避免解码问题,并强调了编码解码过程需要在同步环境中进行,以确保数据一致性。提供了完整的H264编码代码示例。
摘要由CSDN通过智能技术生成

使用FFmpeg进行H264编码需要在FFmpeg编译中引入libx264


初始化设置编码环境

- (BOOL)setEncode
{
    avcodec_register_all();
    _H264Codec = avcodec_find_encoder(CODEC_ID_H264);
    if (_H264Codec == nil) {
        NSLog(@"编解码器不支持");
        return  NO;
    }
    _codecContext = avcodec_alloc_context3(_H264Codec);
    if (_codecContext == nil) {
        NSLog(@"初始化编解码环境失败");
        return NO;
    }
    _codecContext -> width = 640;
    _codecContext -> height = 480;
    _codecContext->pix_fmt = PIX_FMT_YUV420P;

    if(avcodec_open2(_codecContext, _H264Codec, NULL) < 0) {
        
        NSLog(@"打开编码器失败");
        return NO;
    }
    return YES;
}
如果avcodec_find_encoder ( CODEC_ID_H264 )返回NULL且确定
在编译时已连接如libx264,检查编译时config中是否设置了--enable-encoder=libx264


编码


- (void)encodeWithData:(const void *)data andConfig:(YUVConfig)config andReslutBlock:(encodeBlock)reslut {
    dispatch_
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值