linux逐行扫描,FFmpeg怎么区分识别视频是逐行扫描还是隔行扫描

最近遇到要识别隔行扫描的视频加以特殊转码处理的问题。google了一番以后找到两个解决的方式,记录一下。

方法一:使用隔行扫描检查滤镜idet区分隔行扫描和逐行扫描

ffmpeg -filter:v idet \ -frames:v 100 \ -an \ -f rawvideo -y /dev/null \ -i 351.mp4 # Example output (this is not interlaced): # [Parsed_idet_0 @ 0x1bcf720] Single frame detection:TFF:0 BFF:0 Progressive:564 Undetermined:84 # [Parsed_idet_0 @ 0x1bcf720] Multi frame detection:TFF:0 BFF:0 Progressive:623 Undetermined:25 # flags: # -an = discard audio, we don't need it # -f rawvideo = output raw video # -y /dev/null = discard the output # -i ... = the input file to check # -frames:v 100 = extract the first 100 frames # -filter:v idet = insert the "idet" filter, which will output whether it has detected interlaced frames 如果结果中TFF和BFF非常多的话,那就意味着视频是隔行扫描的,如果都是

Progressive的话就是逐行扫描的。

关于TFF、BFF、Progressive三个参数,FFmpeg的帮助文档里有相关的说明(这个正是方法二里面要用到的):

interlaced mode ("P" for "progressive", "T" for top field first, "B" for bottom field first)

TFF:top field first  上场(奇数场)优先

BFF:bottom field first 下场(偶数场)优先

具体可以参考这篇英文文章:

方法二:使用查看视频帧详细信息的showinfo滤镜区分隔行扫描和逐行扫描

ffmpeg -y -i 351.mp4 -vf showinfo -frames:v 2 -f flv /dev/null

[Parsed_showinfo_0 @ 0xf675c0] n:0 pts:0 pts_time:0 pos:324675 fmt:yuv420p sar:1/1 s:1280x720 i:P iskey:1 type:I checksum:A5217CD1 plane_checksum:[308C60A8 4FA1B85C A41363BE]

[Parsed_showinfo_0 @ 0xf675c0] n:1 pts:1200 pts_time:0.04 pos:370498 fmt:yuv420p sar:1/1 s:1280x720 i:P iskey:0 type:B checksum:CF15D48E plane_checksum:[CB69A1EF 637DBF49 5FAF7347]

[Parsed_showinfo_0 @ 0xf675c0] n:2 pts:2400 pts_time:0.08 pos:373819 fmt:yuv420p sar:1/1 s:1280x720 i:P iskey:0 type:B checksum:5974D3B6 plane_checksum:[53AAA123 0C00BF3F 976C7345]

[Parsed_showinfo_0 @ 0xf675c0] n:3 pts:3600 pts_time:0.12 pos:345089 fmt:yuv420p sar:1/1 s:1280x720 i:P iskey:0 type:P checksum:8D43B49A plane_checksum:[FBCBC61A AE12A284 E4DA4BED]

[Parsed_showinfo_0 @ 0xf675c0] n:4 pts:4800 pts_time:0.16 pos:414675 fmt:yuv420p sar:1/1 s:1280x720 i:P iskey:0 type:B checksum:6C5487AC plane_checksum:[22107838 FE5FB347 755C5C1E]

[Parsed_showinfo_0 @ 0xf675c0] n:5 pts:6000 pts_time:0.2 pos:430027 fmt:yuv420p sar:1/1 s:1280x720 i:P iskey:0 type:B checksum:AF33CE8C plane_checksum:[3C499702 6B0DC18A B51375F1]

[Parsed_showinfo_0 @ 0xf675c0] n:6 pts:7200 pts_time:0.24 pos:377169 fmt:yuv420p sar:1/1 s:1280x720 i:P iskey:0 type:P checksum:4606BBA6 plane_checksum:[BF20865F 7FECA5AB 614E8F8D]

这个滤镜会将视频每一帧的详细信息都输出,在做视频详细分析的时候很好用,这里用到的是i参数信息,具体的参数信息可以参考FFmpeg官方文档:

