Skip to content

Releases: zhaohappy/libmedia

v1.2.0

25 Nov 11:18

Choose a tag to compare

feat:

  • feat(videoscale): 新增 scaleAsync 可以在主线程进行多线程调用

bugfix:

  • fix: 修复包中的 .d.ts 会包错的问题

v1.1.0

20 Nov 15:15

Choose a tag to compare

version 1.1.0:

feat:

  • feat(avcodec): wasm 编解码器支持在浏览器主线程进行多线程解码
  • feat: package 设置无副作用,对 tree-shake 更友好

v1.0.1

19 Nov 15:51

Choose a tag to compare

v1 版本的 API 有一些破坏性变更,请按步骤迁移。

feat:

  • refactor(avformat): 各 OFormat 的 Capabilities 放到各自下面
  • feat(avformat): 支持 h264、h265、h266 裸流输出
  • feat(avformat): 支持 aac format 输出
  • feat: 支持 CSP 环境
  • feat(avplayer): mse 模块和字幕渲染模块优化为动态加载模块
  • feat(avtranscoder): 支持设置 AVStreamDiscard
  • feat(avformat): 增强对 flac 帧头的合法性判断
  • refactor: 各模式使用聚合模块导出,限制内部 api 对外开放

bugfix:

  • fix(avformat): 兼容处理 startCode 为 0x000001 的 sps 和 pps
  • fix(avformat): 处理 aac adif 头
  • fix(avformat): dump duration 没有显示 N/A
  • fix(avformat): 修复批量更新 box size 会丢失部分数据的问题
  • fix(avformat): flv previousTagSize 不正确打印警告日志不抛错

v0.12.0

16 Oct 14:11

Choose a tag to compare

feat:

  • feat(avformat): dump chapters
  • feat(avformat): 增强 mp4 和 mkv 对 metadata 的支持能力,mp4 支持章节
  • feat(avplayer): hls 和 dash 切换分辨率支持立即切换和平滑切换
  • feat(avformat): wav 支持解析 id3 标签
  • refactor(avformat): wav、mp3、flac 的 metadata 移到 formatContext 下面变成文件级元数据
  • feat(avnetwork): FileIOLoader 支持传 blob
  • feat(avformat): mp4 支持 pcm 音频格式
  • feat(avrender): 各个 render 支持 alpha 渲染
  • feat(avcodec): webcodecs 解码器支持解码 alpha(vp8、vp9、av1) 视频
  • feat(avplayer): avplayer 支持使用 webcodecs 播放透明的 webm 和 mkv 视频
  • feat(avformat): mp4 支持写 webvtt,mkv 支持写 ass 和 webvtt
  • feat(avcodec): 添加 png、webp、gif、bmp、tiff 图片解码器
  • feat(avformat): AVStream 新增 discard 字段,用于控制 demux.readAVPacket 是否读取某些流的包(mp4 格式使用)
  • feat(avformat): 支持音频格式中封面流解析、播放、转码
  • feat(avformat): flac 和 wav 的 AVPacket 支持 duration 字段
  • feat(avformat): 添加 flac 封装器
  • refactor(avformat): OMovFormat -> OIsobmffFormat,IMovFormat -> IIsobmffFormat(需更改导入路径)
  • feat(avformat): avformat 支持 stream group
  • feat(avformat): 支持 heif、avif 格式
  • feat(avcodec): WebVideoDecoder options 新增可以配置 colorSpace、rotation、flip 等参数

bugfix:

  • fix(avformat): ts 对跨 pes 的 nalu 判断前置 sei 为一帧的开始
  • fix(avplayer): mes 支持 audio extradata 变化
  • fix(avutil): AVPacket 和 EncodedChunk 直接转换处理 duration
  • fix(avplayer): 音频或者视频不支持解码忽略而不是报错

v0.11.0

15 Sep 11:28

Choose a tag to compare

feat:

  • feat(avnetwork): hls 和 dash 支持在 load 配置中设置优先 codec,lang、resolution
  • feat(avplayer): avplayer 支持在 ended 状态下调 play,此时直接从头开始播放
  • feat(avplayer): avplayer load 配置支持设置 maxProbeDuration 参数

bugfix:

  • fix(avformat): mp3 计算 duration 需要判断 fileSize 是否合法
  • fix(avformat): mkv tag 为 V_QUICKTIME 时需要处理 codecPrivate 有 size 的场景

v0.10.0

02 Sep 14:39

Choose a tag to compare

