ijkPlayer源码(iOS)学习第5天

今天代码有点看不动了,所以从网上找点学习资料,等学看完学习资料再继续研究

 

https://blog.csdn.net/qq819853294/article/details/8296622

 

https://www.jianshu.com/p/58a2777baf56

 

https://blog.csdn.net/yao_hou/article/details/80559161

 

通过网上学习,同步在自己电脑完成了ffmpeg的第一个demo。

步骤如下

1.给mac用HomeBrew安装 FFMpeg。

2.Xcode新建项目配置环境

3.Code

代码如下

#import <Foundation/Foundation.h>
#include "libavcodec/avcodec.h"
#include "libavformat/avformat.h"

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        // insert code here...
        NSLog(@"Hello, World!");
        
        //ffmpeg程序的第一句,注册库
        av_register_all();
        printf("avcodec_configuration:\n%s",avcodec_configuration());
        
        AVFormatContext *afc = NULL;
        int nRet =avformat_open_input(&afc, "/Users/wangfei/Documents/wangfei/ffmpeg学习/FFTest/FFTest/Q利游戏终季01中文字幕.mp4", 0, 0);
        if (nRet < 0) {
            printf("can not find video!\n");
            
        } else {
            printf("open video success");
       
        
            int durTime = afc->duration / AV_TIME_BASE;
            printf("durTime is \n%d",durTime);
            
            unsigned streamCount = afc->nb_streams;
            
            
            for (int i = 0 ; i < streamCount; i++) {
                AVCodecContext *acc = afc->streams[i]->codec;
                if (acc->codec_type == AVMEDIA_TYPE_VIDEO) {
                    AVCodec *codec = avcodec_find_decoder(acc->codec_id);
                    if (!codec) {
                        
                    }
                    int ret = avcodec_open2(acc, codec, NULL);
                    
                    if (ret != 0) {
                        char buf[1024] = {0};
                        av_strerror(ret, buf, sizeof(buf));
                    }
                }
                
            }
        }
        
        if (afc) {
            avformat_close_input(&afc);
        }
    }
    return 0;
}

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
ijkplayer是一个基于FFmpeg的跨平台音视频播放器,它提供了丰富的功能和灵活的接口,被广泛应用于移动端和嵌入式设备上。下面是对ijkplayer源码的简要剖析: 1. FFmpeg集成:ijkplayer基于FFmpeg进行音视频解码和处理。它通过FFmpeg提供的库函数实现了音视频的解码、渲染、编码等功能。 2. 播放器核心:ijkplayer的核心是一个播放器类,它负责管理音视频流的解码、渲染和控制。播放器核心包含了音视频解码器、渲染器、音频输出等模块。 3. 解码器:ijkplayer支持多种音视频格式的解码,包括常见的MP4、FLV、MKV等格式。它通过FFmpeg提供的解码器进行解码,并将解码后的数据传递给渲染器进行显示。 4. 渲染器:ijkplayer提供了多种渲染方式,包括基于OpenGL ES的视频渲染和基于OpenSL ES的音频渲染。它通过调用相应的接口将解码后的数据进行渲染。 5. 控制模块:ijkplayer提供了丰富的控制接口,包括播放、暂停、快进、快退等功能。它还支持循环播放、倍速播放等高级功能。 6. 网络模块:ijkplayer支持网络流媒体的播放,包括HTTP、RTMP、HLS等协议。它通过FFmpeg提供的网络模块进行数据的下载和解析。 7. 音频输出:ijkplayer通过OpenSL ES提供音频输出功能,支持多种音频格式的播放和控制。 8. 视频渲染:ijkplayer通过OpenGL ES提供视频渲染功能,支持多种视频格式的解码和显示。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值