前言

在以命令方式调用 FFmpeg 的时候,可能会执行一些比较耗时的任务,这时如果没有进度展示,用户可能会以为程序崩溃了,体验十分不好.能不能在以命令方式调用 FFmpeg 时实时获取执行进度呢?谷歌关键词 “Android FFmpeg 命令” 可以得到很多教程,但加上关键词 “进度”就没有相关文章了,看来以命令方式调用 FFmpeg 实时获取执行进度这个需求没有前人的肩膀可站,要开动自己的小脑筋了。

首先来分析一下,以命令方式调用就是把一条命令交给 FFmpeg 执行,具体就是 ffmpeg.c 的 main 函数,待 main 函数执行完毕才会返回,执行过程相当于一个黑盒,执行进度显然是无法获取的.网上也没有相关文章,难道只有以函数方式调用 FFmpeg 才能获取到执行进度吗?当我快要下这样的定论时,看到了 FFmpeg 的 log 信息:

这是在执行混合音频命令时 FFmpeg 的日志输出,其中的 time 信息表示当前已合成的音频时长,这不就是进度信息吗!下面就针对混合音频命令获取实时执行进度.要做的就是提取日志中的进度信息,传递给 Android 层,首先回顾一下这些日志信息是怎样输出到 logcat 的,在Android 集成 FFmpeg(二) 以命令方式调用中有详细说明,这里只关注关键方法 log_callback_null ,位于 ffmpeg.c 中:

static void log_callback_null(void *ptr, int level, const char *fmt, va_list vl){ static int print_prefix = 1; static int count; static char prev[1024]; char line[1024]; static int is_atty; av_log_format_line(ptr, level, fmt, vl, line, sizeof(line), &print_prefix); strcpy(prev, line); if (level <= AV_LOG_WARNING){ XLOGE("%s

android 获取录音时长_Android中集成FFmpeg ③执行进度相关推荐

  1. android 获取录音时长_录音转文字,支持安卓和IOS和PC

    在生活过过程中,我们需要用笔去记录一些比较重要的会议记录,但是在这个过程中我们肯定会遗漏一些关键的要点 还有电话录音的时候我们需要做案例分析的时候,如果反反复复去听感觉大脑没有那么容易反应过来,对于分 ...

  2. iOS 录音,获取录音时长及格式转换

    转载请注明出处!!! 在APP中,我们也会遇到调用录音的功能,那么如何录音呢?并且在iOS中录音格式是wav或者caf格式的,和安卓不通用,为了达到通用的效果,我们还需要把他转换成通用格式.近期我遇到 ...

  3. java ffmpeg 获取视频时长_Java通过调用FFMPEG获取视频时长

    FFmpeg是一套可以用来记录.转换数字音频.视频,并能将其转化为流的开源计算机程序.采用LGPL或GPL许可证.它提供了录制.转换以及流化音视频的完整解决方案.它包含了非常先进的音频/视频编解码库l ...

  4. php 判断视频时长,php 获取视频时长

    利用ffmpeg只能获取到本地视频的信息. function video_time($file) { ob_start(); passthru(sprintf(FFMPEG_PATH, $file)) ...

  5. android获取小程序音频时长,最新微信小程序获取音频时长与实时获取播放进度...

    #微信小程序获取音频时长与实时获取播放进度 在小程序官方文档中 audio 注意:1.6.0 版本开始,该组件不再维护.建议使用能力更强的 wx.createInnerAudioContext 接口 ...

  6. android根据音乐路径获取音乐时长,采样率等

    android根据音乐路径获取音乐时长,采样率等 git路径为:https://github.com/zhangliangming/HPAudio Gradle 1.root build.gradle ...

  7. android 获取控件在屏幕中的坐标

    今天,简单讲讲android如何获取控件在屏幕中的坐标. 这个其实也很简单,但是昨天做一个功能时,需要功能控件的坐标做一些逻辑操作时,居然不知道怎么做.所以在网上查找了资料后,解决了这个问题.这里记录 ...

  8. 最新微信小程序获取音频时长与实时获取播放进度

    #微信小程序获取音频时长与实时获取播放进度 在小程序官方文档中 audio 注意:1.6.0 版本开始,该组件不再维护.建议使用能力更强的 wx.createInnerAudioContext 接口 ...

  9. java获得U盘根目录、读取图片视频头文件信息、获取视频时长

    1.获得U盘根目录,例如我们取名U盘名称为"测试U盘",一般插入U盘后,在系统的H盘 /** * 得到系统U盘根目录 */ public String findURootPath( ...

  10. java获取视频时长(实测可行)

    因为数据库视频表有一段时间丢失维护duration字段, 现在有需求需要用到此字段,只能再重新获取一遍, 更新表.哎!!! 先奉上 https://github.com/opensourceteams ...

最新文章

  1. 面试处处碰壁,程序员“升值”好难呀!
  2. mongodb关联查询 和spring data mongodb
  3. 【分析总结】ASP.NET中的状态管理原理
  4. 推荐算法-聚类-K-MEANS
  5. Linux输入法的几点补充
  6. win10打字突然变成繁体
  7. 看看大货车到底有多少盲区,肯定用得到!救命的!
  8. 模仿$.Callbacks实现
  9. 程序设计流程图、项目管理流程图模板分享
  10. Layui laypage分页
  11. html播放m3u8格式转换,使用HTML视频标签播放m3u8文件
  12. 互联网日报 | 贾跃亭宣布破产重组完成;小米发布首款OLED电视;湖南迎来首家本土航空公司...
  13. 部分移动卡 无人接听时呼叫转移失败 问题分析
  14. Relative Ranks问题的两种实现
  15. Jmeter源码分析(二)
  16. 创客学院知识巩固-03IO进程
  17. Spring 注解 http://qzone.qq.com/blog/55357655-1232078233
  18. 如何用python破解热点_Python程序员:没有我蹭不成功的网。教你如何愉快的蹭到WIFI?...
  19. 使用Navicat 连接linux系统中的mysql
  20. 实现微信小程序编译和运行环境系列(初始篇)

热门文章

  1. ping命令两种返回信息的区别
  2. kafka传递文件_是否可以使用Kafka传输文件?
  3. 学习笔记--数据结构与算法基础(青岛大学-王卓)--第八章排序
  4. 微信支付 ---- (微信退款,提示return_msg=证书已过期, return_code=FAIL)
  5. 刚接触mybatis,很容易分不清#{id}和#{param1}的使用情况,本篇文章详解了两者的作用以及使用情况
  6. mysql教程手机版_MySQL 入门教程
  7. gamma分布_深度学习需要掌握的 13 个概率分布(含代码)
  8. python函数作用的描述_python基础之函数内容介绍
  9. webpack的详细使用
  10. 从头开发一个Flutter插件(一)开发流程