首页
Python
Java
IOS
Andorid
NodeJS
JavaScript
HTML5
ffmpeg 使用d3d解码
2024-08-02
基于FFmpeg的Dxva2硬解码及Direct3D显示(一)
目录 前言 名词解释 代码实现逻辑 前言 关于视频软解码的资料网上比较多了,但是关于硬解可供参考的资料非常之有限,虽然总得来说软解和硬解的基本逻辑一样,但是实现细节上的差别还是比较多的.虽然目前功能已实现,但是理解不到位的地方还是有的,文中我会抛出来,希望大神们不吝赐教. 上图大致说明了软解和硬解的流程,其中红色箭头表示需要在系统内存与显存之前进行IO,比较费时. 名词解释 FFmpeg:通俗理解就是一套包含视音频编解码.采集.转码及处理等功能的开源库,源码由C语言编写. Dxva2:就是Dir
[原]如何在Android用FFmpeg+SDL2.0解码图像线程
关于如何在Android上用FFmpeg+SDL2.0解码显示图像参考[原]如何在Android用FFmpeg+SDL2.0解码显示图像 ,关于如何在Android使用FFmpeg+SDL2.0解码声音参考[原]如何在Android用FFmpeg+SDL2.0解码声音.但是该文章有一个问题,就是解码出来的声音有很大的噪音,基本无法听清,这是由于对于声音的处理有问题.故本文参考ffmpeg-sdl音频播放分析声音解码的处理,解码出来的声音就正常了. 博主的开发环境:Ubuntu 14.04 64位
[原]如何在Android用FFmpeg+SDL2.0解码声音
关于如何在Android上用FFmpeg+SDL2.0解码显示图像参考[原]如何在Android用FFmpeg+SDL2.0解码显示图像 ,本文是基于上述文章和[原]零基础学习视频解码之解码声音 来移植到Android设备上的,也是参考http://dranger.com/ffmpeg/tutorial03.html来编写的.只不过dranger的文章比较老了,FFmpeg很多接口变了,因此采用了最新的接口替换,并且采用FFmpeg+SDL2.0来做解码和输出. 博主的开发环境:Ubuntu 1
FFmpeg源代码结构图 - 解码
===================================================== FFmpeg的库函数源代码分析文章列表: [架构图] FFmpeg源代码结构图 - 解码 FFmpeg源代码结构图 - 编码 [通用] FFmpeg 源代码简单分析:av_register_all() FFmpeg 源代码简单分析:avcodec_register_all() FFmpeg 源代码简单分析:内存的分配和释放(av_malloc().av_free()等) FFmpeg 源代
[ffmpeg] h264并行解码
ffmpeg中的并行解码分为两种: Frame-level Parallelism Slice-level Parallelism Frame-level Parallelism 帧间依赖 我们之前讨论过Frame-level Parallelism.在之前的文章中,我们说过在进行帧级的并行处理时,由于I.P帧是作为参考帧(B帧也能作为参考帧),因此不能对其进行并行处理,只有非参考B帧才是最适宜进行并行处理的帧.不过其实如果我们能正确地处理好各个帧之间的依赖关系,无论是I.P还是B帧都能进行并行
ffmpeg H264 编解码配置
ffmpeg H264编解码前面有文章介绍下,本文主要介绍一些参数配置. 编码: int InitEncoderCodec( int iWidth, int iHeight) { AVCodec * pH264Codec = avcodec_find_encoder(AV_CODEC_ID_H264); if(NULL == pH264Codec) { printf("%s", "avcodec_find_encoder failed"); return -1; }
[原]如何在Android用FFmpeg+SDL2.0解码显示图像
如何在Android上使用FFmpeg解码图像参考文章[原]如何在Android用FFmpeg解码图像 ,如何在Android上使用SDL2.0来显示图像参考[原]零基础学习SDL开发之在Android使用SDL2.0显示BMP图 .有了以上两篇文章的基础我们就可以在Android使用FFmpeg来解码图像并且使用SDL2.0来显示输出的图像了. 博主的开发环境:Ubuntu 14.04 64位,Eclipse+CDT+ADT+NDK. 在文章开始之前假定你已经知道如何使用NDK编译FFmpeg
ffmpeg关于aac解码
ffmpeg从0.11.3版本开始,默认解码aac为AV_SAMPLE_FMT_FLT (float) 0.11.2以前版本解码aac为AV_SAMPLE_FMT_S16 (16位short型)
FFMPEG视音频解码【一】
多媒体的时代,得多了解点编解码的技术才行,而ffmpeg为我们提供了一系列多媒体编解码的接口,如何用好这些接口达到自己所需要的目的,这也是一门重要的学问. 要是了解得不够,总是会遇到一堆又一堆问题:网上关于ffmpeg的讲解,说少也不少,说多也不多,由于版本更新又更新,能找着的资料基本上都不大能对得上,需要进行一定量的修改才能正常工作:所以,我也借着这个机会,重新走一遍ffmpeg的入门,然后理清同步等问题. 本文主要讲的是ffmpeg解码最基本的步骤,以及其用到的接口,另附有完整的实例代码.
利用ffmpeg将H264解码为RGB
因为公司买到了一个不提供解码器的设备,我不得已还要做解码的工作.在网上找了一圈,H264解码比較方便的也就是ffmpeg一系列的函数库了,原本设备中也是用这套函数库解码,但厂家不给提供,没办法,仅仅得自己搞了. 利用H264解码分为几个步骤: 注意一点在加入头文件的时候要加入extern "C",不然会出现错误 extern "C" { #include <avcodec.h> #include <avformat.h> #include &
ffmpeg架构和解码流程分析
转 一,ffmpeg架构 1. 简介 FFmpeg是一个集录制.转换.音/视频编码解码功能为一体的完整的开源解决方案.FFmpeg的 开发是基于Linux操作系统,但是可以在大多数操作系统中编译和使用.FFmpeg支持MPEG. DivX.MPEG4.AC3.DV.FLV等40多种编码,AVI.MPEG.OGG.Matroska.ASF等90多种解码. TCPMP, VLC, MPlayer等开源播放器都用到了FFmpeg. FFmpeg主目录下主要有libavcodec.libavformat
linux之x86裁剪移植---ffmpeg的H264解码显示(420、422)
在虚拟机上yuv420可以正常显示 ,而945(D525)模块上却无法显示 ,后来验证了directdraw的yuv420也无法显示 ,由此怀疑显卡不支持 ,后把420转换为422显示. 420显示如下: /* 编译命令:arm-linux-gcc -o show2642 264showyuv2.c -I/usr/local/ffmpeg_arm/include/ -L/usr/local/ffmpeg_arm/lib/ -lswresample -lavformat -lavutil -lav
[ffmpeg] h.264解码所用的主要缓冲区介绍
在进行h264解码过程中,有两个最重要的结构体,分别为H264Picture.H264SliceContext. H264Picture H264Picture用于维护一帧图像以及与该图像相关的语法元素.其中占用大片内存的结构体成员有以下几个: typedef struct H264Picture { AVFrame *f; int8_t *qscale_table; int16_t (*motion_val[2])[2]; uint32_t *mb_type; int8_t *ref_inde
FFmpeg 裁剪——音频解码
配置ffmpeg,只留下某些音频的配置: ./configure --enable-shared --disable-yasm --enable-memalign-hack --enable-gpl --enable-cross-compile --prefix=/home/liqinghan/workspace/ffmpeg-/_install --arch=arm --target-os=linux --cross-prefix=arm-hisiv400-linux- --disable-p
FFmpeg(9)-解码器解码代码演示(FFmpeg调用MediaCodec实现硬解码、多线程解码、及音视频解码性能测试)
一.AVFrame 用来存放解码后的数据. [相关函数] AVFrame *frame = av_frame_alloc(); // 空间分配,分配一个空间并初始化. void av_frame_free(AVFrame **frame); // 空间释放.两种释放方式,一种是将引用计数-1, int av_frame_ref(AVFrame *dst, const AVFrame *src); // 引用计数增加1
ffmpeg:编解码过程,基本用法
1 术语: 什么是影片?其实就是一组(很多张)图片,时间间隔很小的连续展示出来,人们就觉得画面中的人物在动,这就是影片.那电影的实质就是N多张图片的集合.那 每张图片和帧又有什么关系呢?事实上,如果一部影片里面的图片,我们原封不动的全部存起来,空间会很大很大很大,但是如果通过一定的算法(这里不讲相关算 法),把每一张图片压缩(编码_encode)一下,变成 帧.再把帧连起来变成流,再把不同的流放到某个容器里面,这就是我们平常看见的电影文件了,文件 碟中谍4.H264.ACC.mkv,他为什么要
视频编解码的理论和实践2:Ffmpeg视频编解码
近几年,视频编解码技术在理论及应用方面都取得了重大的进展,越来越多的人想要了解编解码技术.因此,网易云信研发工程师为大家进行了归纳梳理,从理论及实践两个方面简单介绍视频编解码技术. 相关阅读推荐 <视频直播关键技术:流畅.拥塞和延时追赶> <视频直播技术详解:直播的推流调度> <音视频通话:小议音频处理与压缩技术> <视频编解码的理论和实践1:基础知识介绍> 1.Ffmpeg介绍 <视频编解码的理论和实践1:基础知识介绍>介绍了视频编码的基础
FFmpeg(三) 编解码相关函数理解
一.编解码基本流程 主要流程: 打开视频解码器(音频一样) 软解码.硬解码 进行编解码 下面先来看打开视频解码器 ①avcodec_register_all()//初始化解码 ②先找到解码器. 找解码器(软解码):AVCodec *codec = avcodec_find_decoder(stream.codecparcodec_id); 从AVStream中根据codec_id取出解码器 找解码器(硬解码):AVCodec *codec = avcodec_find_decoder_bynam
FFmpeg纯净版解码 av_parser_parse2
主要是通过av_parser_parse2拿到AVPaket数据,跟av_read_frame类似. 输入必须是只包含视频编码数据“裸流”(例如H.264.HEVC码流文件),而不能是包含封装格式的媒体数据(例如AVI.MKV.MP4). av_parser_init():初始化AVCodecParserContext.其参数是codec_id,所以同时只能解析一种 AVCodecParser用于解析输入的数据流并把它们分成一帧一帧的压缩编码数据.比较形象的说法就是把长长的一段连续的数据“切割”
[转载] 问题解决:FFmpeg视频编解码库,无法解析的外部信号
在编译FFmpeg相关项目时,可能会出现: error LNK2019: 无法解析的外部符号 "int __cdecl avpicture_fill(struct AVPicture *,unsigned char const *,enum AVPixelFormat,int,int)" (?avpicture_fill@@YAHPAUAVPicture@@PBEW4AVPixelFormat@@HH@Z),该符号在函数 "bool __cdecl YV12ToBGR24_F
通过FFmpeg将多媒体文件解码后保存成Bmp图像(YUV420 RGB32)
/* g++ -o test test.cpp -lavformat -lavcodec -lavutil -lz -lm -lpthread -lswscale */ #include <string>#include <cassert>#include <iostream>#include <sstream>//#include <tchar.h> extern "C"{#ifndef INT64_C#define INT
热门专题
ubuntu添加到环境变量
js获取当前终端类型
eplan 源和目标规则
docxtemplater使用自定义模板
生命周期钩子中的 created 和 mounted 的区别
如何关闭AD10联网
pycharm list 删除
springboot jpa 指定主键保存
dnn神经网络的优点
js 替换{}中的字符串
Qwant如何设置中文
aireplay 查看握手包成功
element-ui表格显示html格式
app线上出现bug怎么处理
java 计算两个日期之间有那几个月List<String>
php 生成2唯一值
abbyy finereader 打开excel报错
centos 添加 windows共享文件夹
ubuntu 服务器内 退格键变成了^H
wireshark定义