首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

ffmpeg视频播放器相关

将YUV数据转换RGB的操作放在OpenGLES里面,使用GPU提升效率。软解码容易造成容易造成音视频不同步。...硬解码:在解码之前判断是否支持硬解码,如果支持硬解码就直接通过ffmpeg处理视频数据H264 H265等,为其加上头信息,然后硬解码交其OpenGLES渲染。...这里需要计算当前视频的播放时间和当前音频的播放时间来进行比较,然后计算出睡眠时间来让视频不渲染还是延迟渲染,保持音视频尽量同步。...音视频同步相关计算 计算当前视频播放的时间 double clock = 0; if(pFormatCtx->streams[i]->codecpar->codec_type == AVMEDIA_TYPE_VIDEO...注意 这里有一个线程在使用AVFormatContext获取AvPacket,有一个线程在使用AVCodecContext在进行解码,需要为AVFormatContext和AVCodecContext添加锁

5.6K31

使用FFmpeg API获取flv视频时长

哈喽,这一篇记录一个小小的关于FFmpeg使用,借助FFmpeg的API接口获取flv格式视频的时长。...查阅资料后,AVFormatContext中的duration字段可以获取视频时常,于是写出了如下代码: #include #include extern "...发现获取视频时长为0,按照排查问题的一般思路,试试别的格式的文件是否也会有问题。尝试将文件更换为MP4文件,发现可以正常获取时长,如下图: ?...甚是不理解啊,经查阅资料发现,对于flv文件需要首先调用avformat_find_stream_info, 才可正常的获取视频时长,这一过程中,同时还发现另外一种获取视频时常的方式:FFmpeg对于...终于可以成功获取flv格式视频的时长。可以动手去试试了!

3.6K30

FFmpeg 播放器视频渲染优化

前文中,我们已经利用 FFmpeg + OpenGLES + OpenSLES 实现了一个多媒体播放器,本文将在视频渲染方面对播放器进行优化。 ?...视频渲染优化 前文中,我们都是将解码的视频通过 swscale 库转换为 RGBA 格式,然后在送给 OpenGL 渲染,而视频通常的格式是 YUV420P/YUV420SP ,所以大部分情况下都需要...当视频尺寸比较大时,再用 swscale 进行格式转化的话,就会存在性能瓶颈,所以本文将 YUV 到 RGBA 的格式转换放到 shader 里,用 GPU 来实现格式转换,提升渲染效率。 ?...YUV 转 RGB 本文视频渲染优化,实质上是对 OpenGLRender 视频渲染器进行改进,使其支持 YUV420P 、 NV21 以及 NV12 这些常用格式图像的渲染。...判断解码后视频的格式,AVFrame 是解码后的视频

3.1K30

基于 ffmpeg+Webassembly 实现视频提取

的 drawImage 接口提取出当前时刻的视频。...图1 通常遇到这种情况只能将视频上传后由后端解码后提取视频图片,而 Webassembly 的出现为前端完全实现视频截取提供了可能。...于是我们的总体设计思路为:将 ffmpeg编译为 Webassembly 库,然后通过 js 调用相关的接口截取视频,再将截取到的图像信息通过 canvas 绘制出来,如图2。...二、js 模块 1. wasm 内存传递 在提取到视频后,需要通过内存传递的方式将视频的RGB数据传递给js进行绘制图像。...而 ffmpeg 作为一个功能强大的音视频库,提取视频只是其功能的一小部分,后续还有更多 ffmpeg + Webassembly 的应用场景可以去探索。

2.8K31

使用 FFmpeg 与 WebAssembly 实现纯前端视频

下面将结合实际案例,讲解如何使用 FFmpeg 和 WebAssembly 实现前端视频。文章较长,也非常硬核,建议先收藏再慢慢看。...3. wasm + FFfmpeg 实现截取视频 主要看到这篇文章 wasm + FFmpeg 实现前端截取视频功能,直接利用 FFmpeg 提供的 lib  库,用 c 语言写好视频功能,最后通过...,包括获取解码所需信息以生成解码上下文和读取音视频等功能 libavutil:包含一些公共的工具函数的使用库,包括算数运算,字符操作等。...解封装和解码 大部分音视频格式的原始流的数据中,不同类型的流会按时序先后交错在一起,形成多路复用,这样的数据分布,既有利于播放器打开本地文件,读取某一时段的音视频;也有利于网络在线观看视频,从某一刻开始播放视频...,按类型处理,找到视频流: if (packet.stream_index == videoStream) 解码数据包,获取原始的 YUV 格式帧数据, 大多数编码器返回 YUV420 格式的图片,然后使用

3.6K11

使用ffmpeg去除视频水印【ffmpeg

一、使用前提 1.确保已经安装ffmepg工具,在Linux命令行中查看ffmepg的版本 ffmpeg -version 我自己安装的是 ffmpeg version 2.8.15 Copyright...(c) 2000-2018 the FFmpeg developers 2.找一个有水印的视频,可以放在当前命令输入的同级目录进行测试 比如1.MP4,一下是我视频的截图 ?...可以从视频中完整截取一张图片,相关软件比如PR,都有视频截取的工具。下面是PR生成出来的一张图片,这样会更准确些。 当然也可以自己大概的截图,裁剪下,要保证的视频的分辨率对应。 ?...show=0水印位置没有边框,show=1水印位置是一个绿色框覆盖 /usr/bin/ffmpeg 根据各自安装的路径不同,使用不同的路径,也可以是全局命令 ffmpeg 效果图,为了效果明显,我将show...备注:查看ffmpeg命令帮助,man ffmpeg

7.6K30

Android如何获取视频图片

Android获取视频图片第n秒的图片,供大家参考,具体内容如下 这里介绍如何获取视频或者第n秒的图片并保存在本地,直接上代码: import android.graphics.Bitmap;...(new View.OnClickListener() { @Override public void onClick(View v) { getFirstframe(); } }); } //获取视频图片并保存到本地...=null){ Toast.makeText(MainActivity.this, "获取视频缩略图成功", Toast.LENGTH_SHORT).show(); imageView.setImageBitmap...@+id/button" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="获取视频缩略图...如需要获取视频第5秒图片,则把上面代码 Bitmap bitmap = mmr.getFrameAtTime(0); //0表示首图片 修改成 Bitmap bitmap = mmr.getFrameAtTime

