说明 基于ffmpeg3.4.2和vs2017开发YUV420p的存储为先Y,再U,再V。 实现过程 使用ffmpeg获取frame数据。 设置sws_getContext为YUV420。 使用sws_scale转换数据。 存储数据。 示例代码 代码主要部分为获取frame,转换成YUV格式,YUV数据保存。 //ffmpeg_lesson01.cpp:定义控制台应用程序的入口点。//include"stdafx.h"extern"C"{include"libavcodec/avcodec.h"include"libavcodec/version.h"include"libavfo...

  NYfg2BRCcXho   2023年11月02日   51   0   0 ide视频流#includeyuvffmpeg

说明 PCM是音频解码后的文件。或者说经过音频经过采样后形成的二进制文件。 对人来说,能听到的是20HZ-20KHZ,这也是次声波和超声波的分界线。 根据采样定理,2倍最高频率就可以还原,加速滤波器带来的畸变,44.1KHZ采样已经可以了。48KHZ以上的采样率,人已经无法分辨差异了。 保存PCM文件时使用的是采用有符号16位保存,而源音频不一定是,所以需要转换。 ffmpeg中的音频相关内容 概述 ffmpeg中AVPacket中可能会含有多个音频帧(AVFrame),一个音频帧含有多个采样,采样率决定了1s有多少个采样(或者说一个音频帧可以播放多久)。对于aac,一帧有1024个采样...

  NYfg2BRCcXho   2023年11月02日   93   0   0 数据采样率写入文件ffmpeg

AVPacket 通过av_read_frame(pFormatCtx,&avPacket)获取一个AVPacket 对于视频来说,一个AVPacket一般包含一帧。 对于音频来说,一个AVPacket可能包含多帧。 AVFrame 用来保存解码后的一帧数据。 数据存储区域需要单独分配。 对于音频来说,一帧包含了多个采样,nb_samples告诉了有多少个采样。 音频相关 1.采样和采样率 采样和采样率是不一样的。采样率是说一秒有多少个采样。对于aac来说一帧有1024个采样,对于44.1KHZ采样率来说,一秒有44.1k个采样。 2.一帧播放时长 对于aac来说,一帧的播放...

  NYfg2BRCcXho   2023年11月02日   78   0   0 数据采样率数据存储

1.打开文件,avformat_open_input, 将文件信息存储在AVFormatContext中。 2.在文件信息中查找流索引avformat_find_stream_info 3.根据流的解码器类型来找到视频流索引号 知道视频流索引就可以把视频流解码器信息保存在AVCodecContext中。 4.可以根据解码器信息查找到解码器avcodec_find_decoder 5.找到解码器后,就可以打开解码器avcodec_open2 6.可以根据文件信息读取一个AvPacket,av_read_frame 7.读取的AvPacket如果是视频帧的话,可以用avcodec_decode_...

  NYfg2BRCcXho   2023年11月02日   61   0   0 ide视频流打开文件

