通过学习网上博友“浩@子”的博客,搞懂了1)ffmpeg源码中libavformat和libaccodec之间的区别;2)ffmpeg中视频解码的代码流程。这里我先用简要语言和伪码来对这两点进行说明,然后在二楼贴出博客原文。
libavformat库:对音频和视频流进行分离,输入是音视频文件,输出是单独的音频流和视频流。
libavcodec库:对音频流和视频流按照其格式进行编码和解码。编码格式转换就是在这个库完成。
视频解码的伪码流程:
(1)打开视频文件 av_open_input_file(&pFormatCtx, filename)
打开filename指向的文件,将文件信息存入上下文结构pFormatCtx中。
(2)取出视频流 av_find_stream_info(pFormatCtx)
取出的视频流也放在上下文结构中 pFormatCtx->stream field。
(3) 根据上下文中编码信息找到对应的编码器 pCodec = avcodec_find_decoder(pFormatCtx->codec_id)
编码器即对应libavcodec库中对应的编解码函数。
(4) 打开编码器 avcodec_open(pCodecCtx)
(5) 循环调用GetNextFrame将视频流转换成一帧一帧的RGB格式。
GetNextFrame(pFormatCtx, pFrame)
{
avcodec_decode_video(pFormatCtx, pFrame) //将一帧解码到YUV格式的pFrame
}
while(GetNextFrame(pFormatCtx, pCodecCtx, pFrame))
{
img_covert(pFrameRGB, pFrame) //格式从YUV转换为RGB
DoSomething() //帧图片存盘或播放
}
(6) 释放分配的资源 av_free(pFrame)
av_free(pFremeRGB)
avcodec_close(pCodecCtx) //关闭编解码器
av_close_input_file(pFormatCtx) //关闭原始视频文件
分享到:
相关推荐
要显示视频画面,就要先用FFmpeg读取本地mp4文件,mp4...与处理rtmp流类似,要播放音频,同样要用FFmpeg对mp4文件中的音频流进行解码获取到音频帧,然后将音频帧数据喂给由Windows系统声音播放API构成的函数就可以了。
该播放器虽然简单,但是几乎包含了使用FFMPEG播放一个音频所有必备的API,并且使用SDL播放解码出来的音频。 相比旧版本的改动: 重建了工程,删掉了不必要的代码,把代码修改得更规范更易懂。 可以通过宏控制是否...
该播放器虽然简单,但是几乎包含了使用FFMPEG播放一个音频所有必备的API,并且使用SDL播放解码出来的音频。 该版本使用SDL2.0替代了原先的SDL1.2 相比旧版本的改动: *重建了工程,删掉了不必要的代码,把代码修改...
实现代码主要参考雷神的视音频复用器(muxer),来实现 g711+h264 写入MP4文件。 (不支持H264编解码) 雷神: https://blog.csdn.net/leixiaohua1020/article/details/39802913。
该播放器虽然简单,但是几乎包含了使用FFMPEG播放一个音频所有必备的API,并且使用SDL播放解码出来的音频。 该版本使用SDL2.0替代了原先的SDL1.2 相比旧版本的改动: *重建了工程,删掉了不必要的代码,把代码修改...
通过ffmpeg提供的API完成AAC文件的解码。 编译环境 VS2008 开发语言 C
要显示视频画面,就要先用FFmpeg拉取rtmp流,rtmp流中既有视频流也有音频流,FFmpeg对其中的视频流进行解码获取到视频帧,然后将视频帧用openCV转换为Mat数组,最后用openCV将Mat数组显示出来就可以了。用openCV将...
FFMPEG工程浩大,可以参考的书籍又不是很多,因此很多刚学习FFMPEG的人常常感觉到无从下手。...该播放器虽然简单,但是几乎包含了使用FFMPEG播放一个音频所有必备的API,并且使用SDL播放解码出来的音频。
ffmpeg基础库开发技术,介绍ffmpeg api的使用,多媒体开发必不可少的技能。 1. AVFormatContext:就是对容器或者媒体文件层次的抽象。 2. AVStream:在文件中(容器里面)包含了多路流(音频流、视频流、字幕流),...
该播放器虽然简单,但是几乎包含了使用FFMPEG播放一个音频所有必备的API,并且使用SDL播放解码出来的音频。 相比旧版的改动: 重建了工程,删掉了不必要的代码,把代码修改得更规范更易懂。 可以通过宏控制是否使用...
12-使用FFmpeg SDK进行音频编解码着重介绍如何调用libavcodec库中相关API,将PCM格式的原始音频采样数据编码为MP3格式或者AAC格式的音
该播放器虽然简单,但是几乎包含了使用FFMPEG播放一个音频所有必备的API,并且使用SDL播放解码出来的音频。 相比旧版本的改动: 重建了工程,删掉了不必要的代码,把代码修改得更规范更易懂。 可以通过宏控制是否...
@[TOC](基于WASM的H265 Web播放器) 1 背景 目前这个时间点,原生支持H265(HEVC)播放的浏览器极少,可以说基本没有,主要原因一个是H265的解码...本文相关的代码使用WASM、FFmpeg、WebGL、Web Audio等组件实现了一个简易
FFMPEG_apiexample.c_随机 随机产生视频 音频,分为四个模块,独立音频编码,音频解码,视频编码,视频解码。对源码未作过大改动。
使用Delphi开发的FFMpeg + BASS例子,本例子简单的实现FFMpeg音视频解码播放。例子中给出了音频及视频的简单处理以及渲染方法。例子为纯FFMpeg API调用,无需安装FFVCL等控件。
项目是进行android音视频进阶的整个流程学习流程代码,其中包括1.在 Android 平台绘制一张图片,使用至少 3 种不同的 API,ImageView,SurfaceView,自定义 View 2.在 Android 平台使用 AudioRecord 和 AudioTrack ...
FFMPEG工程浩大,可以参考的书籍又不是很...该播放器代码十分简单,但是几乎包含了使用FFMPEG播放一个音频所有必备的API,并且使用SDL播放解码出来的音频。十分适合FFmpeg的初学者。 使用了2014.5.6版本的FFmpeg类库。
1. Android Camera2 API 采集预览视频 2. MediaCodec 进行硬编码,编码成h264视频文件 3. AudioRecord采集音频PCM数据,同样利用MediaCodec编码成AAC数据 4. jrtplib库进行视频音频数据发送,本项目修改jrtplib库,...
音/视频工具 FFmpeg 简易安装文档 2、安装 ffmpeg-python pip3 install ffmpeg-python 3、【可选】安装 opencv-python pip3 install opencv-python 4、【可选】安装 numpy pip3 install numpy 视频帧提取 准备...
⠀寻找强大的相机库来拍摄视频? 看看我们的CameraView。...转码器使用设备上可用的硬件加速的Android编解码器,将视频文件转码并将其压缩为MP4格式,并具有音频支持。 适用于API 18+。 实施'com.otaliastudio