1.6K10

基于 FFmpeg 的 Cocos Creator 视频播放器

因为开心鼠项目需要兼容 Android,iOS 和 Web 三端,Android 和 iOS 一起视为移动端,所以解决方案有以下两点: 移动端可使用 FFmpeg 库解码视频流,然后使用 OpenGL...任务详情 4.1 移动端 ffplay 播放音视频 FFmpeg 官方源码,可以编译出三个可执行程序,分别是 ffmpeg, ffplay, ffprobe ,三者作用分别是: ffmpeg 用于音视频视频格式转换...因为播放器逻辑使用 C 和 C++ 编码,所以需要绑定 JS 和 C++ 对象。...由于视频展示,可以理解为图片动画渲染,因此可以直接使用 Cocos Creator 提供的 CCSprite 所用的 builtin-2d-sprite 材质。...但在使用 swscale (已开启 FFmpeg 编译选项 neon 优化)进行颜色编码转换后,就可以发现 swscale 在移动端效率低下,使用小米 Mix 3 设备,1280x720 分辨率的视频

6K30

FFmpeg简易播放器的实现-视频播放

简易播放器的实现-视频播放 2.1 实验平台 实验平台:openSUSE Leap 42.3 FFmpeg版本:4.1 SDL版本:2.0.9 FFmpeg开发环境搭建可参考“FFmpeg开发环境构建...通过av_read_frame()从媒体文件中获取得到的一个packet可能包含多个(整数个)音频单个 视频,或者其他类型的流数据。...从视频文件中读取一个packet // packet可能是视频、音频其他数据,解码器只会解码视频音频,非音视频数据并不会被 // 扔掉、从而能向解码器提供尽可能多的信息 //...定时刷新线程按计算出的帧率发送自定义SDL事件,通知解码主线程 解码主线程收到SDL事件后,获取一个视频解码并显示 3....FFMPEG+SDL的视频播放器ver2(采用SDL2.0) [4] 雷霄骅,最简单的视音频播放示例7:SDL2播放RGB/YUV [5] 使用SDL2.0进行YUV显示 [6] Martin Bohme

4.4K40

【Android FFMPEG 开发】FFMPEG视频同步 ( 音视频同步方案 | 视频 FPS 控制 | H.264 编码 I P B | PTS | 音视频同步 )

FFMPEG 中的时间单位 AVRational time_base IX . FFMPEG 中 H.264 视频编码 X . FFMPEG 视频绘制帧率 FPS XI ....FFMPEG 中的有理数变量保存 : ① 数值损失 : 使用 float double 表示有理数 , 会产生数值损失 , 如 无限循环小数 ; ② AVRational 结构体 : 有理数中有无限循环小数...FFMPEG 时间值 : FFMPEG 中很多地方涉及到时间值 , 如获取视频的理论播放时间 PTS ; 2 ....时间单位获取 : AVStream 结构体中的 time_base 是 FFMPEG 的时间单位 , 可以直接通过 AVStream 获取该时间单位 ; //获取视频 同步校准的 PTS 的 time_base...视频图片完整性分析 : ① I ( I Frame ) : 解压后是一张完整图片 ; ② P ( P Frame ) : 需要参考前面的 I B 编码成一张完整图片 ; ③ B (

2.6K20

FFmpeg获取视频流信息

文章目录 前言 一、需求 二、源码 三、运行结果 前言 本文记录用 FFmpeg 获取视频流+音频流的信息(编码格式、分辨率、帧率、播放时长…),所用的工程基于上个博客编译成功的工程:使用FFmpeg4.3.1...的SDK官方开发包编译ffmpeg.c 一、需求 我们经常需要知道一个媒体文件所包含的媒体流的信息,比如文件格式、播放时长、码率、视音频编码格式,视频分辨率,帧率,音频属性等信息。...如何使用 FFmpeg API 获取这些信息呢?...long_name); printf("audioCodecName = %s\n", avmi->audioCodecName); } } } // 获取视频流的基本信息...avFmtCtx = NULL; // 大管家 if (avmi == NULL || filepath == NULL) { return; } // 1.打开音视频文件网络流

23310

【Android FFMPEG 开发】FFMPEG 获取 AVStream 音视频流 ( AVFormatContext 结构体 | 获取视频流信息 | 获取视频流个数 | 获取视频流 )

FFMPEG视频获取流程 I . FFMPEG 获取视频流信息 ( AVFormatContext 结构体 ) II . FFMPEG 获取视频流 数量 III ....FFMPEG 获取视频流 博客简介 ....FFMPEG视频获取流程 ---- FFMPEG视频流 AVStream ( 结构体 ) 获取流程 : ① 获取视频流信息 : avformat_find_stream_info ( )...使用 AVStream ** 数组下标获取视频流 : ① 获取 AVStream **streams 数组 : 调用 AVFormatContext *formatContext 结构体指针的 “->...” 运算符获取其结构体中的 AVStream **streams 元素值 ; ② 获取 AVStream *stream 音视频流 : 再使用数组下标获取指定索引的 AVStream * 音视频流 ;

65210
领券