ITADN
3052/sofia
README.md
以下内容由 AI 翻译,如有问题请点此提交 issue 反馈

sofia

在梦中,我知道他正走在前面。他打算在那片黑暗与寒冷之中某处生火。我也知道,无论我何时赶到那里,他都会在那儿。然后我就醒了。

No Country for Old Men (2007)

功能特性

Remuxer.Initialize:直接将 16 字节的 mdat(媒体数据)头部写入 io.WriteSeeker 中。

Remuxer.AddSegment:在处理各个片段时,直接将原始媒体样本负载作为片段追加到 io.WriteSeeker 文件中。

Remuxer.Finish:将最终的 moov 元数据框追加到 io.WriteSeeker 文件的末尾,然后回退定位,用计算出的最终字节大小覆盖原有的 mdat 占位符大小。

Decrypt:直接将 AES-CTR XOR 密钥流应用到数据字节切片上。如果该切片基于内存映射文件,它会在磁盘上的文件中进行就地修改。

MoovBox.RemovePssh:修改内存中的 MoovBox,移除所有的 PSSH(保护系统专用头部)框,从而在将其写入文件之前改变其结构。

MoovBox.RemoveMvex:修改内存中的 MoovBox,移除 mvex(电影扩展信息)框,从而在将其写入文件之前改变其结构。

TrakBox.RemoveEdts:修改内存中的 TrakBox,移除 edts(编辑列表)框,从而在将其写入文件之前改变其结构。

StsdBox.RemoveSinf:修改内存中的 StsdBox,移除 sinf(保护方案信息)框并更改条目头部格式,从而在将其写入文件之前改变其结构。

MvhdBox.SetDuration:修改内存中的MvhdBox,以更新视频的总时长;如果需要 64 位大小,会自动调整版本标志。

MdhdBox.SetDuration:修改内存中的MdhdBox,以更新媒体的时长;如果需要 64 位大小,会自动调整版本标志。

现有技术

  1. https://github.com/mozilla/mp4parse-rust/issues/415
  2. https://github.com/Eyevinn/mp4ff/issues/311
  3. https://github.com/alfg/mp4-rust/issues/132
  4. https://github.com/yapingcat/gomedia/issues/115
  5. https://github.com/alfg/mp4/issues/27
  6. https://github.com/abema/go-mp4/issues/13
  7. https://github.com/garden4hu/fmp4parser-go/issues/4
  8. https://github.com/eswarantg/mp4box/issues/3
  9. https://github.com/miquels/mp4/issues/2

标准

ISO/IEC 14496-12: https://wikipedia.org/wiki/ISO_base_media_file_format

ISO/IEC 14496-14: https://wikipedia.org/wiki/MP4_file_format

ISO/IEC 23001-7: https://wikipedia.org/wiki/MPEG_Common_Encryption

Discord

https://discord.com/invite/rMFzDRQhSx