AUD,全称Access Unit Delimiter,它是H.264接入单元(Access Unit,AU)的分隔符。

AU定义为多个按解码顺序排列的NALU,这些NALU解码正好生成一个图像。AU可以看成压缩视频比特流的基本单位,压缩视频流有多个按顺序排列的AU组成。每个NALU都会属于某个AU单元,压缩视频流的第一个NALU则为第一个AU的第一个NALU。

AUD是个特殊的NALU,它用来分隔AU,虽然AUD在编码标准中是可选的,但有的播放器会要求必须携带AUD,它才能识别一整幅图像,才能正确解码一帧,比如Flash Player。

AUD作为一个NALU,H.264标准中它的nal_unit_type为9,所以在视频流中,0x00000109,就是它了,它的payload一般为0xF0。

在H.265中,AUD的nal_unit_type是35,在视频流中头部应该长这样:0x00000146。

而最近碰到有个厂家在H.265流中使用了类型为09的AUD分隔符,导致封装的视频无法在iOS设备上播放。针对这一问题,只需要将09的AUD改成类型35对应的0x46,并修改payload,至于payload是多少,笔者查找各方资料,终于在libmpeg中找到源码:

if(PSI_STREAM_H264 == stream->codecid && !tsctx->h264_h265_with_aud)
{// 2.14 Carriage of Rec. ITU-T H.264 | ISO/IEC 14496-10 video// Each AVC access unit shall contain an access unit delimiter NAL Unitnbo_w32(p, 0x00000001);p[4] = 0x09; // AUDp[5] = 0xF0; // any slice type (0xe) + rbsp stop one bitp += 6;
}
else if (PSI_STREAM_H265 == stream->codecid && !tsctx->h264_h265_with_aud)
{// 2.17 Carriage of HEVC// Each HEVC access unit shall contain an access unit delimiter NAL unit.nbo_w32(p, 0x00000001);p[4] = 0x46; // 35-AUD_NUTp[5] = 0x01;p[6] = 0x50; // B&P&I (0x2) + rbsp stop one bitp += 7;
}

源码地址:media-server/mpeg-ts-enc.c at master · ireader/media-server · GitHub

可以看到H.265的AUD分隔符的payload为0x0150。

H.264分隔符AUD误用导致iOS设备无法播放H.265视频的问题解决相关推荐

  1. ios avi_转换DVD,ISO和AVI视频以在iOS设备上播放

    ios avi If you own an iOS device,  you know that by default it only plays certain video formats. You ...

  2. H.264、JPEG、JPEG2000、Motion JPEG、H.265、MPEG-4等图像编码格式

    前言 ~~~~~~~       最近在查看海思HI3516a软件开发手册时,对下表中的一些视频编码不是很清楚,也很容易搞混了,所以查了一些资料,对H.264.JPEG.JPEG2000.Motion ...

  3. 解决小程序安卓设备android可以播放在线网络视频 ,苹果ios设备无法播放视频 ,

    问题: 小程序上,android设备可以正常播放在线网络视频 , 但是ios设备无法正常播放. 原来是因为ios设备加载视频的时候和android不一样导致的, ios会分段去请求相应的字节区间 , ...

  4. h.264码流解析_一个SPS的nalu及获取视频的分辨率

    00 00 00 01 67 42 00 28 E9 00   A0 0B 77 FE 00 02 00 03 C4 80   00 00 03 00 80 00 00 1A 4D 88   10 9 ...

  5. iOS VideoToolbox硬编H.265(HEVC)H.264(AVC):1 概述

    本文档尝试用Video Toolbox进行H.265(HEVC)硬件编码,视频源为iPhone后置摄像头.去年做完硬解H.264,没做编码,技能上感觉有些缺失.正好刚才发现CMFormatDescri ...

  6. Android IOS WebRTC 音视频开发总结(七九)-- WebRTC选择H.264的四大理由

    本文主要介绍WebRTC选择H.264的理由(我们翻译和整理的,译者:weizhenwei,校验:blacker),最早发表在[编风网] 支持原创,转载必须注明出处,欢迎关注我的微信公众号blacke ...

  7. H.264专利费不受FRAND限制 Android设备商受影响

    本文来自资深多媒体人Jan Ozer,LiveVideoStack对原文进行了摘要.文章指出,H.264相关费用不受FRAND(公平,合理和非歧视)要求的限制,并且可能对使用H.264编码和解码功能的 ...

  8. H.264笔记整理3

    H.264整理3 转自:http://www.hellotongtong.com/avcodecbase/avcodecbase-h264-learning120.html 需求 在移动端做音视频开发 ...

  9. 嵌入式 Hi3515视频编码(H.264)笔记

     这几天在编写视频录制模块,所以,闲暇之余,又粗粗的整理了一下,主要是API,以备不时之用       摄像头获取的模拟信号通过经芯片处理(我们使用的是CX25825),将模拟信号转成数字信号,产 ...

最新文章

  1. Java 运算符 和 运算符
  2. 一线城市中高端人才月薪超 2 万,电子通信行业应届生薪资涨幅最高
  3. amos看拟合度在哪里看_小程序开发公司哪里强?看这几点
  4. spring框架实现一个学生管理系统
  5. Java黑皮书课后题第9章:**9.12(几何:交点)假设两条线段相交。第一条线段的两个端点是(x1, y1)和(x2, y2),第二条线段的两个端点是(x3, y3)和(x4, y4)
  6. 评论:中国企业向Faceook学习什么
  7. Collections about Deep Learning
  8. 获得阿里巴巴编码规范技能认证
  9. Cisco Nexus-1000v授权
  10. wordpress代码高亮插件coolcode
  11. 阿里巴巴 CTO 首次分享技术战略
  12. 医院标准化信息中心机房建设心得
  13. Win10 System进程占用硬盘100%,Microsoft IME 占用CPU高
  14. 西门子实数转整数_实数如何转换为整数
  15. 操作系统-页面置换算法
  16. jQuery Mobile 列表视图
  17. 免费下论文及查重投稿的10来个方法
  18. Apache Pulsar的数据写入和读取流程,及读写异常处理流程
  19. 总结:第三章:过去一年的所遇所思所学所悟以及2021年的规划图
  20. java就业班怎么改简历_手把手教你如何修改简历

热门文章

  1. 在线工具, 在线网站, 好东西
  2. linker command failed with exit code 1 (use -v to see invocat)错误的处理方法
  3. 黑色星期五c语言程序,黑色星期五
  4. 心情不好 可以 看看冯巩的幽默语录
  5. 华硕固件安装扩展插件_华硕RT-AC86U官改固件-支持AiMesh+软件中心+ROG 3.0.0.4.384.20648...
  6. 学生端android版二1班,一起作业学生端安卓版
  7. 计算机二级ppt学什么软件,计算机二级办公软件机考试参考资料.ppt
  8. mysql英文怎么发音_英语口语怎么练最有效?知道这3个方法就够了!
  9. 批量重命名文件 - Renamer JAVA File
  10. 数据质量治理与数据质量评价体系(术)