关于i的说明是这样的: ‘i’

interlaced mode ("P" for "progressive", "T" for top field first, "B" for bottom field first)

隔行扫描模式("P"代表逐行,“T”代表上场优先,“B”代表下场优先)

通过提取这个参数的信息即可区分出来视频是隔行还是逐行的。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/354004.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JDBC学习笔记 day1

JDBC的基本概念: JDBC就是java database connectivity,即java数据库连接。 JDBC主要完成的几个任务分别为 与数据库建立一个连接  向数据库发送SQL语句  处理数据库返回的结果JDBC的作用: 将java程序语言编写出来的程序,与数据…

稀疏矩阵的转置c语言程序,程序有问题求大神,稀疏矩阵转置

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼#include #define N 100typedef int DataType;typedef struct{int i,j;DataType v;}TriTupleNode;typedef struct{TriTupleNode data[N];int m,n;int t;}TriTupleTable;void TransMatrix(TriTupleTable *b,TriTupleTable *a);void …

jsf组件不显示_JSF组件库–质量不只是零缺陷

jsf组件不显示自从我上次查看三个主要JSF组件库的质量以来已经有一段时间了。 在2009年12月,我开始比较RichFaces,Primefaces和ICEfaces的整体软件质量 。 从那时起,事情发生了变化,从现在开始,我想重新评估和更新它。…

linux安装mysql(shell一键安装)

1. 相关文件(install_mysql.sh、my.cnf、mysqld相关内容在文中最后面) 2. 将上面的文件上传到linux服务器某一目录下 3.给install_mysql.sh赋执行权限 # chmod x instll_mysql.sj 4. 执行install_mysql.sh # ./install_mysql.sh 5. 验证 6. install_mysq…

c语言编译时检查逻辑错误吗,C语言陷阱与技巧20节,自定义“编译时”assert方法,在代码编译阶段检查“逻辑”错误...

在C语言程序开发中,程序员写代码时应该考虑的“面面俱到”,这样才能写出功能稳定的程序。例如,在实现 open() 函数时,先完成它的功能固然是重要的,但是程序员还需要考虑各种“意外”,比如下面这种情况。假设…

springboot 多个sevice类实现同一接口的调用

参考页面:http://blog.csdn.net/xiao190128/article/details/54890759/;感谢分享 service 是有用的相当于 xml配置中得bean id service 也可以不指定 不指定相当于 bean id com. service.service 就是这个类的全限定名,表示给当前类命名一个别名&a…

影场与属性访问器界面

卡尔迪亚(Carl Dea)最近跟踪了我的一篇名为“ 保存内存”的博客文章! 为属性使用阴影字段 。 在他的博客中,他建议使用一个称为“属性访问器”的接口来消除使用阴影字段所需的大量样板代码。 卡尔还提到他尚未用大量数据测试他的方…

[ZJOI2012]数列

超级水的题还wa了一次 首先很容易发现其实就只有两个值并存 然后 要注意把数组初始化啊。。。可能后面有多余的元素&#xff08;对拍的时候由于从小到大就没跑出错&#xff09; #include <bits/stdc.h> using namespace std; int a[170],b[170],a1[170],a2[170],x1[170],…

在c语言中,可以使用动态内存分配技术定义元素个数可变的数组,C语言复制在线考题1精选.doc...

C语言复制在线考题1精选窗体顶端《C语言程序设计208304》综合测试返回测验列表大项 1 / 2 - 单项选择题60.0/ 70.0 分本大题共35道&#xff0c;每题2分&#xff0c;共计70分&#xff0c;答错、不答均不得分。题目 1 / 552.0/ 2.0 分有字符数组 a[80]和 b[80]&#xff0c;则正确…

信管家源代码c语言,用队列实现按层次创建二叉树的源代码,最好是C语言

