音视频
ty潇潇暮雨
这个作者很懒,什么都没留下…
展开
-
FFmpeg将mp4格式视频转为flv
转换视频格式步骤1、打开输入文件2、创建并打开一个空文件存储 flv 格式音视频数据3、遍历输入文件的每一路流,每个输入流对应创建一个输出流,并将输入流中的编解码参数直接拷贝到输出流中。4、写入新的多媒体文件的头5、在循环遍历输入文件的每一帧,对每一个packet进行时间基的转换6、写入新的多媒体文件7、给新的多媒体文件写入文件尾8、释放相关资源源码:#include <libavutil/timestamp.h>#include <libavformat/avfor原创 2020-07-27 21:41:14 · 1610 阅读 · 0 评论 -
抽取视频数据
抽取视频数据步骤1、打开.mp4格式文件2、创建并打开一个空文件存储 H264 数据3、找到视频流,并循环读取流中AVPacket,并为每个流添加特征码和sps/pps等数据(只有关键帧前面要添加sps/pps数据,其他的只需要添加特征码)。4、都处理完后将数据写入文件保存读取sps和pps 数据从AVCodecContext的extradata数据域中读取,如下所示,mp4文件的extradata的部分数据extradata 数据详细分析跳过前 4 个字节第5个字节 ff 的后2位用原创 2020-07-27 21:40:51 · 1335 阅读 · 0 评论 -
抽取音频数据
从.mp4文件中抽取音频数据流流程1、打开.mp4格式多媒体文件2、创建并打开一个空文件存储AAC数据3、循环读取流中AVPacket 包,为每个添加ADTS头,处理完后写入输出文件保存关于AAC的ADTS头详解可以参考:AAC的ADTS头解析相关API文件操作相关API源码:/**抽取音频数据*/#include <stdio.h>#include <libavformat/avformat.h>#include <libavutil/log.h原创 2020-07-27 21:40:33 · 362 阅读 · 0 评论 -
FFMpeg AAC编码
FFMpeg AAC编码流程:添加头文件注册编解码器,avcodec_register_all()通过编解码器名找到编解码器,avcodec_register_all()设置参数,打开编码器,avcodec_open2()获取数据,进行编码。相关API文件操作相关API源码#include <stdint.h>#include <stdio.h>#include <stdlib.h>#include <libavcodec/avco原创 2020-07-27 21:39:54 · 793 阅读 · 0 评论 -
FFMpeg视频转图片
FFmpeg 视频转图片流程:1、找到视频流信息2、初始化解码器上下文,并将流中解码器参数拷贝给解码器上下文3、打开解码器4、转换像素格式5、循环读取视频数据包并对数据进行解码avcodec_send_packet()/avcodec_receive_frame();6、将解码后的数据帧转成 RGB 数据,并保存相关API文件操作相关API源码#include <stdio.h>#include <stdlib.h>#include <string.原创 2020-07-27 21:38:36 · 773 阅读 · 0 评论 -
FFmpeg 中级开发内容介绍
FFmpeg 处理音视频流程原创 2020-07-27 21:37:33 · 133 阅读 · 0 评论 -
FFmpeg H264编码
FFmpeg进行h264的编码流程:1、通过编码器名,查找编码器(h264编码器名字是libx264)2、设置编码器的参数(比如码率、分辨率、帧率、时间基等)。3.打开编码器avcodec_open2()。4.对帧数据进行编码avcodec_send_frame()/avcodec_receive_packet(),编码完后写入文件。(在实际使用中帧数据来源于解码后的元数据或来源于摄像头,本文示例的帧数据时人工添加了模拟数据。)相关API文件操作相关API源码:#include <原创 2020-07-27 21:37:10 · 2355 阅读 · 1 评论 -
FFmpeg 视频编解码基本概念
SPSH264 Profile对视频压缩特性的描述,Profile越高,就说明采用了越高级的压缩特性H264 Profile(一)H264 Profile(二)H264 LevelLevel 是对视频的描述,Level 越高,视频的码率,分辨率、fps(帧率)越高SPS重要参数分辨率相关宏块默认 16 * 16帧相关帧数 :log2_max_frame_num_minus4参考帧数:max_num_ref_frames显示帧序号:pic_order_cnt_type原创 2020-07-27 21:36:32 · 666 阅读 · 0 评论 -
RTMP协议
RTMP 基本概念RTMP 创建流的基本流程Socket 建立 TCP 连接RTMP 握手建立 RTMP 连接创建 RTMP 流RTMP 协议中的握手RTMP 真实的握手建立RTMP连接RTMP真的连接创建RTMP流协议中RTMP流的创建真实创建RTMP流推RTMP流播RTMP流RTMP消息RTMP消息格式...原创 2020-07-27 21:35:29 · 102 阅读 · 0 评论 -
H264编码原理
H264压缩比条件:1.YUV 格式为 YUV4202.分辨率为 640 * 4803. 帧率为15未编码视频的YUV码流(比特):640 * 480 * 1.5 * 15 * 8 = 55296000 约等于 55 M(640 * 480)H264建议码流 : 500kpbs建议码流参考压缩比:约1/100GOP强相关的一组帧GOP中帧与帧之间的差别小I/P/B帧编码帧的分类I帧(intraframe frame),关键帧,采用帧内压缩技术,IDR帧属于I帧p帧原创 2020-07-27 21:34:50 · 251 阅读 · 0 评论 -
视频基础知识
采集音频的步骤注册设备设置采集方式 avfoundation(mac)/dshow(windows)/alsa(Linux)打开音频设备相关APIav_read_frameAVFormatContext : 上下文AVPacket :压缩后的包datasize返回值为 0 表示成功AVPacket 相关av_init_packet :对AVPacket 初始化av_packet_unref :释放资源av_packet_alloc:分配AVPacket 空间,原创 2020-07-27 21:34:14 · 187 阅读 · 0 评论 -
音频基础知识
声音的三要素音调:音频的快慢,频率越高音调越高音色:谐波音量:振动的幅度,幅度越大,音量越大PCM和WAV音频原始数据格式PCM:纯音频数据,没有任何音频格式WAV:存储原始数据或压缩数据,在PCM文件前加一个头,包含了一些基本信息量化基本概念采样大小:一个采样用多少bit存放。常用的是16bit,能够表述的数值的最大范围值。采样率:采样频率 8k、16k、32k、44.1k、48k,声道数:单声道(1)、双声道(2)、多声道(立体声)PCM音频流码流 = 采样大小 * 采原创 2020-07-27 21:33:33 · 810 阅读 · 0 评论 -
Linux 基本指令
基本指令 vim filename :创建文件,并进入编辑 I :切换到编辑模式 esc : 命令模式 :w :保存 :q :退出 :wq :保存并退出 cat filename :查看文件内容 yy :拷贝一行 yw :拷贝一个词 p : 粘贴 dd :删除一行 dw :删除一个词 h : 光标向左移 j :光标向下移 k :光标向上移 l :光标向右移 /关键字 :查找关键字 %s/关键字/替换字/gc :查找与替换 split/vsplit :分窗口 ww/原创 2020-07-27 21:33:08 · 81 阅读 · 0 评论 -
FFmpeg 视频截取
视频截取步骤1、打开输入文件2、创建并打开一个空文件存储 flv 格式音视频数据3、遍历输入文件的每一路流,每个输入流对应创建一个输出流,并将输入流中的编解码参数直接拷贝到输出流中。4、写入新的多媒体文件的头5、快进视频流到要截取的时间6、在循环遍历输入文件的每一帧,对每一个packet进行时间基的转换7、将处理好的pkt写入输出文件8、超过要结束的时间跳出循环9、写入新的多媒体文件尾10、释放相关资源源码:#include "SeekVideo.h"#include <st原创 2020-07-27 21:32:35 · 693 阅读 · 1 评论 -
FFmpeg 初级开发基础介绍
常用APIav_register_all():将FFmpeg所定义的编解码库,格式库,协议库,都注册到项目中int avformat_open_input(AVFormatContext **ps, //上下文指针const char *url,//要读取文件地址AVInputFormat *fmt, //文件格式,一般根据文件地址后缀,自动识别AVDictionary **options); //附加信息 :打开一个多媒体文件,根据文件的后缀名,识别对媒体文件格式,输出格式上下文AVForma原创 2020-07-27 21:31:59 · 121 阅读 · 0 评论 -
FFmpeg 常用命令
1. 基本信息查询命令FFMPEG 可以使用下面的参数进行基本信息查询。例如,想查询一下现在使用的 FFMPEG 都支持哪些 filter,就可以用 ffmpeg -filters 来查询 -version -------显示FFmpeg版本 -formats-------显示可用的格式(包括设备) -demuxers---- 显示可用的demuxers。 -muxers -------显示可用的muxers。 -devices ------显示可用的设备。 -codecs -------原创 2020-07-27 21:31:30 · 446 阅读 · 0 评论 -
FFmpeg下载、编译、安装
1、FFmpeg 下载、编译、安装1.1、下载新建个目录下载 FFMpeg 源码下载命令:git clone https://git.ffmpeg.org/ffmpeg.gitlibavformat 用于各种音视频封装格式的生成和解析libavutil 包含一些公共的工具函数;libavcodec 用于各种类型声音、图像编解码;libavdevice 对音视频设备做处理,采集libavresample 对音频重采样libavfilter 滤镜处理libswresample 用于视频原创 2020-07-27 21:30:59 · 1013 阅读 · 1 评论