sws_scale()作用 简单说来就是转变图片的存储格式 使用步骤 首先初始化sws_getContext。 使用sws_scale转化。 释放环境sws_freeContext() 代码 SwsContextpSwsCtx=sws_getContext(pCodecContext->width,pCodecContext->height,pCodecContext->pix_fmt,pCodecContext->width,pCodecContext->height,AV_PIX_FMT_RGB24,SWS_BICUBIC,NULL,NULL,NU...

  NYfg2BRCcXho   2023年11月02日   69   0   0 数据性能测试初始化

1.下载vs2017。网上有精简版的可下载。 2.下载ffmpeg的windows库文件。包括开发版和共享版(需要用共享版中的dll文件). ​​https://ffmpeg.zeranoe.com/builds/​​ 3.导入头文件和库 vs2017新建项目 将ffmpeg开发版中的include、lib、共享库中的dll文件拷贝到项目中。 添加头文件目录:右键项目属性-配置属性-C/C-附加包含目录 添加库文件目录:右键项目属性-配置属性-链接器-常规-附加库目录。 添加依赖库文件:右键项目属性-配置属性链接器-输入-附加依赖项:avcodec.lib;avdevice.lib;avf...

  NYfg2BRCcXho   2023年11月02日   76   0   0 库文件右键#includeffmpeg

ffmpeg.exe-iF:\闪客之家\闪客之歌.mp3-ab56-ar22050-b500-r15-s320x240f:\11.flv ffmpeg-iF:\01.wmv-ab56-ar22050-b500-r15-s320x240f:\test.flv 使用-ss参数作用(time_offsetthestarttimeoffset),可以从指定时间点开始转换任务。如: 转换文件格式的同时抓缩微图: ffmpeg-i"test.avi"-y-fimage2-ss8-t0.001-s350x240'test.jpg' 对已有flv抓图:&...

  NYfg2BRCcXho   2023年11月02日   52   0   0 编解码码率比特率

  av_read_frame()之后将得到的视频的AVPacket存为本地文件即可。 经试验,在分离MPEG2码流的时候,直接存储AVPacket即可。 在分离H.264码流的时候,直接存储AVPacket后的文件可能是不能播放的。 如果视音频复用格式是TS(MPEG2TransportStream),直接存储后的文件是可以播放的。 复用格式是FLV,MP4则不行。 经过长时间资料搜索发现,FLV,MP4这些属于“特殊容器”,需要经过以下处理才能得到可播放的H.264码流: 1.第一次存储AVPacket之前需要在前面加上H.264的SPS和PPS。这些信息存储在AVCodecC...

  NYfg2BRCcXho   2023年11月02日   59   0   0 数据码流复用

FFMPEG使用AVPacket来暂存解复用之后、解码之前的媒体数据(一个音/视频帧、一个字幕包等)及附加信息(解码时间戳、显示时间戳、时长等)。其中: dts表示解码时间戳,pts表示显示时间戳,它们的单位是所属媒体流的时间基准。 stream_index给出所属媒体流的索引; data为数据缓冲区指针,size为长度; duration为数据的时长,也是以所属媒体流的时间基准为单位; pos表示该数据在媒体流中的字节偏移量; destruct为用于释放数据缓冲区的函数指针; flags为标志域,其中,最低为置1表示该数据是一个关键帧。 AVPacket结构本身只是个容器,它使用da...

  NYfg2BRCcXho   2023年11月02日   54   0   0 数据JavaScript时间戳

av_dump_format在avformat.h中声明,在libavformat/dump.c中实现,主要用来打印媒体信息。 dump是转储,转存的意思。可以理解为将AVFormatContext中的媒体信息转存到输出。 官方声明如下: /Printdetailedinformationabouttheinputoroutputformat,suchasduration,bitrate,streams,container,programs,metadata,sidedata,codecandtimebase.@paramicthecontexttoanalyze@paramindex...

  NYfg2BRCcXho   2023年11月02日   65   0   0 3g音视频ide比特率ffmpeg

​​http://blog.chinaunix.net/uid-26611383-id-3976154.html​​     FFmpeg是相当强大的多媒体编解码框架,在深入分析其源代码之前必须要有基本的多媒体基础知识,否则其源代码会非常晦涩难懂。本文将从介绍一些基本的多媒体只是,主要是为研读ffmpeg源代码做准备,比如一些编解码部分,只有真正了解了多媒体处理的基本流程,研读ffmpeg源代码才能事半功倍。 下面分析一下多媒体中最基本最核心的视频解码过程,平常我们从网上下载一部电影或者一首歌曲,那么相应的多媒体播放器为我们做好了一切工作,我们只用欣赏就ok了。目前几乎所...

  NYfg2BRCcXho   2023年11月02日   45   0   0 编解码视频流复用

CentOS7-x86_64部署SRS!/bin/bashset-eSRS下载地址http://www.ossrs.net/srs.release/releases/download.htmlNAME=SRS-CentOS7-x86_64-3.0.168PATH_CUR=`pwd`if[`id-u`-ne0];thenecho"请使用root用户执行!"exitfi配置系統yuminstall-yunzipzipyuminstall-yredhat-lsbyuminstall-ynet-toolsfirewall-cmd--zone=public--add-port=1935/tcp-...

  NYfg2BRCcXho   2023年11月02日   90   0   0 服务器apachelinux下载地址CentOS

这里FFMPEG版本用的3.3.3 时间戳描述 AVFormatContext /Durationofthestream,inAV_TIME_BASEfractionalseconds.Onlysetthisvalueifyouknownoneoftheindividualstreamdurationsandalsodonotsetanyofthem.ThisisdeducedfromtheAVStreamvaluesifnotset.Demuxingonly,setbylibavformat./int64_tduration; duration表示整个数据流的时长,获取正...

  NYfg2BRCcXho   2023年11月02日   54   0   0 ide2d时间戳

  一般通过FFmpeg生成的MP4文件如果没有经过特殊处理在播放的时候是要下载完整个文件才能播放,但是我们想将文件用于点播,比如放到DarwinRTSPServer的媒体目录里让访问的客户端播放,必须让它支持边下载边播放。将MP4文件转成可以逐渐播放的操作叫做“流化”,那如何对一个MP4文件进行“流化”呢?我们可以借助ffmpeg带的一个命令行工具--qt-faststart。 qt-faststart会把文件的meta信息移到文件头部,这样转换后的MP4就可以边下载边播放。 用法:/usr/bin/qt-faststartINPUTOUTPUT qt-faststart安装方法...

  NYfg2BRCcXho   2023年11月02日   57   0   0 JavaScript#if命令行工具

​​http://doc.okbase.net/wenjingu/archive/101505.html​​   顾文锦    2014-9-2411:06:51    阅读(2128)    ​​评论​​(0) 本篇将使用上节​​javascript:void(0)​​中编译好的库文件通过rtsp获取网络上的h264裸流并保存到mp4文件中。 1、VS2010建立VC win32控制台项目 2、在工程目录下建立lib目录和include目录,将已编译...

  NYfg2BRCcXho   2023年11月02日   40   0   0 网络流ide#include

1.include<windows.h>2.include<stdio.h>3.include<stdlib.h>4.include<string.h>5.pragmaonce6.7.ifdef__cplusplus8.extern"C"9.endif10.include<libavcodec/avcodec.h>11.include<libavformat/avformat.h>12.include<libswscale/swscale.h>13.14.15.ifdef__cplusplus16...

  NYfg2BRCcXho   2023年11月02日   41   0   0 #endifide#include

​ 既然已经可以通过RTSP获取h264裸流了。那么通过FFmpeg将其保存到文件中怎么做呢? 一、首先RTSP获取h264裸流 我们上面两篇文章主要讲的是通过rtsp://Yourip:554/stream_chn0.h265播放H.265视频流。 PS:我刚试了一下,我的FFmpeg程序暂时不支持h265...之前编译的时候,只提供了x264没有x265 如果感兴趣参看下面两篇文章添加。 参看:​​使用VS2015添加对ffmpeg添加h265支持。​​ 参看:​​ffmpeg编码H265和H264对比​​ 再结合之前讲的,FFmepg再学习系列,应该是没问题的。不过好久没有弄了,早忘了...

  NYfg2BRCcXho   2023年11月02日   44   0   0 ide#include存到文件

如有错误,请指正,谢谢。 拉流(设置TCP/UDP) //设置参数AVDictionaryformat_opts=NULL;av_dict_set(&format_opts,"stimeout",std::to_string(21000000).c_str(),0);//设置链接超时时间(us)av_dict_set(&format_opts,"rtsp_transport","tcp",0);//设置推流的方式,默认udp。//初始化输入上下文AVFormatContextm_InputContext=avformat_alloc_context();//打开输入流。...

  NYfg2BRCcXho   2023年11月02日   28   0   0 数据JavaScript初始化

前言 在开发多媒体播放器或直播系统时,音视频​的同步是非常关键且复杂的点。要想把音视频同步搞明白,我们必须要了解一些基本的知识。只有了解了这些基本知识,才能为你打下理解音视频同步的基础。本文将从下面几个主题介绍这些知识点: I/B/P帧 PTS/DTS 时间基 ffmpeg的内部时间基 不同时间基的换算 I/B/P帧 对于I帧,B帧,P帧,我想很多人对它们已经了解的很多了。 I帧是关键帧,它采用帧内压缩技术; B帧是前后参考帧,它属由帧间压缩技术。也就是说在压缩成B帧前,它会参考它前面的非压缩视频帧,和后面的非压缩的视频帧,记录下前后两帧都不存放的“残差值”,这样可以达到更好的压缩率;...

  NYfg2BRCcXho   2023年11月02日   48   0   0 音视频同步音视频时间戳

目录 [​​hide​​] ​​1 视频的显示和存放原理​​ ​​1.1 DTS和PTS​​ ​​2 ffmpeg中的时间单位​​ ​​2.1 AV_TIME_BASE​​ ​​2.2 AV_TIME_BASE_Q​​ ​​2.3 时间基转换公式​​ 视频的显示和存放原理 对于一个电影,帧是这样来显示的:IBBP。现在我们需要在显示B帧之前知道P帧中的信息。因此,帧可能会按照这样的方式来存储:IPBB。这就是为什么我们会有一个解码时间戳和一个显示时间戳的原因。解码时间戳告诉我们什么时候需要解码,显示时间戳告...

  NYfg2BRCcXho   2023年11月02日   35   0   0 ide2d时间戳
关注 更多

空空如也 ~ ~

粉丝 更多

空空如也 ~ ~