当前位置: 首页 > news >正文

【ffmpeg命令入门】实现画中画

文章目录

  • 前言
      • 画中画是什么
      • 画中画的外观描述
      • 效果展示
      • 为什么要用画中画
      • 应用场景示例
    • 使用FFmpeg添加画中画
      • 示例命令
      • 参数解释
      • 调整嵌入视频的位置
      • 调整嵌入视频的大小
      • 处理音频
  • 总结


前言

FFmpeg 是一款强大的多媒体处理工具,广泛用于音视频的录制、转换和流处理。它不仅可以处理基础的音视频转换,还能实现复杂的视频编辑效果,比如画中画(Picture-in-Picture, PiP)。画中画是一种常见的视频特效,将一个视频嵌入到另一个视频的特定位置,从而同时显示两个视频流。本文将介绍如何使用 FFmpeg 实现画中画效果,帮助你掌握这一强大功能。


画中画是什么

画中画(Picture-in-Picture,PiP)是一种视频特效,它允许在一个主要视频的特定位置显示另一个视频。简单来说,就是在主画面中嵌入一个小窗口,播放第二个视频。这个小窗口可以放置在主画面的任意位置,通常是角落,并且可以调整大小以适应需要。

画中画的外观描述

在实际应用中,画中画效果通常如下所示:

  1. 主视频:占据屏幕的大部分,是观众的主要关注点。
  2. 嵌入视频:一个较小的视频窗口,通常放置在主视频的角落(如右上角、左下角等),播放不同的内容。

例如,在一个新闻播报节目中,主视频是主播的画面,而画中画窗口中可能播放相关的视频片段或现场画面。

效果展示

在这里插入图片描述
在这里插入图片描述

为什么要用画中画

画中画效果有多种用途和优势:

  1. 增强信息传达:通过同时显示两个相关视频,可以更有效地传达信息。例如,主播在解说新闻时,可以在画中画窗口中展示相关视频片段,增强观众的理解和参与感。

  2. 多任务处理:在视频会议或在线教学中,演示者可以在主视频中展示自己或教学内容,同时在画中画窗口中展示演示文稿或其他辅助资料。

  3. 创意效果:在视频编辑和制作中,画中画效果可以用于制作独特的视觉效果,使视频更具创意和吸引力。

  4. 实时监控:在直播或监控视频中,画中画可以用于显示多个摄像头的画面,实现多角度的实时监控。

  5. 广告和宣传:在视频内容中插入广告或宣传片,观众可以在不离开主视频的情况下观看额外的内容,从而提高广告的曝光率和效果。

应用场景示例

  • 新闻节目:主播在主屏幕讲解新闻时,画中画显示相关视频或图片。
  • 体育转播:在播放比赛实况时,画中画可以显示选手的统计数据或其他比赛的精彩瞬间。
  • 游戏直播:主播在主屏幕播放游戏内容,同时画中画显示主播的实时反应和解说。
  • 在线教学:老师在主屏幕讲解课程内容,画中画显示PPT或教学素材。

通过使用画中画效果,创作者可以更灵活地展示多种内容,提升观众的观看体验和信息获取效率。FFmpeg 提供了强大的画中画功能,帮助用户轻松实现这一效果。

使用FFmpeg添加画中画

要使用FFmpeg添加画中画效果,你可以使用overlay滤镜。这个滤镜允许你将一个视频叠加到另一个视频上,从而实现画中画效果。下面是详细步骤和示例命令。

示例命令

假设我们有两个视频文件:

  • 主视频文件:main.mp4
  • 嵌入视频文件:overlay.mp4

要将overlay.mp4作为画中画效果添加到main.mp4,并将其放置在右上角,使用以下命令:

ffmpeg -i main.mp4 -i overlay.mp4 -filter_complex "overlay=W-w-10:10" output.mp4

参数解释

  • -i main.mp4:指定主视频文件。
  • -i overlay.mp4:指定嵌入视频文件。
  • -filter_complex:使用复杂滤镜。
  • "overlay=W-w-10:10":使用overlay滤镜,将overlay.mp4叠加到main.mp4上。W-w-10表示将嵌入视频放在主视频的右上角,10表示距离主视频右边和上边的距离为10像素。
  • output.mp4:输出文件名。

调整嵌入视频的位置

你可以通过改变overlay滤镜参数来调整嵌入视频的位置:

  • 左上角"overlay=10:10"
  • 右上角"overlay=W-w-10:10"
  • 左下角"overlay=10:H-h-10"
  • 右下角"overlay=W-w-10:H-h-10"

