百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

7个 ffmpeg 实例,个个都不简单,你敢看看吗?

myzbx 2025-01-05 19:00 11 浏览

引言

我们最近持续分享了一系列的关于音视频处理的文章,总是围绕着 ffmpeg 处理工具展开的。这个应用程序所支持的选项品类繁多功能复杂,组装起来威力无比。

今天我们在用7个小例子,让大家重温一些基本的参数用法。

学而时习之,可以为师矣。



开始学习

1 - 有一个视频文件,需要裁剪成三个文件,其中每段30秒。一种最笨的写法,像下面这样。

ffmpeg -ss 00:00:30 -vsync 0 -t 00:00:30 -i input.mp4 -vcodec copy -acodec copy sub_video1.mp4
ffmpeg -ss 00:01:00 -vsync 0 -t 00:00:30 -i input.mp4 -vcodec copy -acodec copy sub_video2.mp4
ffmpeg -ss 00:01:30 -vsync 0 -t 00:00:30 -i input.mp4 -vcodec copy -acodec copy sub_video3.mp4

这样写起来。很低效,有没有觉得如果这个视频文件有100分钟。那么每隔30秒裁剪为一个文件。这个处理文本岂不是要写到手软?

那么,有没有简单的一行搞定的可能呢?答案当然是有的。而且一行能搞定的事情何必写一堆呢?下面就是高效的写法。

ffmpeg -i input.mp4 -c copy -map 0 -segment_time 00:00:30 -f segment output%03d.mp4

ffmpeg都已经准备好一切了,就不要硬生生再造轮子了。


2 - 在视频文件第20 秒位置,提取一张图片。

ffmpeg -i input.mp4 -r 0.1 -t 20 image%3d.jpg


3 - 为视频打上水印,这应该是是很常见的需求了。

本例展示,在视频画面的固定位置,打上文字水印。

ffmpeg -i sub_video3.mp4 -vf drawtext="fontfile=/usr/share/fonts/truetype/ttf-dejavu/DejaVuSerif.ttf:text='Watermark Text':fontsize=20:fontcolor=red:x=100:y=100" with_text3.mp4

简单说一下选项的含义吧,很容易理解,有 CSS 知识的同学应该一点都不陌生。

-vf 是视频过滤器;此处调用 drawtext 进行文本绘制。

  • fontfile:指定字体文件;
  • text:指定水印文字,utf8字符均支持;
  • fontsize:字体大小;
  • fontcolor:字体颜色;
  • x, y :指定文字放置在画面的位置。


4 - 录音,直接从触摸屏/笔记本的麦克风读入,并存储到文件。

首先我们需要获取电脑上的设备列表。

ffmpeg -list_devices true -f dshow -i dummy

接着我们使用直接输出 directed show,仅获取音频信号。

ffmpeg -f dshow -i audio="麦克风阵列 (Realtek High Definition Audio)"  out.mp3

这条指令是在中文版 win10 下测试的,具体您可以根据自己的设备名称填写。


5 - 给视频加上时间戳

如果能给视频文件添加一个时间戳,动态展示播放,会是一种很好的播放体验。思考一下,其实打时间戳,与在画面绘制文本原理其实是一致的。ffmpeg 提供了 timecode 用于展示实时的时间。

ffmpeg -y -i input.mp4 -vf "drawtext=fontcolor=white:fontsize=16:fontfile=/usr/share/fonts/truetype/ttf-dejavu/DejaVuSans.ttf:box=1:boxcolor=black@0.3:x=50:y=20:timecode='00\:01\:00\;02':rate=30000/1001" out.mp4

上面的指令,是从 01:00 位置开始显示时间戳。


6 - 视频打上时间戳,自定义格式。

这是第5条的加强版,使用灵活的自定义时间格式进行 overlay。

ffmpeg -i video.mp4 -vf drawtext="fontfile=/usr/share/fonts/truetype/ttf-dejavu/DejaVuSans.ttf:text='%T %D':x=10: y=10: fontsize=24: fontcolor=black" -vcodec libx264 -preset fast -crf 34 -threads 0 strftime.mp4

在本实例中,我们使用了格式化时间文本输出,同时为了优化CPU处理速度,手动选择了视频编码器 libx264,并且指定自动使用优化的多线程。


7 - 加强难度:耦合多路输入,并配上字幕

输入信号可以有多路,支持字幕需要引入字幕文件。

ffmpeg -i in_video.avi -c:v libx264 -vpre ipod640 -s 480x240 -b 256k -map 0:0 -c:a libfaac -ar 48000 -ab 128k -ac 2 -map 0:1 -i in_subtitles.srt -c:s copy -map 1:2 out_video_with_titles.m4v

写在最后

把上面的指令在机器上运行运行,看看效果吧。相信你会主动创造出更优美完善的音视频的。

