音视频相关

news2024/11/13 11:17:46

ffmpeg

安装

1. 源码安装 git clone https://git.ffmpeg.org/ffmpeg.git

 2.  配置 编译 安装

./configure --prefix=/usr/local/ffmpeg --enable-debug=3 --enable-shared --disable-static --disable-x86asm --enable-ffplay

make -j`nproc` && make install

Q: 没有ffplay

A:安装 yum install libsdl2-dev -y

yum update
yum install SDL2 SDL2-devel

3.  配置环境变量

Q: 缺少动态库

A: echo "/usr/local/ffmpeg/lib" >> /etc/ld.so.conf  + ldconfig

命令

1. 视频转换为图片

ffmpeg -i test.mkv -r 1 -f image2 pic/image%3d.jpg

  • -i test.mkv:指定输入文件 test.mkv,这是你要从中提取帧的视频文件。

  • -r 1:设置帧率为每秒 1 帧。这意味着 FFmpeg 每秒从视频中提取一帧图像。你可以根据需要调整此参数,例如设置为 2 表示每秒提取两帧。

  • -f image2:指定输出格式为 image2,这是 FFmpeg 用于处理图片序列的格式。

  • pic/image%3d.jpg:指定输出图片的文件路径和命名模式。%3d 表示使用三位数字的文件名(例如 image001.jpgimage002.jpg 等)。pic/ 是输出图片的存放目录。

2. 将图片按顺序合并成视频

ffmpeg -r 25 -f image2 -i pic/image%3d.jpg -vcodec libx264 -s 1920x1080 -g 1 -keyint_min 1 -sc_threshold 0 -pix_fmt yuv420p output.mp4

  • -r 25:指定视频的帧率为每秒 25 帧。这意味着每秒钟将显示 25 张图片。
  • -f image2:指定输入格式为图片序列。image2 是 FFmpeg 处理图片序列的格式。
  • -i pic/image%3d.jpg:指定输入图片文件的路径和命名模式。%3d 表示使用三位数字的文件名(例如,image001.jpgimage002.jpg 等)。
  • -vcodec libx264:指定使用 H.264 编解码器进行视频编码。
  • -s 1920x1080:设置输出视频的分辨率为 1920x1080。
  • -g 1:设置 GOP(Group of Pictures)大小为 1。这表示每一帧都是关键帧,适合于某些特定应用场景(如视频流的实时预览),但可能会导致更大的文件大小。
  • -keyint_min 1:指定最小关键帧间隔为 1 帧。配合 -g 1 使用,确保每一帧都是关键帧。
  • -sc_threshold 0:设置场景变化阈值为 0。场景变化阈值为 0 表示无论是否检测到场景变化,FFmpeg 都会尝试在每一帧设置关键帧。
  • -pix_fmt yuv420p:指定像素格式为 YUV 4:2:0。这是常见的视频像素格式,兼容性良好。

3. 捕获摄像头

ffmpeg -list_devices true -f dshow -i dummy

  • -list_devices true:此选项用于指示 FFmpeg 列出所有可用的设备,而不是实际捕获或处理媒体流。
  • -f dshow:指定输入格式为 DirectShow。DirectShow 是 Windows 平台上的多媒体框架,用于捕获和处理音视频数据。
  • -i dummy:提供一个虚拟的输入文件名 dummy。这个参数的目的是为了满足 FFmpeg 的输入要求,但实际上并不使用这个虚拟输入。

ffmpeg -f dshow -i video="Camera 1" -t 10 output.mp4

"Camera 1" 是你从 -list_devices 命令中获得的视频设备名称,-t 10 表示录制 10 秒钟的视频。

4. 捕获桌面,推流到流媒体服务器

ffmpeg -f gdigrab -framerate 30 -i desktop -f rtsp rtsp://192.168.0.103/live/streamkey

  • -f gdigrab:指定输入格式为 gdigrab。这是 Windows 上用于捕获桌面内容的输入格式。如果你使用的是其他操作系统,可能需要使用不同的输入格式。

  • -framerate 30:设置捕获的帧率为 30 帧每秒。你可以根据需要调整这个值,通常 30 帧每秒是比较常见的选择。

  • -i desktop:指定输入来源为桌面。这告诉 FFmpeg 从整个桌面捕获视频。

  • -f flv:指定输出格式为 FLV,这是一种常用于视频流的格式。许多流媒体服务器和平台(如 YouTube、Twitch)都支持这种格式。

  • rtmp://your.streaming.server/live/streamkey:指定流媒体服务器的 URL 和流密钥。你需要将其替换为你的实际服务器地址和流密钥。例如,对于 YouTube,你可以在 YouTube 的直播设置中找到这个信息。