WH表示主视频的宽度和高度,wh表示嵌入视频的宽度和高度。

调整嵌入视频的大小

如果你需要调整嵌入视频的大小,可以在叠加前先缩放嵌入视频。使用scale滤镜来调整嵌入视频的大小,然后再进行叠加。例如,将overlay.mp4缩放到宽度为320像素,高度自动调整以保持比例:

ffmpeg -i main.mp4 -i overlay.mp4 -filter_complex "[1:v]scale=320:-1[ovr];[0:v][ovr]overlay=W-w-10:10" output.mp4

在这个命令中:

  • [1:v]scale=320:-1[ovr]:将第二个输入视频(overlay.mp4)缩放到宽度为320像素,高度自动调整。[ovr]是临时标签。
  • [0:v][ovr]overlay=W-w-10:10:将缩放后的嵌入视频叠加到主视频上。

处理音频

如果两个视频都有音频,你可能需要指定音频处理方式。常见的做法是只保留主视频的音频:

ffmpeg -i main.mp4 -i overlay.mp4 -filter_complex "[1:v]scale=320:-1[ovr];[0:v][ovr]overlay=W-w-10:10" -map 0:a -c:a copy output.mp4

在这个命令中,-map 0:a表示只使用第一个输入文件(main.mp4)的音频流,-c:a copy表示音频不重新编码。


总结

通过本文的介绍,你已经了解了如何使用 FFmpeg 实现画中画效果。通过使用复杂滤镜如 overlay,你可以将一个视频嵌入到另一个视频中,从而实现画中画特效。这一功能在制作多媒体演示、视频教程和直播节目时非常有用。掌握 FFmpeg 的画中画技术,不仅提升了你的多媒体处理能力,也为你的创意项目提供了更多可能性。FFmpeg 的强大和灵活性,使其成为音视频处理领域不可或缺的工具,继续探索其更多功能,将为你带来更大的收获。

相关文章:

【ffmpeg命令入门】实现画中画

文章目录 前言画中画是什么画中画的外观描述效果展示为什么要用画中画应用场景示例 使用FFmpeg添加画中画示例命令参数解释调整嵌入视频的位置调整嵌入视频的大小处理音频 总结 前言 FFmpeg 是一款强大的多媒体处理工具,广泛用于音视频的录制、转换和流处理。它不仅…...

基于 LangChain+LangGraph 来实现一个翻译项目

相信大家在看文档的时候,有时会比较苦恼,比如 AI 相关的文档都是外文,中文文档比较少,看起来会比较吃力,有的时候会看不懂,翻译软件又翻得很乱,完全看不了,今天就基于 LangChain 和 …...

javascript 如何将 json 格式数组转为 excel 表格| sheetJS

案例 // https://unpkg.com/xlsx0.18.5/dist/xlsx.full.min.js function exportXlsx(jsonData, fileName , mine null) {const workbook XLSX.utils.book_new();// 将JSON数组转换成工作表const worksheet XLSX.utils.json_to_sheet(jsonData);// 向工作簿添加工作表XLSX.…...

网页制作技术在未来会如何影响人们的生活?

网页制作技术在未来会如何影响人们的生活? 李升伟 网页制作技术在未来可能会从以下几个方面显著影响人们的生活: 1. 工作与学习方式的变革:远程办公和在线教育将更加普及和高效。通过精心制作的网页,人们能够实现更便捷的协作…...

【计算机网络】网络层——IPv4地址(个人笔记)

学习日期:2024.7.24 内容摘要:IPv4地址,分类编址,子网,无分类编址 IPv4地址概述 在TCP/IP体系中,IP地址是一个最基本的概念,IPv4地址就是给因特网上的每一台主机的每一个接口分配一个在全世界…...

c++ 学习笔记之多线程:线程锁,条件变量,唤醒指定线程

