![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
FFmpeg
文章平均质量分 52
JohanMan
这个作者很懒,什么都没留下…
展开
-
FFmpeg 命令集合
因为经常会使用FFmpeg命令对视频做处理,所以在这里记录一下常用的命令ffmpeg -i a.mov -strict -2 -vf crop=1080:1080:0:420 out.mp4其中的 crop=1080:1080:0:420 才裁剪参数,具体含义是 crop=width:height❌y,其中 width 和 height 表示裁剪后的尺寸,x:y 表示裁剪区域的左上角坐标。...原创 2022-02-11 17:24:28 · 1090 阅读 · 0 评论 -
Android FFmpeg音频重采样
自己有个需求,要把采样率为44100的PCM重采样为16000的PCM,经过1天的探索,终于成功了!!网上的资料比较少,找到的都是比较零碎的知识点,只能慢慢摸索,想到这个,还是觉得有团队好,个人学习总是慢一点的,比较曲折,不过也能锻炼个人的学习能力!基本原理进入正题,所谓音频重采样,简单来说,就是在原来的PCM进行插值(低采样率到高采样率)或抽取(高采样率到低采样),但是如果我们只是线性插值...原创 2019-07-24 11:40:25 · 1886 阅读 · 2 评论 -
Android FFmpeg系列——5 音视频同步播放
音视频同步播放是做播放器的难点之一,在博主用到的播放器中,有一款播放器我真的无法忍受,那就是百度云播放器!这里我真的得吐槽一下,卡顿之后,然后视频可以正常播放,但是没有声音,声音竟然没了!!你这么一个大厂,连这点都搞不定?!而且我还提过2次建议(因为实在忍不了,但是又必须得用),也不是出现的概率很低,真搞不明白!!好啦,吐槽完了,回归正题,我们来学习怎么实现音视频用不播放!首先,我们得先了解几个...原创 2018-10-19 10:15:45 · 1817 阅读 · 1 评论 -
Android FFmpeg系列——7 实现快进/快退功能
实现快进、快退功能,其实就是设置视频的播放进度!基本思路如下:暂停 生产(读取帧)和 消费(解码播放);清空队列,包括视频队列和音频队列;调用 av_seek_frame 设置进度;唤醒,继续 生产(读取帧)和 消费(解码播放);思路很简单,我们一步一步实现!暂停 生产(读取帧)和 消费(解码播放)这里,我结合线程锁和条件变量来实现,暂时生产和消费:/** * 生产函数 ...原创 2018-10-31 16:35:24 · 2153 阅读 · 0 评论 -
Android FFmpeg系列——6 Java 获取播放进度
一般播放器都能显示播放进度,这一节来实现这个功能。由于我是在 C 层播放视频的,至于播放到哪里,Java 层是不知道的,所以得利用 C 调用 Java 代码来实现。Java 代码/** * 同步播放音视频 * @param path * @param surface * @param callback */public native void play(String path, S...原创 2018-10-31 14:26:08 · 1227 阅读 · 1 评论 -
Android FFmpeg系列——4 子线程播放音视频
利用工作闲余时间,终于实现在子线程播放音视频!上一接学习了在 C 使用多线程,接着就是利用 C 多线程同时播放音视频(暂时还不同步)。不多说,直接上码。代码// C 层播放器结构体typedef struct _Player { // Env JavaVM *java_vm; // Java 实例 jobject instance; jobject...原创 2018-10-26 16:48:42 · 1675 阅读 · 1 评论 -
Android FFmpeg系列——2 播放音频
音频简介虽然听了很多音频,但其实对音频知之甚少,所以很有必要了解一下音频。Audio,指人耳可以听到的声音频率在20Hz~20kHz之间的声波,称为音频。音频录制播放音频之前,我们得先了解音频是怎么保存的。保存音频,其实也就是录音和制作。模拟时代模拟时代是把原始信号以物理方式录制到磁带上(当然在录音棚里完成了),然后加工、剪接、修改,最后录制到磁带、LP等广大听众可以欣赏的载体上。这一...原创 2018-10-17 11:34:12 · 1240 阅读 · 0 评论 -
Android FFmpeg系列——1 播放视频
由于公司项目原因,现在才得空来学习关于FFmpeg库的使用。前言在使用FFmpeg库的过程中,哎呦,各种心酸!!项目重新创建了N次,调试了N次,终于把视频流播放出来,心里甚是激动呀!环境搭建Android Studio 创建Demo项目,记得把 “Include c++ support” 勾上。这里主要说2点:项目目录结构;文件配置,主要是app模块build.gradle 和 C...原创 2018-10-16 17:54:42 · 6456 阅读 · 7 评论 -
Android FFmpeg系列——3 C多线程使用
在 Android FFmpeg系列——2 播放音频 中,在主线程播放音频会导致ANR,虽然我们可以在 Java 层启动一个线程来播放,由于接下来我们要实现完整播放视频,需要在 C 层达到控制效果,所以我们还是在 C 层启动新线程来播放音频。这一节,我们来学习 C 层多线程的使用。pthreadpthread 是 C 语言实现多线程的库,我们要了解这个库的3个相关函数。pthread_c...原创 2018-10-18 17:39:25 · 1461 阅读 · 0 评论 -
Android FFmpeg 编译.so库
编译了好几天,算是把它搞出来了!!环境准备 博主尝试在win7使用Cygwin编译,按照网上的说法,结果出现各种莫名其妙的错,比如 “找不到\r命令” 之类,大家可以尝试一下,反正我是怕了,所以博主决定在linux下编译。编译环境:Linux(博主是在VMware搭建的Centos环境)这里再做一下笔记,关于在VMware中window和linux文件共享的。(1)安...原创 2018-08-10 16:36:28 · 2689 阅读 · 0 评论