feat:

  • refactor(avformat): 将 bitFormat 转变成 flags,方便之后追加新的标志位
  • feat(avcodec): 添加 mjpeg 解码器
  • feat(avformat): 支持 pts 没有的情况下可以解码
  • feat(avformat): 支持 avi 封装格式
  • feat(avformat): 新增 wav oformat
  • feat(avplayer): 支持强制使用音频为主时间
  • feat(avformat): fmp4 封装支持写入 mfra box 支持 seek
  • feat(avcodec): webcodec 编解码器 options 添加规范定义参数
  • feat(avcodec): 编码器支持 copyTs 参数控制使用输入 dts、 pts 输出
  • feat(avplayer): avplayer 新增 enableAudioWorklet 和 ioLoaderOptions 配置
  • refactor(avutil): 收束各 codec 中 parseAVCodecParameters 参数 stream 的范围
  • feat(videoscale): VideoScaler 支持设置颜色空间参数
  • feat(avcodec): webcodec 解码器支持传 codec string 初始化

bugfix:

  • fix(avutil): 修复解析 H264 SPS 时未处理 scaling list 数据
  • fix(avformat): 处理 AVSeekFlags.BYTE seek 操作
  • fix(avrender): 处理 sar 不是 1:1 是情况,需要纠正显示宽高比
  • fix(format): 兼容一些 fmp4 的 moov 里面存着一段样本的 mp4
  • perf(avutil): 优化 splitNaluByStartCode 函数在 SafeUint8Array 数据类型下的性能
  • fix(avformat): 修复 fmp4 seek 无法准确到指定时间
  • perf(avformat): 优化 seekInBytes 的 seek 准确度
  • fix(avformat): mkv ass Format 行优化
  • fix(avformat): mkv 读取类型 EbmlType.STRING 时去掉 C 风格终止符
  • fix(avformat): mp4 处理 h26x 没有 ctts 时设置 AV_CODECPAR_FLAG_NO_PTS 标志
  • fix: 修复 worker 模式下播放 dash 时 stats 不正确的问题
  • fix(avrender): 修复当没有音频帧时 audio source 无法退出
  • fix(avcodec): 更新 extradata 时使用准确的编码分辨率
  • fix(avplayer): ManagedMediaSource 模式需要设置 disableRemotePlayback 属性,否则无法播放
  • fix(avnetwork): FetchIOLoader 修复设置 range.to 无法工作的问题
  • fix(avnetwork): seek 判断 pos 是否超过 eofIndex, 超过不合法

v0.9.0

17 Jul 11:00

Choose a tag to compare

feat:

  • refactor(avplayer): 支持无缝循环播放,优化循环播放时闪现黑屏
  • chore: 更新 assjs 到 0.1.4 版本
  • feat: mp4 drm 文件支持解析和播放
  • feat(avplayer): 播放器添加 ended 状态
  • feat(avformat): ts 的各个 bsf 兼容一帧跨多个 pes 包的情况
  • feat(avformat): mp4 封装支持码流混入新的 sps,支持忽略 encryption,用以支持 mse 切换分辨率和部分 moof 使用 drm
  • feat(avformat): aac、mp3、webvtt 支持来自 m3u8 的流式 io
  • feat(avprotocol): 播放 m3u8 流的兼容性增强
  • feat(avformat): 播放 dash 流的兼容性增强
  • feat: ioReader 支持 abort 操作,format 层处理 abort 错误
  • feat(avcodec): 新增加一些解码器,用以支持 avi、rm、rmvb、asf、wma、wmv 等封装格式文件的播放
  • feat(avnetwork): ioLoader open 方法 range 参数更改为可选,设置读取全部数据的默认值
  • feat(avformat): ts 解封装音频包处理 pos 信息

bugfix:

  • chore: 修复编译脚本输出 umd 格式有问题
  • fix(avformat): fmp4 兼容一个 moof 中多个 trun 的情况
  • fix(avplayer): 断网重播时一些异常处理
  • fix(avformat): 判断最大分析时长时加上包数量判断,防止 pts 错误导致发分析时长过短的问题
  • fix(avformat): ogg opus 将 idPage 写入 extradata
  • fix(avplayer): resume 处理 audioContext 的 interrupted 状态
  • fix(avcodec): hevc webcodecs 编码器处理 hevc 配置
  • fix(avcodecs): FFmpeg 中的 aac profile 为 libmedia 的值减一,需要修正
  • fix(avformat): 修复调用 estimateDurationFromPts 之后出现一些重复包的问题
  • fix(avplayer): 检查 mse 时处理 avcc 格式和 annexb 格式
  • fix(avplayer): onMSESeek 中检查 buffered 状态,没有准备好延时 seek(某些大文件在非多线程 worker 模式下走到 onMSESeek 处 buffered 没有)
  • fix(avrender): 优化 render 中 checkFrame 下对 linesize 的判断