使用ffplay拉流

ffplay -i rtsp://192.168.0.103/live/streamkey

ffmpeg -i rtsp://your.rtsp.server/live/stream -c copy output.mp4

ffmpeg -i rtsp://your.rtsp.server/live/stream -c:v libx264 -c:a aac output.mp4

ffmpeg -rtsp_transport tcp -i rtsp://your.rtsp.server/live/stream -c copy output.mp4

  • -i rtsp://your.rtsp.server/live/stream:指定 RTSP 服务器的 URL 作为输入源。
  • -c copy:直接拷贝视频和音频流,而不进行转码,这样可以保持原始质量并提高处理速度。
  • output.mp4:保存拉取到的流的文件名和格式。在这里是 MP4 格式,你可以根据需要更改文件名和格式。
  • 如果你需要将流转码为不同的格式或编码,你可以使用 -c:v 和 -c:a 参数
  • 用 -rtsp_transport tcp 强制使用 TCP 传输协议,这可以改善在不稳定网络条件下的流稳定性

5. 

RTSP

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

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

相关文章

C++ 基础学习

提示并输入一个字符串&#xff0c;统计该字符串中字母个数、数字个数、空格个数、其他字符的个数 #include <iostream>using namespace std;int main() {cout<<"请输入字符串:";string str;getline(cin,str);int num0;int alp0;int spa0;int other0;int …

大语言模型-GPT3-Language Models are Few-Shot Learners

一、背景信息&#xff1a; GPT3是于2020 年由OpenAI 发布的预训练语言模型。 GPT3在自然语言处理&#xff08;NLP&#xff09;任务中表现出色&#xff0c;可以生成连贯的文本、回答问题、进行对话等。 GPT3的网络架构继续沿用GPT1、GPT2的是多层Transformer Decoder改的结构。…

论文笔记:GEO-BLEU: Similarity Measure for Geospatial Sequences

22 sigspatial 1 intro 提出了一种空间轨迹相似性度量的方法比较了两种传统相似度度量的不足 DTW 基本特征是它完全对齐序列以进行测量&#xff0c;而不考虑它们之间共享的局部特征这适用于完全对齐的序列&#xff0c;但不适用于逐步对齐没有太多意义的序列BLEU 适用于不完全…

MVSEP-MDX23容器构建详细教程

一、介绍 模型GitHub网址&#xff1a;MVSEP-MDX23-music-separation-model/README.md 在 main ZFTurbo/MVSEP-MDX23-音乐分离模型 GitHub 上 在音视频领域&#xff0c;把已经发布的混音歌曲或者音频文件逆向分离一直是世界性的课题。音波混合的物理特性导致在没有原始工程文件…

股指期货的交易规则有哪些?

股指期货作为一种金融衍生品&#xff0c;其合约条款和交易规则是投资者必须了解的重要内容。以下是关于股指期货合约条款及交易规则的详细解释&#xff1a; 一、合约乘数 沪深300指数期货合约的乘数为每点人民币300元。 中证500股指期货合约的乘数为每点200元。 上证50股指…

【iOS】Masonry学习

Masonry学习 前言NSLayoutConstraintMasonry学习mas_equalTo和equalToMasonry的优先级Masorny的其他写法 Masonry的使用练习 前言 Masonry是一个轻量级的布局框架。通过链式调用的方式来描述布局&#xff0c;是排版代码更加简洁易读。masonry支持iOS和Mac OS X。相比原生的NSL…

浅谈【数据结构】图-最短路径问题

目录 1、最短路径问题 2、迪杰斯特拉算法 3、算法的步骤 谢谢帅气美丽且优秀的你看完我的文章还要点赞、收藏加关注 没错&#xff0c;说的就是你&#xff0c;不用再怀疑&#xff01;&#xff01;&#xff01; 希望我的文章内容能对你有帮助&#xff0c;一起努力吧&#xff0…

足球数据分析管理系统(JSP+java+springmvc+mysql+MyBatis)

项目文件图 项目介绍 随着足球运动的专业化和商业化程度不断提高&#xff0c;对运动员的表现进行分析和管理变得越来越重要。一个高效的足球运动员数据管理系统可以帮助教练团队、球探和俱乐部管理层全面了解每位运动员的训练情况、比赛表现、身体状态和其他关键指标。这样的系…

Leetcode JAVA刷刷站(99)恢复二叉搜索树

