Giter VIP home page Giter VIP logo

videocodeckit's Introduction

VideoDecoderKit

Version: 0.9.5


0.9.5: 修复推流音频问题。重构了一堆接口。封装了推流器VCRTMPPublish,可以方便推流RTMP了。优化了H264编码器,加入参数修改接口,便于推流时修改参数。简化删除了不同的Demo,去掉了Masonry依赖。同时提供静态Framework和动态Framework两种连接方式(考虑到苹果在iOS 13.3.1 中关闭了免费正式对动态库的签名,Demo使用静态连接)。

0.9.4: 实现RTMP,可以推流FLVTag了

0.9.3: 添加H265硬解码支持,支持播放H264 H265裸流

0.9.2.1: 添加macOS支持,删除多余的ffmpeg编译参数,添加播放FLV音频测试Demo。

Video

  • VideoToolBox H264 硬解码
  • VideoToolBox H264 硬编码
  • VideoToolBox H265 硬解码
  • VideoToolBox H265 硬编码
  • 重构视频渲染接口
  • 重构Metal渲染
  • OpenGL渲染

Audio

  • AudioConverter 解码AAC
  • AudioConverter 编码PCM
  • 多声道AAC支持
  • AVAudioEngine 播放PCM数据

Media

  • H264 裸流解析
  • H265 裸流解析
  • FLV 文件解析
  • MP4 文件解析
  • TS 文件解析
  • FLV 文件写入
  • 麦克风接口封装,数据获取

Publish

  • RTMP协议
  • RTMP推流器

Player

  • 音视频同步
  • 缓存队列

Build

  • macOS 支持
  • 动态库
  • 静态库

videocodeckit's People

Contributors

cmst0us avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

videocodeckit's Issues

当解码过程(已初始化解码器),分辨率发生了变化,解码报错 kVTFormatDescriptionChangeNotSupportedErr -12916

分辨率变化了,是需要重新初始化解码器吗?

我现在是这么做的,每次获取 I 帧后,通过如下代码,获取分辨率信息,如果分辨率改变了,则重新创建 _decodeSession,不知道这样做是不是最佳方式?

// 1. 获取 videoFormatDescription
...

// 2. 获取视频帧的分辨率信息
            CMVideoDimensions dimensions = CMVideoFormatDescriptionGetDimensions(mFormatDescription);
            CGSize resolution = CGSizeMake(dimensions.width, dimensions.height);
            NSLog(@"视频分辨率:%dx%d", (int)resolution.width, (int)resolution.height);

// 3. 如果分辨率改变了,则重新通过 VTDecompressionSessionCreate 创建 _session

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.