首页 > 作文

视频捕捉软件哪个好(视频字幕提取工具使用)

更新时间:2023-04-05 07:23:10 阅读: 评论:0

随着自媒体兴起,许多人会自拍视频或者找视频素材裁剪,配上背景音乐或解说,加上各种特效边框,处理后再生成新的视频文件,发布到各大平台。生成的原始视频文件都很大,我们需要转换格式或者压缩大小,便于上传或者在其他如手机等设备上分享。

ffmpeg 介绍

ffmpeg是一款开源免费的多媒体视频处理工具,功能包括视频采集功能、视频格式转换、视频抓图、给视频加水印等。它提供了录制、转换以及流化音视频的完整解决方案。

ffmpeg项目在开源界的影响力也是数一数二的。几乎你所见到的视频转换软件或播放器中用到的功能或编码/解码都基于ffmpeg。它采用lgpl或gpl许可证,曾今国内某些知名播放器使用ffmpeg源码未声明,被ffmpeg钉在历史的耻辱柱上。

ffmpeg 安装

ffmpeg提供源码,可自行编译。几乎所有发行版linux仓库中已有ffmpeg,可以直接安装。

# debian/ubuntuapt install ff感情基调mpeg# redhat/centos/fedora'yum install ffmpeg或dnf install ffmpeg

ffmpeg官方也提供二进制包:ffmpeg.org/download.html

推荐使用ffmpeg官方static二进制包,无需额外动态库,仅一个可执行文件官网下载后的ffmpeg解压后有三个可执行文件:ffmpeg、ffprobe、ffplay。

ffmpeg 使用

官网下载后的ffmpeg解压后有三个可执行文件:

ffmpeg:音视频文件处理转换ffprobe:读取视频文件信息ffplay:一个简易的播放器

ffmpeg命令:

ffmpeg -i video.wma ./video.mp4

把 video.wma 视频文件转换成 mp4 格式。ffmpeg mp4 格式默认使用h264编码

ffmpeg -i video.wma -c:v libx265 video.mp4

把 video.wma 视频文件转换成 h265 编码的 mp4 格式。

h265比h264编码有更高的压缩率,在低码率下生成的文件更小。
也就是说,相同质量下的h265编码比h264更清晰。相同大小的视频文件,h265编码比h264编码的视频文件体积更小。但是当视频码率到达一定大小时,两者清晰度区别不大。
h264比h265有更好的兼容性,有些手机默认不支持h265编码的视频文件,需要借助软件解码。
视频转换,h265编码比h264编码用时会更长,更消耗cpu资源。

ffmpeg -i video.mp4 -s 考证推荐1280×720 video2.mp4

将视频压缩到1280×720分辨率。

ffmpeg -i video.mp4 -ss 00:00:10 -i video.mp4 -t 00:00:30 -c:v copy -c:a copy cut.mp4

不改变视频和音频的编码截剪视频,保留从视频10秒之后开始30秒,因为音频视频编码指定参数值copy,不会影响视频质量。

使用ss参数一定要在-i之前,如果写在-i之后,ffmpeg会理解为起始点是作用于输出文件。

ffmpeg -i video.mp4 -metadatbad反义词a:s:v rotate=”90″ -c:v copy -c:a copy out.mp4

不改变视频和音频的质量将视频翻转90度。把横屏变竖屏。

ffmpeg -f x11grab -r 30 -i :0.0 -f alsa -i hw:0,0 -acodec aac -vcodec libx264 out.mkv

使用ffmpeg录像,该命令在linux上有效。每秒30帧,音频格式使用 aac,视频格式使用h264,输出mkv格式。

vcodec 与 c:v 参数一样,指定视频编码,如:libx264,libx265
acodec 与 c:a 参数一样,指定音频编码,如:aac,mp4,flac

ffmpeg还有很多其他用法,比如调整码率,帧数等。使用 ffmpeg –help 可以看到全部参数说明。

gpu加速

ffmpeg默认使用cpu编码。执行ffmpeg命令时,资源管理器可以看到cpu使用率升高。

如果使用gpu运算,转换速度能成倍提高,特别是转换h265编码视频。

查看ffmpeg支持视频编码格式:

ffmpeg -codecs

找到 hevc ,也就是h265编码:

hevc_qsv:intel核显hevc_nvenc:nvidia显卡hevc_amf:amd显卡

如果使用h264编码,使高中生家长寄语用 h264_qsv / h264_nvenc 。

ffmpeg -i ./video.mp4 -c:v hevc_qsv ./out.mp4

使用gpu编码,运行以上ffmpeg命令,可以看到gpu占用率升高。

使用gpu加速视频转换速度快了很多,我仅使用核显速度也比cpu转码也能快数倍。

ffprobe命令

ffprobe ./video.mp4

查看视频文件信息。

从输出信息可以看到该视频文件是使用h264编码,分辨率1280×720,视频平均码率921kbps,24帧。视频的音频使用aac编码,采样率44100hz,码率128kpbs。

ffprobe -v error -show_streams -print_format json ./video.mp4

使用json格式输出视频信息。

ffplay命令

ffplay ./video.mp4

播放视频文件。这时会弹出一个播放器。

ffplay命令还有很多控制参数。不过我觉得用处不大,毕竟图形化播放器更好用,功能也更强大。

开发集成

使用ffmpeg命令,我们可以用程序或脚本完成视频自动转换。也可以让我们开发的系统拥有视频转码,或读取视频信息的功能。以java示例:

public static int dowaitfor(process process) {  inputstream in = null;  inputstream err = null;  int exitvalue = -1; // returned to caller when p is finished  try {    in = process.getinputstream();    err = process.geterrorstream();    boolean finished = fal; // t to true when p is finished    while (!finished) {      try {        while (in.available() > 0) {          // print the output of our system call          character c = new character((char) in.read());          system.out.print(c);        }        while (err.available() > 0) {          // print the output of our system call          character c = new character((char) err.read());          system.out.print(c);        }        // ask the process for its exitvalue. if the process        // is not finished, an illegalthreadstateexception        // is thrown. if it is finished, we fall through and        // the variable finished is t to true.        exitvalue = process.exitvalue();        finished = true;      } catch (illegalthreadstateexception e) {        // process is not finished yet;        // sleep a little to save on cpu cycles        thread.currentthread().sleep(500);      }    }  } catch (exception e) {    e.printstacktrace();  } finally {    try {      if (in != null) {        in.clo();      }    } catch (ioexception e) {      e.printstacktrace();短发新娘发型    }    if (err != null) {      try {        err.clo();      } catch (ioexception e) {        e.printstacktrace();      }    }  }  return exitvalue;}

java调用外部命令使用 runtime.getruntime().exec(command) 。
在使用调用ffmpeg命令时,必须要读取执行命令输出流中的内容,程序才不会阻塞。否则缓冲读满后,进程会卡住。
视频转换会非常耗时,取决于硬件性能。在实际应用中,我们也可以开启线程去处理。

ffmpeg还提供c调用,公共库集成。以上方法并不是最优解决方案,仅提供一种参考。

本文发布于:2023-04-05 07:23:08,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/zuowen/54bfe51ea81d6cde4c795ecdf6dbb349.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

本文word下载地址:视频捕捉软件哪个好(视频字幕提取工具使用).doc

本文 PDF 下载地址:视频捕捉软件哪个好(视频字幕提取工具使用).pdf

上一篇:液氩充装
下一篇:返回列表
标签:视频   视频文件   命令   格式
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图