一、题目概述 二、思路方向 要解决这个问题&#xff0c;我们可以采用中序遍历二叉搜索树&#xff08;BST&#xff09;的方法&#xff0c;因为中序遍历BST会返回一个有序的数组。由于只有两个节点被错误地交换了&#xff0c;所以中序遍历的结果中将有两个位置上的元素是逆序的。…

AD7606芯片驱动-FPGA实现

简介 AD7606是一款16位ADC芯片&#xff0c;可实现8通道并行采集&#xff0c;每通道最大速度可达1M&#xff0c;可实现多种模式数据采集。 介绍 本次FPGA使用的是8通道串行采样模式&#xff0c;设计中所用到的AD7606引脚说明如下&#xff1a; 名称定义CONVST同步采集转换开始信…

并发服务器开发基础

一、服务器模型 1. 单循环服务器&#xff1a; 单循环服务器在同一时刻只能处理一个客户端的请求。由于其结构简单&#xff0c;适合低负载的场景&#xff0c;但在并发请求增加时可能导致性能问题。 2. 并发服务器模型&#xff1a; 并发服务器可以同时响应多个客户端…

openzgy编译和测试应用

zgy是仅次于segy重要的地震数据格式,最早在petrel软件中使用,目前已基本成为行业标准,具有更快的数据存储效率。openzgy是其开源版本。 ZGY文件格式由Schlumberger公司开发,用于存储地震解释的三维数据。OpenZGY库提供了读写该格式的能力。存在C++和Python两种版本。对于P…

web应用程序之服务器部署

当一个web应用层序开发好后&#xff0c;无论你是用什么语言&#xff0c;最后都要考虑部署到服务器上测试使用&#xff0c;这里就常见的服务器上部署进行如下的摸索总结。WSGI&#xff08;Web Server Gateway Interface&#xff09;&#xff0c;翻译为Python web服务器网关接口&…

【与C++的邂逅】--- 模板初阶

Welcome to 9ilks Code World (๑•́ ₃ •̀๑) 个人主页: 9ilk (๑•́ ₃ •̀๑) 文章专栏&#xff1a; 与C的邂逅 本篇博客我们将了解C中泛型编程体现的一大利器 --- 模板&#xff0c;有了模板可以帮我们用户省力。 &#x1f3e0; 泛型编程 如何实现一个通…

二叉树的三个简单题

1、二叉树的第k个结点 思路解析 由题可知这是一棵二叉搜索树 它或者是一棵空树&#xff0c;或者是具有下列性质的二叉树&#xff1a; 1. 若它的左子树不空&#xff0c;则左子树上所有结点的值均小于它的根结点的值&#xff1b; 2. 若它的右子树不空&#xff0c;则右子树…

LSTM唐诗生成

LSTM唐诗生成 1课程简介1-2递归神经网络RNN1-3RNN网络细节1-4LSTM网络架构2-1处理Minist数据集2-2RNN网络模型及训练3-1任务概述与环境配置3-2参数配置3-3数据预处理模块3-4batch数据制作3-5RNN模型定义3-8测试唐诗生成效果 1课程简介 使用深度网络模型 写首歌 写个剧本等 原…

openshift node NotReady kubelet http: TLS handshake error

文章目录 问题现象解决方法 问题现象 openshift 集群 node 节点 notready $ oc get node NAME STATUS ROLES AGE VERSION master1.ocp4.demo.com Ready control-plane,master 4d14h v1.29.76abe8a1 master2.ocp4…

折腾 Quickwit,Rust 编写的分布式搜索引擎-官方教程

快速上手 在本快速入门指南中&#xff0c;我们将安装 Quickwit&#xff0c;创建一个索引&#xff0c;添加文档&#xff0c;最后执行搜索查询。本指南中使用的所有 Quickwit 命令都在 CLI 参考文档 中进行了记录。 https://quickwit.io/docs/main-branch/reference/cli 使用 Qui…

光庭信息半年报:营收利润「双」下降,汽车软件业务竞争加剧

「软件定义汽车」概念&#xff0c;不可否认强化了软件在整车价值的权重、带动更多供应商争夺软件业务的同时&#xff0c;也同样埋下了不小的风险。 比如&#xff0c;在汽车行业&#xff0c;常见的软件业务有两种&#xff1a;1、软件许可/IP&#xff0c;这类产品服务主要集中于…

MacOS 本地打开android模拟器

MacOS 本地打开android模拟器 查看本地安卓模拟器&#xff1a;emulator -list-avds 注意&#x1f4e2;&#xff1a;这里会提示你找不到 emulator 命令&#xff0c;此时我们需要进入 cd ~/Library/Android/sdk/tools/ 查看模拟器列表&#xff1a;./emulator -list-avds 启动…