需求

1、运营那边需要统计大量视频文件的播放时长,并汇总记录到excel表中,问我有什么方法搞定

这边搜索了很多统计媒体文件时长的,主要有以下几种

1、使用java获取

2、使用python获取

3、使用mediainfo工具获取

由于自己对java刚懂点基础,要琢磨几天才能写出来,而python代码下载的第三方模块运行时总是报错。一时半会无法解决

最终采用mediainfo工具

1、下载和安装mediainfo工具

这边下载使用的mediainfo工具是1.8版本的

 2、简单使用此工具查看一些媒体文件

在安装目录下找到此软件入口(可以发送个快捷方式到桌面,方便以后使用)

可以打开文件或者文件夹

先查看一个电影文件。有一些输出信息

点击下面按钮

可以看到一些定义好的输出格式,选择不同的格式,显示的信息不一样

这里选择树状图,可以看到很多信息

由于这里我只想要文件名和文件的播放时长,因此需要自定义输出信息

选项--参数设置

找到自定义

点击新建,自定义个名字,随便定义

点击OK之后弹出如下

保持第一行内容如下

General           : %FileNameExtension%,%PlayTime/String1%

如下,点击OK保存

保持当前自定义的是自己刚刚写的

点击确定

点击左边的查看方式

查看方式选择自定义

可以看到输出信息如下

可以看到第一行左边是文件名,右边是时间

其它信息是多出来的。我们没配置,但是仍然默认多出来了。目前已经做到输出信息最少了,同时我们需要的都在

如果不想看到毫秒等信息。可以编辑输出的信息把string1改成string2

再次查看自定义信息,就没有秒和毫秒了

经过我测试,如果文件没超过一分钟,会显示为分钟和秒

如果文件超过1小时,会显示小时和分钟。

3、使用mediainfo工具查看一批媒体文件

前提是媒体文件都在此文件夹下

视频文件信息都出来了

如果文件比较多,可能要等一小会才会出现。我曾经统计过800个小视频文件。软件卡了5到10分钟才显示

 4、对文件输出信息进行处理加工

右键--全选

复制到一个文本里

复制到文本文件里

接下来就是对这些信息进行加工了。只保留文件名和时间

方式1

linux命令特别熟的可以选择使用awk以及grep工具处理

grep General med.txt| awk -F ':[ ]' '{print $2}'  |awk -F 'Video' '{print $1}'

  

上面是把信息放在了med.txt文件里的

先根据General过滤出文件名和时间这行,然后根据规律去掉文件名前面的字符串,然后去掉Video以及之后的字符串

方式2

使用windows版本的awk和grep工具

这里下载了awk工具和grep工具,都是windows版本的

这些命令工具都是从gnu网站下载的

http://gnuwin32.sourceforge.net/packages/gawk.htm

http://gnuwin32.sourceforge.net/packages/grep.htm

因为平时也用到了别的工具,自己都统一放在了下面目录下,同时设置了环境变量,这样就可以在任意目录下使用了

很多windows版本的命令

添加工具目录到环境变量里

添加个mypath

内容如下

C:\mytools\core\bin;C:\mytools\curl;C:\mytools\grep\bin;D:\autossh-cygwin;D:\sed-4.2.1-bin\bin;C:\mytools\gawk\bin

然后把mypath假如到系统的path里面

确定之后

进入工具目录下,把mediainfo提取出的信息,保存到med.txt里面

创建个bat文件,里面内容如下

grep General med.txt| awk -F ":[ ]" "{print $2}"  |awk -F "Video" "{print $1}" >2.csv

  

双击运行此bat文件,会出现一个2.csv文件。这就是处理后的文件,使用excel工具打开

这就是我们想要的内容了