Happy coding :_)


我是 @程序员小助手 ,持续分享编程知识,欢迎关注。

相关推荐

Django零基础速成指南:快速打造带用户系统的博客平台

#python##服务器##API##编程##学习#不是所有教程都值得你花时间!这篇实战指南将用5分钟带你解锁Django核心技能,手把手教你从零搭建一个具备用户注册登录、文章管理功能的完整...

iOS 17.0 Bootstrap 1.2.9 半越狱来啦!更新两点

这款Bootstrap半越狱工具终于更新,离上一次更新已相隔很久,现在推出1.2.9版本,主要为内置两点功能进行更新,也是提升半越狱的稳定性。如果你正在使用这款半越狱工具的,建议你更新。注意!...

iOS 16.x Bootstrap 1.2.3 发布,支持运行清理工具

本文主要讲Bootstrap半越狱工具更新相关内容。如果你是iOS16.0至16.6.1和17.0系统的,想体验半越狱的果粉,请继续往下看。--知识点科普--Bootstrap...

SpringBoot整合工作流引擎Acticiti系统,适用于ERP、OA系统

今日推荐:SpringBoot整合工作流引擎Acticiti的源码推荐理由:1、SpringBoot整合工作流引擎Acticiti系统2、实现了三级权限结构3、持久层使用了mybatis框架4、流程包...

SpringCloud自定义Bootstrap配置指南

在SpringCloud中自定义Bootstrap配置需要以下步骤,以确保在应用启动的早期阶段加载自定义配置:1.添加依赖(针对新版本SpringCloud)从SpringCloud2020...

Python使用Dash开发网页应用(三)(python网页开发教程)

PlotlyDash开发Web应用示例一个好的网页设计通常都需要编写css甚至js来定制前端内容,例如非常流行的bootstrap框架。我们既然想使用Dash来搭建web应用,很大的一个原因是不熟悉...

Oxygen XML Editor 27.1 中的新功能

OxygenXMLEditor27.1版是面向内容作者、开发者、合作者和出版商的行业领先工具包的增量版本。在27.1版本中,AIPositronAssistant得到了增强,包括用于...

【LLM-多模态】Mini-Gemini:挖掘多模态视觉语言模型的潜力

一、结论写在前面论文提出了Mini-Gemini,一个精简而强大的多模态VLM框架。Mini-Gemini的本质在于通过战略性框架设计、丰富的数据质量和扩展的功能范围,发掘VLM的潜在能力。其核心是补...

谐云课堂 | 一文详解分布式改造理论与实战

01微服务与分布式什么是分布式?首先,我们对上图提到的部分关键词进行讲解。单体,是指一个进程完成全部的后端处理;水平拆分,是同一个后端多环境部署,他们都处理相同的内容,使用反向代理来均衡负载,这种也叫...

基于Abaqus的手动挡换挡机构可靠性仿真

手动挡,也称手动变速器,英文全称为Manualtransmission,简称MT,即用手拨动换挡操纵总成才能改变变速器内的齿轮啮合位置,改变传动比,从而达到变速的目的。家用轿车主要采用软轴连接的换挡...

【pytorch】目标检测:彻底搞懂YOLOv5详解

YOLOv5是GlennJocher等人研发,它是Ultralytics公司的开源项目。YOLOv5根据参数量分为了n、s、m、l、x五种类型,其参数量依次上升,当然了其效果也是越来越好。从2020...

超实用!50个非常实用的PS快捷键命令大全分享

今天,给大家介绍50个非常实用的快捷键命令大全,大家伙都是设计师,关于软件使用那是越快越好啊。一、常用的热键组合1、图层混合模式快捷键:正常(Shift+Option+N),正片叠底(Shif...

Pohtoshop中深藏不露的小技巧(科目一考试技巧记忆口诀看完必过)

邢帅教育ps教程为大家总结了一些Pohtoshop中深藏不露的小技巧,可以帮助到大家在设计时减少不必要的麻烦,提高工作效率哦~~~1.设置网格线保持像素完美不在1:1分辨率下也能保持像素完美,可以...

Ganglia监控安装总结(监控安装工作总结)

一、ganglia简介:Ganglia是一个跨平台可扩展的,高性能计算系统下的分布式监控系统,如集群和网格。它是基于分层设计,它使用广泛的技术,如XML数据代表,便携数据传输,RRDtool用于数据...

谁说Adobe XD做不出好看的设计?那是你没搞懂这些功能

AdobeXD的美化栏具有将设计视图美化的功能,它能使界面设计和原型设计更漂亮、更吸引眼球。美化栏的7个功能包括竖线布局设计、横线布局设计、重复网格、图形大小和位置设置、响应式调整大小、文字美化以及...