![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
ffmpeg
红色与青色
这个作者很懒,什么都没留下…
展开
-
android 执行ffmpeg命令
最近边搞tensorflow边搞ffmpeg,心好累想在android上执行ffmpeg命令,就开始研究,结果中间公司给任务帮web端搞tensorflow,所以东一下西一下,不过差不多同时完成,也算不错网上资料很多,可是我按他们的来总是一堆错误,不过都跨过去了想在android上执行ffmpeg命令需要一个已经编译过的ffmpeg源码,编译网上资料很多,想了想有空还是写一篇关于编译的原创 2017-10-20 17:45:28 · 1036 阅读 · 0 评论 -
IjkPlayer编译
最近在研究ijkplayer使用很简单dependencies { # required, enough for most devices. compile 'tv.danmaku.ijk.media:ijkplayer-java:0.8.4' compile 'tv.danmaku.ijk.media:ijkplayer-armv7a:0.8.4'原创 2018-01-22 14:57:33 · 319 阅读 · 0 评论 -
android基于ffmpeg的简单视频播发器 目录
最近在研究ffmpeg视频播放器,所以准备写几篇关于ffmpeg和播放器的文章解码都是用ffmpeg,视频播放就靠opengl渲染,音频就用AudioTrackffmpeg基本都是用c++代码来写,所以opengl也用c++来写最开始的思路是开两个线程,一个线程解码音频,一个现场解码视频,由于对ffmpeg不太熟悉,怕一个文件加载两次会比较占内存就考虑用三线程,一个线程解码,一个线程渲原创 2017-11-01 11:22:46 · 234 阅读 · 0 评论 -
android基于ffmpeg的简单视频播发器 跳到指定帧 av_seek_frame()
跳到指定帧,在ffmpeg使用av_seek_frame()进行跳转,这个函数只能跳到关键帧,所以对关键帧时间差距比较大的视频很尴尬,总是不能调到想要的画面还有av_seek_frame中的时间参数,刚开始以为用秒乘以time_base结果不是,而是AVPacket或AVFrame里的pts或dts对应的数,不用很精确,可以用大概值,因为av_seek_frame会跳到关键帧所以可以用两种原创 2017-11-06 15:26:27 · 7685 阅读 · 3 评论 -
android基于ffmpeg的简单视频播发器 时间同步
前面写了视频解码和音频解码,接下来要同步了java代码setContentView(R.layout.activity_main);SurfaceView surfaceView = findViewById(R.id.surface_view);surfaceView.getHolder().addCallback(new SurfaceHolder.Callback() {原创 2017-11-03 16:35:51 · 541 阅读 · 1 评论 -
推荐一个很不错的android开源播放器XLPlayer
这个播放器很强大,结合了android的ndkmediacodec,ffmpeg来实现硬解和软解,而且代码都在项目内不需要进行编译操作,可以更直观的了解播放器的功能操作XLPlayer配置环境时出现一个奇怪的错误,点击错误会跳到这里 static_assert(sizeof(_off_t_compat) == sizeof(long), "_off_t...转载 2017-11-28 13:58:25 · 5316 阅读 · 0 评论 -
android基于ffmpeg的简单视频播发器 音频播放
音频播放没啥好说的,直接复制这篇文章http://www.jianshu.com/p/68cdbee598cd上代码javaprivate void init() { setContentView(R.layout.activity_main); SurfaceView surfaceView = findViewById(R.id.surface_原创 2017-11-03 09:24:32 · 374 阅读 · 0 评论 -
ffmpeg 判断数据格式
用ffmpeg解码时,怎么判断视频是yuv420还是yuv422,查了一下资料知道视频格式类型是在AVPixelFormat内通过AVCodecContext的pix_fmt来进行判断video_codec_ctx= avcodec_alloc_context3(NULL);avcodec_parameters_to_context(video_codec_ctx, video_st原创 2017-11-03 15:48:17 · 1674 阅读 · 0 评论 -
android基于ffmpeg的简单视频播发器 播放视频
视频播放用到opengl,因为ffmpeg是c写的,所以我就用c++写opengl,c不会写把生产的so文件和include文件夹复制到项目的app\libs文件夹CMakeLists.txt文件代码cmake_minimum_required(VERSION 3.4.1)add_library( native-lib SHARED原创 2017-11-02 18:07:25 · 1261 阅读 · 2 评论 -
android基于ffmpeg的简单视频播发器 编译ffmpeg
ffmpeg编译的文章网上很多,很简单,我是windows10系统首先安装mingw:https://sourceforge.net/projects/mingw/files在安装界面选择basic setup,把右边的都勾选,然后点击installation选择apply change进行下载安装配置环境变量,在Path内添加C:\MinGW\binC:\MinGW\msys原创 2017-11-01 14:31:53 · 376 阅读 · 0 评论 -
android基于ffmpeg的简单视频播发器 三线程实现播放器(完)
一个多星期都在研究播放器,从双线程到三线程,它们的关系太复杂了,总是搞不定,而且本人c++水平实在有限,很多东西都不太会用。终于搞好了一个能拿得出手的东东,基本没啥严重的bug了,或者我没发现严重的bug,不过代码还是挺乱的,而且音视频对齐使用的办法也不是很好,以后再慢慢优化,先拿来用一个线程读取AVPacket保存到数组,由另外两个线程做解码和播放,这样就不会出现上一篇博文里一个文件两个线程原创 2017-11-08 18:34:57 · 1829 阅读 · 2 评论 -
android jni基于ffmpeg,opengles,egl的yuv视频播放功能
ffmpeg+opengl,难点就是怎么把数据给opengl渲染其实很简单,只要在GLSurfaceView内创建Surface再传给jni层就能进行渲染了,但这是java层进行渲染,我需要jni进行渲染,所以就放弃GLSurfaceView改用egl开始贴代码java层public class VideoSurfaceView extends SurfaceView implements Sur...原创 2017-08-10 12:33:09 · 2163 阅读 · 8 评论 -
ffmpeg设置超时时间
xl_player里的代码,直接复制过来了,不过项目里的超时时间太短了,就给找出来改一下static int av_format_interrupt_cb(void *data) { xl_play_data *pd = data; if (pd->timeout_start == 0) { pd->timeout_start = xl_clock...原创 2018-03-15 09:48:34 · 4600 阅读 · 0 评论