h264: mp4 to annexb in ffmpeg
2015-06-07 19:10
405 查看
h264有两种封装,
一种是annexb模式,传统模式,有startcode,SPS和PPS是在ES中
一种是mp4模式,一般mp4 mkv会有,没有startcode,SPS和PPS以及其它信息被封装在container中,每一个frame前面是这个frame的长度
很多解码器只支持annexb这种模式,因此需要将mp4做转换:
在ffmpeg中用h264_mp4toannexb_filter可以做转换
实现:
注册filter
avcbsfc = av_bitstream_filter_init("h264_mp4toannexb");
转换bitstream
av_bitstream_filter_filter(AVBitStreamFilterContext *bsfc,
AVCodecContext *avctx, const char *args,
uint8_t **poutbuf, int *poutbuf_size,
const uint8_t *buf, int buf_size, int keyframe)
一种是annexb模式,传统模式,有startcode,SPS和PPS是在ES中
一种是mp4模式,一般mp4 mkv会有,没有startcode,SPS和PPS以及其它信息被封装在container中,每一个frame前面是这个frame的长度
很多解码器只支持annexb这种模式,因此需要将mp4做转换:
在ffmpeg中用h264_mp4toannexb_filter可以做转换
实现:
注册filter
avcbsfc = av_bitstream_filter_init("h264_mp4toannexb");
转换bitstream
av_bitstream_filter_filter(AVBitStreamFilterContext *bsfc,
AVCodecContext *avctx, const char *args,
uint8_t **poutbuf, int *poutbuf_size,
const uint8_t *buf, int buf_size, int keyframe)
相关文章推荐
- 有序链表的归并
- Java for LeetCode 204 Count Primes
- HBase如何选取split point
- 判断链表是否存在环路
- 父类引用指向子类对象
- 链表的逆置
- 包装FTPWebRequest类
- 详解Redis源码中的部分快速排序算法(pqsort.c)
- [leetcode] Merge Sorted Array
- 英文不好,该怎么写论文
- 前端优化杂记
- web标签语义化
- 《梦断代码》随笔之三
- 如何使用Java程序通过JDBC访问HDInsight Hive Server
- 微信又出新玩法,继小视频后公众号文章支持添加音乐
- KAFKA分布式消息系统
- 最长公共子序列与最长上升子序列--再学DP
- Android入门——电话拨号器和四种点击事件
- 最长公共子序列与最长上升子序列--再学DP
- 第14周上机实践项目2——用文件保存的学生名单