社区
新手乐园
帖子详情
我用av_read_frame读取h264的Mp4文件。需要用avcodec_decode_video2进行解码
weixin_36737004
2016-11-17 01:58:29
我想请教一下,我查阅网上的资料,将取出来的数据,加上sps以及pps头,将数据开始的四个字节换成00 00 00 01.但是调用avcodec_decode_video2接口还是不能取出来完整的一帧数据,为什么,大神们,救救小女子吧
...全文
906
3
打赏
收藏
我用av_read_frame读取h264的Mp4文件。需要用avcodec_decode_video2进行解码
我想请教一下,我查阅网上的资料,将取出来的数据,加上sps以及pps头,将数据开始的四个字节换成00 00 00 01.但是调用avcodec_decode_video2接口还是不能取出来完整的一帧数据,为什么,大神们,救救小女子吧
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
3 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
weixin_36737004
2016-11-21
打赏
举报
回复
avcodec_decode_video2解析mkv文件的h264数据,读取出来的数据I帧前面加起始头加sps pps 。这样一帧数据都解不出来。请问大神们 mkv的h264数据解码和MP4的h264数据解码,都是调用avcodec_decode_video2进行解码,为什么MP4的可以,mkv文件的不行。
weixin_36737004
2016-11-21
打赏
举报
回复
问题已解决。。。。
weixin_36737004
2016-11-17
打赏
举报
回复
自己先顶一下
FFmpeg基础库编程开发
目录 第一章 多媒体概念介绍 6 1.1视频格式 6 1.1.1常见格式 6 1.2音频格式 9 1.2.1常见格式 9 1.2.2比较 15 1.3字幕格式 15 1.3.1外挂字幕与内嵌字幕的阐述 15 1.3.2外挂字幕视频与内嵌字幕视频的画面比较 15 1.3.3外挂字幕的三种格式 15 1.4采集录制和播放渲染 16 1.4.1视频采集 16 1. 4.2视频录制 17 1.4.3视频渲染 17 1.5编
解码
器 18 1.6容器和协议 19 1.6.1容器格式和编码格式 19 1.6.2协议 26 1.6.2.1 视频协议 26 1.6.2.2 音频协议. 26 1.6.2.3 上层通讯协议 27 1.7常用概念介绍 27 1.7.1硬解 27 1.7.2 IBP帧 28 1.7.3 DTS和PTS 31 1.7.4 分辨率 31 1.7.5 码率 32 1.7.6 帧率 32 1.7.7 RGB和YUV 32 1.7.8 实时和非实时 32 1.7.9 复合视频和s-
video
32 1.7.10 硬件加速 32 1.7.11 FFmpeg Device 32 第二章 FFmpeg框架 34 2.1 FFmpeg概述 34 2.1.1简介 34 2.1.2功能 34 2.1.3模块组成 35 2.1.4命令集 35 2.2 媒体播放器三大底层框架 37 第三章 编译及简单应用 41 3.1 FFmpeg库编译和入门介绍 41 41 3.2 流媒体数据流程讲解 49 3.3 简单应用 51 3.4 SDL( Simple Direct Layer) 55 3.4.1 SDL显示视频 55 3.4.2 SDL显示音频 55 3.5 ffmpeg程序的使用(ffmpeg.exe,ffplay.exe,ffprobe.exe) 56 3.5.1 ffmpeg.exe 56 3.5.2 ffplay.exe 56 3.5.3 ffprobe.exe 56 第四章 数据结构 57 4.1 A
VCode
c结构体 59 4.2 A
VCode
cContext结构体 59 4.3
AV
InputFormat结构体 60 4.4
AV
FormatContext结构体 61 4.5 MovContext结构体 62 4.6 URLProtocol结构体 62 4.7 URLContext结构体 63 4.8
AV
IOContext结构体(老版本为:ByteIOContext) 63 4.9
AV
Stream结构体 64 4.10 MOVStreamContext 结构体 65 4.11
AV
Packet 结构体 66 4.12
AV
PacketList 结构体 67 4.13
AV
Frame
结构体 67 第五章 重要模块 76 5.1 lib
av
util公共模块 76 1
文件
列表 76 2 common.h
文件
76 3 bswap.h
文件
78 4 rational.h
文件
79 5 mathematics.h
文件
80 6
av
util.h
文件
80 5.2 liba
vcode
c编
解码
模块 82 1
文件
列表 82 2 a
vcode
c.h
文件
82 3 allcodec.c
文件
87 4 dsputil.h
文件
87 5 dsputil.c
文件
88 6 utils_codec.c
文件
88 7 imgconvert_template.h
文件
99 8 imgconvert.c
文件
121 9 msrle.c
文件
164 10 turespeech_data.h
文件
171 11 turespeech.c
文件
174 5.3 lib
av
format容器模块 184 1
文件
列表 184 2
av
format.h
文件
184 3 allformat.c
文件
190 4 cutils.c
文件
190 5 file.c
文件
192 6
av
io.h
文件
194 7
av
io.c
文件
196 8
av
iobuf.c
文件
200 9 utils_format.c
文件
209 10
av
idec.c
文件
220 5.4 libswscale视频色彩空间转换 243 5.5 libswresample音频重采样 243 5.6 lib
av
filter音视频滤器 243 5.7 lib
av
device设备输入和输出容器 243 5.8 libpostproc视频后期处理 243 第六章 播放器 243 6.1 视频播放器 243 6.1.1 ffmpeg库的配置 243 6.1.2 一个简单的视频播放器 244 6.2 音频播放器 247 6.3 一个完整的播放器--ffplay 253 6.3.1 ffplay流程图 253 6.3.2 ffplay源码剖析 254 第七章 应用开发 275 7.1 ffmpeg库的使用:编码 275 第八章 关键函数介绍 280 8.1
av
format_open_input 280 8.2 a
vcode
c_register_all() 281 8.3
av
_
read
_
frame
() 283 8.4 a
vcode
c_
decode
_
video
2() 283 8.5 transcode_init() 283 8.6 transcode() 294 第九章 ffmpeg相关工程 301 9.1 ffdshow 301 ffdshow 源代码分析1 : 整体结构 302 ffdshow 源代码分析 2: 位图覆盖滤镜(对话框部分Dialog) 304 ffdshow 源代码分析 3: 位图覆盖滤镜(设置部分Settings) 312 ffdshow 源代码分析 4: 位图覆盖滤镜(滤镜部分Filter) 317 ffdshow 源代码分析 5: 位图覆盖滤镜(总结) 322 ffdshow 源代码分析 6: 对
解码
器的dll的封装(liba
vcode
c) 322 ffdshow 源代码分析 8: 视频
解码
器类(T
video
CodecDec) 344 ffdshow 源代码分析 9: 编
解码
器有关类的总结 352 9.2 L
AV
filters 357 L
AV
Filter 源代码分析 1: 总体结构 357 L
AV
Filter 源代码分析 2: L
AV
Splitter 358 L
AV
Filter 源代码分析 3: L
AV
Video
(1) 382 L
AV
Filter 源代码分析 4: L
AV
Video
(2) 400 9.3 MPlayer 427 9.3.1 Mplayer支持的格式 427 9.3.2 Mplayer 中头
文件
的功能分析 427 9.3.3 MPlayer.main 主流程简要说明 428 9.3.4 Mplayer源码分析 429 第十章 开发实例 436 第十一章
mp4
文件
封装协议分析 436 11.1 概述 436 11.2
mp4
的物理结构 436 11.3 数据的组织结构 437 11.4
mp4
的时间结构 437 11.5
文件
结构分析 438 11.5.1 File Type Box(ftyp) 438 11.5.2 Movie Box(moov) 438 第十二章 flv
文件
格式分析 457 12.1 概述 457 12.2
文件
总体结构 457 12.3
文件
结构分析 458 12.3.1 flv
文件
头的结构 458 12.3.2 body主体结构 459 附录A:常见问题 465 1 ffmpeg 从内存中
读取
数据 465 2 MFC中使用SDL播放音频没有声音的解决方法 465 附录B:经典代码示例 466 附录C:ffmpeg参数中文详细解释 477 附录D:ffplay的快捷键以及选项 479 附录E: ffmpeg处理rtmp流媒体 481
ffmpeg基础开发资料自总结
适合fresh man上手 ffmpeg 库。 目录 ------------------------- 目录 第一章 多媒体概念介绍 6 1.1 视频格式 6 1.1.1 常见格式 6 1.2 音频格式 8 1.2.1 常见格式 9 1.2.2 比较 14 1.3 字幕格式 14 1.3.1 外挂字幕与内嵌字幕的阐述 14 1.3.2 外挂字幕视频与内嵌字幕视频的画面比较 15 1.3.3 外挂字幕的三种格式 15 1.4 采集录制和播放渲染 15 1.4.1 视频采集 15 1.4.2 视频录制 16 1.4.3 视频渲染 16 1.5 编
解码
器 18 1.6 容器和协议 18 1.6.1 容器格式和编码格式 18 1.6.2 协议 24 1.6.2.1 视频协议 25 1.6.2.2 音频协议 25 1.6.2.3 上层通讯协议 25 1.7 常用概念介绍 26 1.7.1 硬解 26 1.7.2 IBP 帧 26 1.7.3 DTS 和PTS 30 1.7.4 分辨率 30 1.7.5 码率 30 1.7.6 帧率 30 1.7.7 RGB 和YUV 30 1.7.8 实时和非实时 30 1.7.9 复合视频和 s-
video
31 1.7.10 硬件加速 31 1.7.11 FFmpeg Device 31 第二章 FFmpeg 框架 32 2.1 FFmpeg 概述 32 2.1.1 简介 32 2.1.2 功能 32 2.1.3 模块组成 33 2.1.4 命令集 33 2.2 媒体播放器三大底层框架 35 第三章 编译及简单应用 39 3.1 FFmpeg 库编译和入门介绍 41 39 3.2 流媒体数据流程讲解 40 3.3 简单应用 42 3.4 SDL( Simple Direct Layer) 45 3.4.1 SDL 显示视频 45 3.4.2 SDL 显示音频 46 3.5 ffmpeg 程序的使用(ffmpeg.exe,ffplay.exe,ffprobe.exe) 46 3.5.1 ffmpeg.exe 46 3.5.2 ffplay.exe 46 3.5.3 ffprobe.exe 46 第四章 数据结构 50 4.1 A
VCode
c 结构体 51 4.2 A
VCode
cContext 结构体 52 4.3
AV
InputFormat 结构体 53 4.4
AV
FormatContext 结构体 62 4.5 MovContext 结构体 63 4.6 URLProtocol 结构体 63 4.7 URLContext 结构体 64 4.8
AV
IOContext 结构体(老版本为:ByteIOContext) 64 4.9
AV
Stream 结构体 65 4.10 MOVStreamContext 结 构体 66 4.11
AV
Packet 结 构体 67 4.12
AV
PacketList 结 构体 67 4.13
AV
Frame
结构体 53 第五章 重要模块 68 5.1 lib
av
util 公共模块 68 1
文件
列表 68 2 common.h
文件
68 3 bswap.h
文件
70 4 rational.h
文件
71 5 mathematics.h
文件
71 6
av
util.h
文件
72 5.2 liba
vcode
c 编
解码
模块 73 1
文件
列表 73 2 a
vcode
c.h
文件
74 3 allcodec.c
文件
78 4 dsputil.h
文件
79 5 dsputil.c
文件
79 6 utils_codec.c
文件
80 7 imgconvert_template.h
文件
90 8 imgconvert.c
文件
110 9 msrle.c
文件
152 10 turespeech_data.h
文件
159 11 turespeech.c
文件
162 5.3 lib
av
format 容器模块 171 1
文件
列表 171 2
av
format.h
文件
172 3 allformat.c
文件
177 4 cutils.c
文件
178 5 file.c
文件
179 6
av
io.h
文件
182 7
av
io.c
文件
184 8
av
iobuf.c
文件
188 9 utils_format.c
文件
197 10
av
idec.c
文件
208 5.4 libswscale 视频色彩空间转换 230 5.5 libswresample 音频重采样 230 5.6 lib
av
filter 音视频滤器 230 5.7 lib
av
device 设备输入和输出容器 230 5.8 libpostproc 视频后期处理 230 第六章 播放器 230 6.1 视频播放器 230 6.1.1 ffmpeg 库的配置 230 6.1.2 一个简单的视频播放器 231 6.2 音频播放器 234 6.3 一个完整的播放器--ffplay 240 6.3.1 ffplay 流程图 240 6.3.2 ffplay 源码剖析 240 第七章 应用开发 262 7.1 ffmpeg 库的使用:编码 262 第八章 关键函数介绍 267 8.1
av
format_open_input 267 8.2 a
vcode
c_register_all() 268 8.3
av
_
read
_
frame
() 269 8.4 a
vcode
c_
decode
_
video
2() 270 8.5 transcode_init() 270 8.6 transcode() 280 第九章 ffmpeg 相关工程 288 9.1 ffdshow 288 ffdshow 源代码分析 1 : 整体结构 288 ffdshow 源代码分析 2: 位图覆盖滤镜(对话框部分 Dialog) 290 ffdshow 源代码分析 3: 位图覆盖滤镜(设置部分Settings) 297 ffdshow 源代码分析 4: 位图覆盖滤镜(滤镜部分Filter) 301 ffdshow 源代码分析 5: 位图覆盖滤镜(总结) 306 ffdshow 源代码分析 6: 对
解码
器的 dll 的封装(liba
vcode
c) 306 ffdshow 源代码分析 8: 视频
解码
器类(T
video
CodecDec) 328 ffdshow 源代码分析 9: 编
解码
器有关类的总结 335 9.2 L
AV
filters 340 L
AV
Filter 源代码分析 1: 总体结构 340 L
AV
Filter 源代码分析 2: L
AV
Splitter 341 L
AV
Filter 源代码分析 3: L
AV
Video
(1) 364 L
AV
Filter 源代码分析 4: L
AV
Video
(2) 382 9.3 MPlayer 408 9.3.1 Mplayer 支持的格式 408 9.3.2 Mplayer 中头
文件
的功能分析 408 9.3.3 MPlayer.main 主流程简要说明 408 9.3.4 Mplayer 源码分析 409 第十章 开发实例 416 第十一章
mp4
文件
封装协议分析 416 11.1 概述 416 11.2
mp4
的物理结构 416 11.3 数据的组织结构 417 11.4
mp4
的时间结构 417 11.5
文件
结构分析 418 11.5.1 File Type Box(ftyp) 418 11.5.2 Movie Box(moov) 418 第十二章 flv
文件
格式分析 437 12.1 概述 437 12.2
文件
总体结构 437 12.3
文件
结构分析 438 12.3.1 flv
文件
头的结构 438 12.3.2 body 主体结构 439 附录A:常见问题 444 1 ffmpeg 从内存中
读取
数据 444 2 MFC 中使用SDL 播放音频没有声音的解决方法 444 附录B:经典代码示例 445 附录 c:ffmpeg 参数中文详细解释 456 附录D:ffplay 的快捷键以及选项 458 附录E: ffmpeg 处理 rtmp 流媒体 459
利用
av
_
read
_
frame
解码
h264
、
mp4
多媒体
文件
为yuv
1、
解码
在上一篇博客《利用
av
_parser_parser2函数,
解码
h264
文件
》中,只能
解码
h264
文件
为yuv,不能直接从
mp4
、
av
i等多媒体
文件
中直接
解码
yuv,本文不仅可以
解码
h264
文件
到yuv,而且也支持直接从
mp4
中提取视频并
解码
为yuv,相比上一篇博客中的方法更通用一些。 2、
解码
流程
解码
mp4
文件
比
解码
h264
多了一个步骤:从视频流(stream)中复制参数到
解码
器上下文(A
VCode
cContext)中,这是一个必须的步骤,
解码
h264
此步骤可以省略。 3、代码 v
ffmpeg源码简析(八)
解码
av
_
read
_
frame
(),a
vcode
c_
decode
_
video
2(),
av
format_close_input()
1.
av
_
read
_
frame
()
av
_
read
_
frame
()的作用是
读取
码流中的音频若干帧或者视频一帧。例如,
解码
视频的时候,每
解码
一个视频帧,
需要
先调用
av
_
read
_
frame
()获得一帧视频的压缩数据,然后才能对该数据
进行
解码
(例如H.264中一帧压缩数据通常对应一个NAL)。通过
av
_
read
_packet(***),
读取
一个包,
需要
说明的是此函数必须是包含整数帧的,不存在半帧的情况...
ffmpeg 源代码简单分析 :
av
_
read
_
frame
()
ffmpeg中的
av
_
read
_
frame
()的作用是
读取
码流中的音频若干帧或者视频一帧。例如,
解码
视频的时候,每
解码
一个视频帧,
需要
先调用
av
_
read
_
frame
()获得一帧视频的压缩数据,然后才能对该数据
进行
解码
(例如H.264中一帧压缩数据通常对应一个NAL)。 对该函数源代码的分析是很久之前做的了,现在翻出来,用博客记录一下。
av
_
read
_
frame
()的源代码如下:
新手乐园
33,311
社区成员
41,784
社区内容
发帖
与我相关
我的任务
新手乐园
C/C++ 新手乐园
复制链接
扫一扫
分享
社区描述
C/C++ 新手乐园
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章