在linux下使用ffmpeg方法

简介: 在linux下使用ffmpeg方法

简介


ffmpeg是专门用于处理音频视频的包,它不属于python内置包,


FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。采用LGPL或GPL许可证。它提供了录制、转换以及流化音视频的完整解决方案。它包含了非常先进的音频/视频编解码库libavcodec,为了保证高可移植性和编解码质量,libavcodec里很多code都是从头开发的。


ffmpeg支持在linux、window、Mac OS等操作系统进行编译运行。


视频文件属性由文件格式和视频编码组成,opencv-python,处理视频,生成的视频。

opencv支持的编码类型有:


参数 说明
cv2.VideoWriter_fourcc(‘I’,‘4’,‘2’,‘0’) YUV类型,文件后缀.avi
cv2.VideoWriter_fourcc(‘P’,‘I’,‘M’,‘I’) MPEG-1类型,文件后缀.avi
cv2.VideoWriter_fourcc(‘T’,‘H’,‘E’,‘O’) Ogg Vorbis类型,文件后缀.ogv
cv2.VideoWriter_fourcc(‘X’,‘V’,‘I’,‘D’) MPEG-4类型,文件后缀.avi
cv2.VideoWriter_fourcc(‘F’,‘L’,‘V’,‘1’) Flash类型,文件后缀.flv


目前各大开放平台,通常都支持视频编码格式为h264的视频,从技术来说,我们深度学习通过opencv生成的视频是无法在平台前端上展示的。因此需要对视频进行转码,由MPEG-4转为h264,


我查阅到的方法,通过openh264库实现或者通过ffmpeg库实现。


FFmpeg包含三个部分:工具软件、供开发者使用的SDK,开源代码,其中工具软件就是我们要用到的


ffmpeg for linux


打开官网下载地址:https://ffmpeg.org/download.html

选择操作系统

3c58a3b66257403fad1e15f5945bfba1.png


下载对应自己linux版本的文件

查看linux系统版本命令


lsb_release -a


56fe809910884acdb640baabfcf44ef1.png

我查阅资料很多说下载后还需要配置环境,我在配置中出现了很多报错的问题,没有解决,

我的方法,可以直接使用这个工具软件实现视频转码,如下图所示,就是提供转码的可执行文件。

在终端输入命令,即可实现h264视频转码


ffmpeg -i sourcePath tagPath
• 1


sourcePath:输入的视频文件路径

tag:输出视频的文件路径

如果想实现python脚本化,也可以通过os库实现,实例代码如下:


def video_transform(self,sourcePath,tagPath):
      cmd ='ffmpeg-5.1.1-amd64-static/ffmpeg -i '+sourcePath+' '+tagPath
      print(">>cmd:\n %s"%(cmd))
      result=os.popen(cmd).read().strip()
      print(">>result:%s"%(result))


如果需要截取时间,输入命令


ffmpeg -ss 00:00:15 -t 00:00:05 -i 输入视频.mp4 -vcodec copy -acodec copy 输出视频.mp4


  • -ss:开始切割时间;
  • -t:结束切割时间;
  • -vcodec copy:强制使用 codec 编解码方式,如果用copy表示原始编解码数据必须被拷贝(转雷神描述),可以简写为 -c:v copy;
  • -acodec copy:同上,可以简写为 -c:a copy
相关文章
|
3月前
|
Ubuntu 物联网 Linux
从零安装一个Linux操作系统几种方法,以Ubuntu18.04为例
一切就绪后,我们就可以安装操作系统了。当系统通过优盘引导起来之后,我们就可以看到跟虚拟机中一样的安装向导了。之后,大家按照虚拟机中的顺序安装即可。 好了,今天主要介绍了Ubuntu Server版操作系统的安装过程,关于如何使用该操作系统,及操作系统更深层的原理,还请关注本号及相关圈子。
|
3月前
|
缓存 监控 Linux
Linux系统清理缓存(buff/cache)的有效方法。
总结而言,在大多数情形下你不必担心Linux中buffer与cache占用过多内存在影响到其他程序运行;因为当程序请求更多内存在没有足够可用资源时,Linux会自行调整其占有量。只有当你明确知道当前环境与需求并希望立即回收这部分资源给即将运行重负载任务之前才考虑上述方法去主动干预。
1572 10
|
3月前
|
Ubuntu Linux 图形学
推广与体验Ubuntu Linux的便捷方法
如果你的朋友或家人对尝试Linux感兴趣,但希望在安装之前先体验一下,你可以分享以下链接给他们:Ubuntu在线导览。通过这个链接,他们可以在任何地方轻松体验Ubuntu,无需安装即可深入了解这个流行的操作系统。
|
3月前
|
XML 缓存 Linux
在Linux环境下解决Visual Studio Code字体显示异常和字体替换方法。
解决Linux下VS Code字体显示异常,需要对Linux字体渲染机制有所理解,并对VS Code的配置选项进行合理设置。替换字体时则要通过系统字体配置或VS Code设置来完成。通过上述方法,可以有效地解决字体显示问题,从而提升代码编辑的视觉体验。
497 0
|
6月前
|
NoSQL Linux 编译器
GDB符号表概念和在Linux下获取符号表的方法
通过掌握这些关于GDB符号表的知识,你可以更好地管理和理解你的程序,希望这些知识可以帮助你更有效地进行调试工作。
309 16
|
4月前
|
网络协议 Ubuntu Linux
Wireguard in Linux的安装方法
本文介绍了如何在Ubuntu和Rocky Linux中安装配置WireGuard,并探讨了配置过程中可能出现的DNS泄露问题及解决方法,包括通过nmtui设置DNS及调整DNS优先级参数。
|
7月前
|
Linux Shell
Linux系统下快速批量创建和删除文件的方法
总的来说,使用shell脚本来批量处理文件是一种非常强大的工具,只要你愿意花时间学习和实践,你会发现它能大大提高你的工作效率。
441 19
|
7月前
|
Ubuntu Linux 网络安全
如何在Linux中更改主机名?修改主机名最新方法
本期教程将指导您如何在Linux系统中更改主机名。主机名是Linux系统的常用功能,用于识别服务器,帮助区分不同服务器,并与网络进程和其他应用程序协同工作。教程涵盖显示当前主机名的方法(通过`hostname`命令),以及在CentOS 7、Debian 9和Ubuntu 16.04及以上版本中更改主机名的步骤(使用`hostnamectl set-hostname`命令)。对于其他Linux版本,可编辑`/etc/hostname`文件实现更改。记得重启相关服务或服务器以使更改生效!
1974 12
|
7月前
|
安全 Linux 网络安全
在Linux(CentOS和AWS)上安装更新的git2的方法并配置github-ssh
经过以上这些步骤,你现在就能在GitHub上顺利往返,如同海洋中的航海者自由驰骋。欢迎你加入码农的世界,享受这编程的乐趣吧!
322 10