基于CAS线程加锁方式 CAS(Compare-And-Swap)和 mutex 都是用于实现线程安全的技术,但它们适用于不同的场景,具有不同的性能和复杂性。下面是对两者的区别和使用场景的详细解释: CAS(Compare-And-Swap&…...

《0基础》学习Python——第二十三讲__网络爬虫/<6>爬取哔哩哔哩视频

一、在B站上爬取一段视频(B站视频有音频和视频两个部分) 1、获取URL 注意:很多平台都有反爬取的机制,B站也不例外 首先按下F12找到第一条复制URL 2、UA伪装,下列图片中(注意代码书写格式) 3、Co…...

第13周 简历职位功能开发与Zookeeper实战

第13周 简历职位功能开发与Zookeeper实战 本章概述1. Mysql8窗口函数over使用1.1 演示表结构与数据1.2 案例1:获取男女总分数1.3 案例2****************************************************************************************本章概述 1. Mysql8窗口函数over使用 参考案例…...

什么是大型语言模型 (LLM)

本章探讨下,人工智能如何彻底改变我们理解和与语言互动的方式 大型语言模型 (LLM) 代表了人工智能的突破,它采用具有广泛参数的神经网络技术进行高级语言处理。 本文探讨了 LLM 的演变、架构、应用和挑战,重点关注其在自然语言处理 (NLP) 领…...

【人工智能】AI时代:探索个人潜能的新视角

文章目录 🍊Al时代的个人发展1 AI的高速发展意味着什么1.1 生产力大幅提升1.2 生产关系的改变1.3 产品范式1.4 产业革命1.5 Al的局限性1.5.1局限一:大模型的幻觉1.5.2 局限二:Token 2 个体如何应对这种改变?2.1 职场人2.2 K12家长2.3 大学生2.4 创业者 …...

pyaudio VAD通过声音音频值分贝大小检测没人说话自动停止录制

效果可能说话声音小可能不被监听到,需要更改QUIET_DB阈值,另外delay_time值是低于阈值多久就可以停止保存当前的语音 import pyaudio import waveimport sys import numpy as npdef record_auto(MIC_INDEX=1):开启麦克风录音,保存至temp/speech_record.wav音频文件音量超过…...

《后端程序猿 · @Value 注释说明》

📢 大家好,我是 【战神刘玉栋】,有10多年的研发经验,致力于前后端技术栈的知识沉淀和传播。 💗 🌻 CSDN入驻不久,希望大家多多支持,后续会继续提升文章质量,绝不滥竽充数…...

【LeetCode】71.简化路径

1. 题目 2. 分析 3. 代码 我写了一版很复杂的代码&#xff1a; class Solution:def simplifyPath(self, path: str) -> str:operator [] # 操作符的栈dir_name [] # 文件名的栈idx 0cur_dir_name ""while(idx < len(path)):if path[idx] /:operator.ap…...

DockerCompose 安装环境

1. Redis version: 3 services:redis:image: redis:6.2.12container_name: redisports:- "6379:6379"environment:TZ: Asia/Shanghaivolumes:# 本地数据目录要先执行 chmod 777 /usr/local/docker/redis/data 赋予读写权限&#xff0c;否则将无法写入数据- /usr/loc…...

学习笔记之JAVA篇(0724)

p 方法 方法声明格式&#xff1a; [修饰符1 修饰符2 ...] 返回值类型 方法名&#xff08;形式参数列表&#xff09;{ java语句;......; } 方法调用方式 普通方法对象.方法名&#xff08;实参列表&#xff09;静态方法类名.方法名&#xff08;实参列表&#xff09; 方法的详…...

【Android】广播机制

【Android】广播机制 前言 广播机制是Android中一种非常重要的通信机制&#xff0c;用于在应用程序之间或应用程序的不同组件之间传递信息。广播可以是系统广播&#xff0c;也可以是自定义广播。广播机制主要包括标准广播和有序广播两种类型。 简介 在Android中&#xff0c…...

【.NET全栈】ASP.NET开发Web应用——ASP.NET数据绑定技术

文章目录 前言一、绑定技术基础1、单值绑定2、重复值绑定 二、数据源控件1、数据绑定的页面生存周期2、SqlDataSource3、使用参数过滤数据4、更新数据和并发处理5、编程执行SqlDataSource命令6、ObjectDataSource控件介绍7、创建业务对象类8、在ObiectDataSource中使用参数9、使…...

MySQL的账户管理

目录 1 密码策略 1.1 查看数据库当前密码策略&#xff1a; 1.2 查看密码设置策略 1.3 密码强度检查等级解释&#xff08;validate_password.policy&#xff09; 2 新建登录账户 3 账户授权 3.1 赋权原则 3.2 常见的用户权限 3.3 查看权限 3.4 赋权语法 4 实例 4.1 示例1&#x…...

FastGPT 源码调试配置

目录 一、添加 launch.json 文件 二、调试 本文简单介绍如何通过 vscode 对 FastGPT 进行调试。 这里假设已经安装 vsocde 和 FastGPT本地部署。 一、添加 launch.json 文件 vscode 打开 FastGPT 项目,点击 调试 -> 显示所有自动调试配置 -> 添加配置 -> Node.j…...

SQL Server数据迁移新纪元:数据库数据泵(Data Pump)使用指南

SQL Server数据迁移新纪元&#xff1a;数据库数据泵&#xff08;Data Pump&#xff09;使用指南 在数据管理的世界里&#xff0c;数据迁移是一个常见且复杂的过程。SQL Server提供了一个强大的工具——数据库数据泵&#xff08;Data Pump&#xff09;&#xff0c;它可以帮助我…...

网络编程(Modbus进阶)

思维导图 Modbus RTU&#xff08;先学一点理论&#xff09; 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议&#xff0c;由 Modicon 公司&#xff08;现施耐德电气&#xff09;于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…...

内存分配函数malloc kmalloc vmalloc

内存分配函数malloc kmalloc vmalloc malloc实现步骤: 1)请求大小调整:首先,malloc 需要调整用户请求的大小,以适应内部数据结构(例如,可能需要存储额外的元数据)。通常,这包括对齐调整,确保分配的内存地址满足特定硬件要求(如对齐到8字节或16字节边界)。 2)空闲…...