满意答案Dcool2016.08.27采纳率&#xff1a;58% 等级&#xff1a;9已帮助&#xff1a;416人队列&#xff1f;&#xff1f;你每输入一个节点将其存入队列中&#xff0c;再输入它的左孩子&#xff0c;它的左孩子也会入队&#xff0c;我们取的时候应先取该节点的左孩子&#xf…

jboss4 java_JBoss核心Java Web服务

jboss4 java这篇博客文章涉及Web服务。 好吧&#xff0c;更确切地说&#xff0c;它处理JBoss上的“普通” java Web服务。 这意味着我们将创建一个没有任何其他框架&#xff08;例如CXF&#xff0c;Axis等&#xff09;的Web服务。 JBoss它自己提供对Web服务的支持。 因此&#…

Java中的注解是如何工作的?

自Java5.0版本引入注解之后&#xff0c;它就成为了Java平台中非常重要的一部分。开发过程中&#xff0c;我们也时常在应用代码中会看到诸如Override&#xff0c;Deprecated这样的注解。这篇文章中&#xff0c;我将向大家讲述到底什么是注解&#xff0c;为什么要引入注解&#x…

android 广告弹出层,安卓广告活动弹窗控件 android-adDialog

软件介绍android-adDialog&#xff0c;一个简单、强大的广告活动弹窗控件。显示一个默认广告弹窗&#xff0c;支持单广告活动、多广告活动&#xff0c;当弹窗显示多广告是默认显示底部小圆圈&#xff0c;当显示单活动时默认不显示底部小圆圈&#xff1b;默认支持弹窗从上&#…

面试技巧

本人是一名95后的老奶奶了&#xff0c;是一名彻头彻尾的程序媛&#xff0c;这是本人的第一篇博客&#xff0c;只是随笔&#xff0c;写写自己的心得而已&#xff0c;写的不好勿喷&#xff01;&#xff01;&#xff01; 学习计算机大概已经四年了&#xff0c;在这期间接触过各种计…

(企业 / 公司项目)如何使用分布式任务调度框架Quartz集成 和 SpringBoot自带的定时任务集成?

SpringBoot自带的定时任务 首先在你的微服务项目中创建一个新的模块&#xff0c;定时调度模块 pom.xml里面关联公共模块common的依赖其他不需要改变 然后启动类别删&#xff0c;启动项目是否报错&#xff0c;写一个简单的测试类访问路径是否成功 package com.jiawa.train.bat…

在Spring中配置多个View解析器

1.简介 在Spring中&#xff0c;提供了View Resolver来使用模型中可用的数据来解析视图&#xff0c;而无需与JSP&#xff0c;Velocity或Thymeleaf等View技术紧密绑定。 Spring可以根据需要轻松灵活地配置一个或多个View Resolver 。 2. Spring MVC应用程序流程 在继续理解多个V…

android 知识体系

转载于:https://www.cnblogs.com/mamamia/p/8567570.html

android webview webp,iOS WebView中使用webp格式图片的方法

webp格式图片webp格式图片是google推出的&#xff0c;相比jpg png有着巨大的优势&#xff0c;同样质量的图片webp格式的图片占用空间更小&#xff0c;在像电商这样图片比较多的App中&#xff0c;使用webp格式图片会很有优势。引言很早之前&#xff0c;我们的项目中就已经采用了…

呵呵!Function构造函数

今天准备吐槽一下Function构造函数。 我们知道&#xff0c;不管是函数声明还是函数表达式都是基于词法作用域的&#xff0c;明白这点在闭包中十分重要&#xff0c;譬如&#xff1a; var aglobal; function foo(){var alocal;return function(){console.log(a);} } foo()(); …

android关机位置定位,Android5.0关机充电动画位置

充电动画位置bootable\bootloader\lk\dev\logo充电动画对应的分辨率&#xff1a;\bootable\bootloader\lk\project\XX.mkBOOT_LOGO : wxga#LOCAL_DIR : $(GET_LOCAL_DIR)TARGET : teft6752_lwt_lMODULES app/mt_boot \dev/lcmMTK_EMMC_SUPPORT yesDEFINES MTK_NEW_COMBO_EMM…