v0.8.1

25 May 15:24

Choose a tag to compare

feat:

  • feat(avrender): WritableStreamRender 支持旋转和翻转
  • feat(avplayer): 支持 WebSocketOptions 传递 WebSocket 参数
  • feat(avformat): flv 实现 enhanced-rtmp v2 规范,支持音频编码格式: ac3、eac3、opus、flac;视频编码格式: hevc、vp8、vp9、av1;支持高精度时间戳;支持多轨道;支持 HDR 元数据和声道元数据。规范文档地址: https://veovera.org/docs/enhanced/enhanced-rtmp-v2
  • feat(avplayer): 支持不同音频编码格式的音频轨道间进行无感知切换

bugfix:

  • fix(avrender): 修复一些 gpu 内存资源的释放问题
  • fix(avplayer): mse 模式下没有音频设置 muted 状态防止出现需要交互的错误
  • fix(avplayer): 修复自定义 loader 在非多线程 worker 模式下出现一段 0 的脏数据
  • fix(avplayer): 修复 mse 模式下只播放视频时,切换到后台视频会积压
  • fix(avformat): flv 的 syncTag 方法添加判断 streamId 是否合法来加快分析,防止频繁的来回 seek
  • fix(avplayer): mse 模式下音频轨道切换的一些兼容处理

v0.7.0

20 Apr 10:49

Choose a tag to compare

version 0.7.0:

feat:

  • refactor: pointer 到 pointer 使用类型强转
  • feat(avcodec): 音频编码器支持使用输入的 AVFrame 的 pts
  • feat(dump): 新增 dump AVChannelLayout name
  • feat(avplayer): AVPlayer 支持播放视频之后将音视频输出到 MediaStream
  • feat(avrender): CanvasImageRender 支持 hdr 渲染
  • refactor(avrender, avutil): 重写 image render 支持更多像素格式;重写 AVPixelFormatDescriptor 定义方式并支持更多格式

bugfix:

  • fix(avcodec): VideoDecoder safari 17.4 以上不需要手动排序输出帧
  • fix(avformat): matroska blockGroup 非关键帧写入 BLOCK_REFERENCE
  • fix(avpipeline): 发送 updateCanvas 事件判断 renderRedyed 状态防止多次触发
  • fix: 使用 atomics.store 初始化 refCount 内存保证数据一致
  • fix(avformat): 处理 mp4 的 mdat box size 超过 32 位的情况
  • fix(avcodec): videoFrame.copyTo 是异步的, videoFrame2AVFrame 需要变成异步方法
  • fix(avcodec): VideoEncoder 判断 frame.timeBase 是否合法再使用原 pts
  • fix(avformat): 修复 mp4 edts box 的 delay 计算 timeBase 错误
  • fix(avutil): 处理 AVFrame 和 AudioData 之间转换 pts 不合法的情况
  • fix(avplayer): playChannels 超过 maxChannelCount 会无法播放出超出声道的声音,设置 playChannels 最大为 maxChannelCount 让 resampler 做 mix
  • fix(avformat): mp4 seek 之后的第一个包应使用 ioReader.seek 来同步位置,防止等待过多的数据缓冲
  • fix(avpipeline): 先找 webgpu render,找不到接着找 webgl render
  • fix(avnetwork): 再次 readInterval 使用 SafeUint8Array, 防止中途扩堆导致 buffer 不可用

v0.6.0

08 Feb 14:12

Choose a tag to compare

feat:

  • AVStream 的 metadata key 使用枚举,方便外层调用
  • 重构 Decoder 和 Encoder 的 open 错误处理方式,将抛出错误改为返回错误码,与 decode 和 encode 方法保持一致
  • AVPlayerLoadOptions 新增 isLive 配置可以覆盖 AVPlayerOptions 中的配置
  • 添加对 AVFrame SideData 的处理
  • 播放器自动检查音视频空帧并跳过
  • 优化 mse 播放

bugfix:

  • mpegts 修复一些错误码返回不正确
  • flv 的 extradata 时间戳使用当前 packet 的时间戳而不是 0
  • mse 的一些边界条件判断修正