使用mediainfo工具统计每个视频文件(媒体文件)播放时长的更多相关文章

  1. video.js不能控制本地视频或者音频播放时长

    问题: 把视频放到本地,然后对视频进行测试,想要控制视频或者音频的播放时长,没办法做到,每次拉动进度条,都会使得本地视频重新播放 原因: 所有浏览器默认js无法访问本地地址,也就是说js不能对本地文件 ...

  2. MediaInfo用来分析视频和音频文件的编码和内容信息的超好用工具

    转载:http://blog.csdn.net/ameyume/article/details/6718705 MediaInfo简介 MediaInfo 用来分析视频和音频文件的编码和内容信息. M ...

  3. python调用mediainfo工具批量提取视频信息

    写了2个脚本,分别是v1版本和v2版本 都是python调用mediainfo工具提取视频元数据信息 v1版本是使用pycharm中测试运行的,指定了视频路径 v2版本是最终交付给运营运行的,会把v2 ...

  4. Django (七) token&静态文件&媒体文件

    token&静态文件&媒体文件 1. token 1. 会话技术 2. 服务端会话技术 3. 它实际上就是手动实现的session 4. 实现token 4.1 在models.py中 ...

  5. C# 获取媒体文件播放时长

    引用: Interop.Shell32.dll 方法: /// <summary> /// 获取媒体文件播放时长 /// </summary> /// <param na ...

  6. Java获取音频文件(MP3)的播放时长

    最近的一个项目需要按照时间播放mp3文件,例如,播放10分钟的不同音乐. 这就意味着我得事先知道mp3文件的播放时长,以决定播放几遍这个文件. 方案一:Java的方式 找第三方的库,真的感谢这些提供j ...

  7. python 获取视频文件的大小,时长等

    举例说明: import os import sys import xlwt from moviepy.editor import VideoFileClip file_dir = u"G: ...

  8. java获取音频文件播放时长

    方法一: 在项目开发过程中,需要获取音视频文件时长.查询资料后发现 JAVE能够完美得到想要的结果,JAVE项目简介如下: The JAVE (Java Audio Video Encoder) li ...

  9. PHP获取视频的第一帧与时长

    //获得视频文件的缩略图 function getVideoCover($file,$time,$name) { if(empty($time))$time = '1';//默认截取第一秒第一帧 $s ...

随机推荐

  1. node.js学习6---第三方依赖(模块或者说是包)的导入 npm 以及 cnpm命令的使用

    npm命令用于导入node.js的第三方包,相当于java中使用maven来导入第三方依赖: 1.npm init -y 命令:在命令窗口中执行后,会出现如下的json文件: 右边记录了安装的第三方包 ...

  2. VMware 物理机可以复制文件到虚拟机,却无法从虚拟机复制文件到物理机(已解决)

    物理机运行,输入gpedit.msc确定,把如图的那个改成“已禁用” 之后虚拟机重新安装VMware Tool重启即可 事情是这样的,每次打开IDM会 “警告:您在以管理员身份运行IDM,在该模式下, ...

  3. Python Opencv安装环境搭建

    https://blog.csdn.net/weifenglin1997/article/details/78723544

  4. image-to-image translation with conditional adversarial networks文献笔记

    Image-to-Image Translation with Conditional Adversarial Networks (基于条件gan的图像转图像) 作者:Phillip Isola, J ...

  5. ef 增加或者更新的习惯思维

    首先申明是我的习惯思维,经常这样写: var item=db.tableName.FirstOrDefault(ii=>....); if(item==null) { item=new ...; ...

  6. linux 增加虚拟内存swap(使用文件)

    1.简介 如果你的服务器的总是报告内存不足,并且时常因为内存不足而引发服务被强制kill的话,在不增加物理内存的情况下,启用swap交换区作为虚拟内存是一个不错的选择. 为了测试一些功能我在阿里云购买 ...

  7. 本地操作功能 --local_action

    Ansible 默认只会对控制机器执行操作,但如果在这个过程中需要在 Ansible 本机执行操作呢?细心的读者可能已经想到了,可以使用 delegate_to( 任务委派 ) 功能呀.没错,是可以使 ...

  8. web移动端类型检测

    移动端检测 插件通用下载: https://www.bootcdn.cn/ 根据一个库 device.js 下载地址 传送 api 传送 和 传送 常用检测类型 device.ipad() 返回一个布 ...

  9. IceGrid 用于Python服务器和客户端通信——参数传递

    本篇介绍如何用IceGrid建立python多机通信,传递比较复杂的参数 Ice代码:Demo.ice #ifndef TOS_ICE_COMMON #define TOS_ICE_COMMON mo ...

  10. oracle mysql 比较

    转载:https://www.cnblogs.com/qq765065332/p/9293029.html 一.数据的存储结构 mysql: 1.对数据的管理可以有很多个用户,登录用户后可以看到该用户 ...