转转集团旗下首家二手多品类循环仓店“超级转转”开业

6月9日&#xff0c;国内领先的循环经济企业转转集团旗下首家二手多品类循环仓店“超级转转”正式开业。 转转集团创始人兼CEO黄炜、转转循环时尚发起人朱珠、转转集团COO兼红布林CEO胡伟琨、王府井集团副总裁祝捷等出席了开业剪彩仪式。 据「TMT星球」了解&#xff0c;“超级…...

视频行为标注工具BehaviLabel(源码+使用介绍+Windows.Exe版本)

前言&#xff1a; 最近在做行为检测相关的模型&#xff0c;用的是时空图卷积网络&#xff08;STGCN&#xff09;&#xff0c;但原有kinetic-400数据集数据质量较低&#xff0c;需要进行细粒度的标注&#xff0c;同时粗略搜了下已有开源工具基本都集中于图像分割这块&#xff0c…...

A2A JS SDK 完整教程:快速入门指南

目录 什么是 A2A JS SDK?A2A JS 安装与设置A2A JS 核心概念创建你的第一个 A2A JS 代理A2A JS 服务端开发A2A JS 客户端使用A2A JS 高级特性A2A JS 最佳实践A2A JS 故障排除 什么是 A2A JS SDK? A2A JS SDK 是一个专为 JavaScript/TypeScript 开发者设计的强大库&#xff…...

STM32HAL库USART源代码解析及应用

STM32HAL库USART源代码解析 前言STM32CubeIDE配置串口USART和UART的选择使用模式参数设置GPIO配置DMA配置中断配置硬件流控制使能生成代码解析和使用方法串口初始化__UART_HandleTypeDef结构体浅析HAL库代码实际使用方法使用轮询方式发送使用轮询方式接收使用中断方式发送使用中…...

Web中间件--tomcat学习

Web中间件–tomcat Java虚拟机详解 什么是JAVA虚拟机 Java虚拟机是一个抽象的计算机&#xff0c;它可以执行Java字节码。Java虚拟机是Java平台的一部分&#xff0c;Java平台由Java语言、Java API和Java虚拟机组成。Java虚拟机的主要作用是将Java字节码转换为机器代码&#x…...

android13 app的触摸问题定位分析流程

一、知识点 一般来说,触摸问题都是app层面出问题,我们可以在ViewRootImpl.java添加log的方式定位;如果是touchableRegion的计算问题,就会相对比较麻烦了,需要通过adb shell dumpsys input > input.log指令,且通过打印堆栈的方式,逐步定位问题,并找到修改方案。 问题…...

实战三:开发网页端界面完成黑白视频转为彩色视频

​一、需求描述 设计一个简单的视频上色应用&#xff0c;用户可以通过网页界面上传黑白视频&#xff0c;系统会自动将其转换为彩色视频。整个过程对用户来说非常简单直观&#xff0c;不需要了解技术细节。 效果图 ​二、实现思路 总体思路&#xff1a; 用户通过Gradio界面上…...

Python 训练营打卡 Day 47

注意力热力图可视化 在day 46代码的基础上&#xff0c;对比不同卷积层热力图可视化的结果 import torch import torch.nn as nn import torch.optim as optim from torchvision import datasets, transforms from torch.utils.data import DataLoader import matplotlib.pypl…...