Linux下FFmepg使用

1.命令行录一段wav,PCM数据

ffmpeg -f alsa -i hw:0,0 xxx.wav//录制
ffplay out.wav//播放

ffmpeg -f alsa -i hw:0,0 -ar 16000 -channels 1 -f s16le 1.pcm
ffplay -ar 16000 -channels 1 -f s16le 1.pcm

-ar freq 设置音频采样率

-ac channels 设置通道 缺省为1

2.将pcm压缩为aac

ffmpeg -f s16le -ar 16000 -ac 1 -i s16_1_16000.pcm output.aac

3.将aac转为pcm

ffmpeg -i out.aac -f s16le -ar 16000 -ac 1 -acodec pcm_s16le 16000_1_s16le.pcm
 

4.将aac通过网络传输

5.拉流网络数据

6.录一段原格式视频

7.录一段H264视频

ffmpeg -video_size 1280x720 -f x11grab -i "" -vcodec libx264 -preset ultrafast -f h264 -r 30 test.h264

使用RTP发送H264,接收

ffmpeg -re -i d:\videos80P.264 -vcodec copy -f rtp rtp://127.0.0.1:1234

ffplay -protocol_whitelist "file,udp,rtp" -i rtp://127.0.0.1:1234//拉流并播放

注意:ffplay的RTP协议默认是不启用的,需要添加-protocol_whitelist参数把RTP协议加入白名单。但是,执行了上面的命令可能会出错,因为ffplay使用RTP协议接收需要一个SDP文件,该文件定义了输入流的格式信息以及接收端的IP和端口号。

我们可以让FFmpeg在执行推流输出时导出一个SDP,命令行如下:

ffmpeg -re -i d:\videos80P.264 -vcodec copy -f rtp rtp://127.0.0.1:1234>test_rtp_h264.sdp

(SDP文件的信息说明:传输协议:RTP/AVP, 接收端IP:127.0.0.1,  接收端口号:1234 ,  PayloadType:96 ,视频格式:H264 )

以上面SDP文件为输入让ffplay打开流,命令行是:

ffplay -protocol_whitelist "file,udp,rtp" -i test_rtp_h264.sdp

8.用ffmpeg库录制一段音频数据

语音信号处理-基本概念(二):音频通道数、采样频率、采样位数、采样个数(样本数)、一帧音频的大小、每秒播放的音频字节大小、一帧的播放时长、音频重采样_语音录制采样率和采样率-CSDN博客

在Linux环境下使用ffmpeg将PCM音频数据编码成aac数据_linux ffmpeg pcm转acc-CSDN博客

9.重采样音频

两种重采样方法:

【FFmpeg实战】音频重采样_ffmpeg 音频采样率-CSDN博客

10.编码

11.传输

相关结构体:

AVFormatContext:FFMPEG结构体 - 简书 (jianshu.com)  主要和流的一些信息相关,混合流和文件流

AVDictionary:设置流的参数信息,主要是采集时候

问题:视频常见问题(四):视频花屏和绿屏 - 知乎 (zhihu.com)

视频编码出来一半正常,一半绿屏

我的问题GPT给我解决了,产生问题到解决问题用来不到三分钟,GPT真香

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

002.Java实现两数相加

题意 给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。 请你将两个数相加,并以相同形式返回一个表示两数之和的新链表。 示例 输入:l1[2,4,3],l2[5,6,4] 输出…

【从零开始学习JVM | 第七篇】深入了解 堆回收

前言: Java堆作为内存管理中最核心的一部分,承担着对象实例的存储和管理任务。堆内存的高效使用对于保障程序的性能和稳定性至关重要。因此,深入理解Java堆回收的原理、机制和优化策略,对于Java开发人员具有重要的意义。 本文旨在…

springcloud-分布式缓存

文章目录 一.Redis持久化1.RDB持久化2.AOF持久化 二.Redis主从1.搭建主从架构2.全量同步3.增量同步 三.Redis哨兵1.哨兵的作用和原理2.搭建哨兵架构3.RedisTemplate的哨兵模式 四.Redis分片集群1.搭建分片集群2.散列插槽3.集群伸缩4.故障转移5.RedisTemplate访问分片集群 为什么…

树莓派(Raspberry Pi)4B密码忘记了,怎么办?

树莓派长时间不用,导致密码忘记了,这可咋整? 第1步:取出SD卡 将树莓派关机,移除sd卡,使用读卡器,插入到你的电脑。 第2步:编辑 cmdline.txt 在PC上打开SD卡根目录,启动…

Kotlin ArrayList类型toTypedArray转换Array

Kotlin ArrayList类型toTypedArray转换Array data class Point(val x: Float, val y: Float)fun array_test(points: ArrayList<Array<Point>>) {points.forEachIndexed { idx, ap ->ap.forEach {print("$idx $it ")}println()} }fun main(args: Arra…

2697. 字典序最小回文串

2697. 字典序最小回文串 难度: 简单 来源: 每日一题 2023.12.13 给你一个由 小写英文字母 组成的字符串 s &#xff0c;你可以对其执行一些操作。在一步操作中&#xff0c;你可以用其他小写英文字母 替换 s 中的一个字符。 请你执行 尽可能少的操作 &#xff0c;使 s 变…

RTX 40 SUPER发布时间定了!价格也有了

快科技12月16日消息&#xff0c;NVIDIA RTX 40 SUPER系列显卡基本确定将在2024年1月8日正式发布&#xff0c;也就是CES 2024大展期间&#xff0c;随后在1月中下旬陆续解禁上市。 RTX 4070 SUPER 1月16日解禁公版/原价丐版&#xff0c;1月17日解禁高价高配版&#xff0c;上市开…

鸿蒙开发编辑器设置

首先需要知道如何打开设置页面&#xff0c;以下所有设置都需要在设置界面中进行修改&#xff0c;有三种方式可以打开&#xff0c; 1、编辑器左上角file菜单下的Setting菜单。 2、编辑器右上角的设置按钮 3、按快捷键 ctrlalts 注意不要和其他软件案件重复。 一、设置每次打开…

制作一个简单 的maven plugin

流程 首先&#xff0c; 你需要创建一个Maven项目&#xff0c;推荐用idea 创建项目 会自动配置插件 pom.xml文件中添加以下配置&#xff1a; <project> <!-- 项目的基本信息 --> <groupId>com.example</groupId> <artifactId>my-maven-plugi…

腾讯云服务器优惠活动大全页面_全站搜优惠合集

腾讯云推出优惠全站搜页面 https://curl.qcloud.com/PPrF9NFe 在这个页面可以一键查询所需云服务器、轻量应用服务器、数据库、存储、CDN、网络、安全、大数据等云产品优惠活动大全&#xff0c;活动打开如下图&#xff1a; 腾讯云优惠全站搜 腾讯云优惠全站搜页面 txybk.com/go…

springboot笔记

尚硅谷SpringBoot3零基础教程&#xff0c;springboot入门到实战_哔哩哔哩_bilibili SpringBOOT 只会扫描在主程序下的包!!!!!!!!!!!!写在其他包上面会有问题 //SpringBootApplication(scanBasePackages "com") //也可以自己设置扫描路径 &#xff33;&#xff50…

【Qt开发流程】之UDP

概述 UDP (User Datagram Protocol)是一种简单的传输层协议。与TCP不同&#xff0c;UDP不提供可靠的数据传输和错误检测机制。UDP主要用于那些对实时性要求较高、对数据传输可靠性要求较低的应用&#xff0c;如音频、视频、实时游戏等。 UDP使用无连接的数据报传输模式。在传…

白日门引擎传奇手游架设教程-GM的成长之路

准备工具 服务器一台&#xff08;Windows系统&#xff09;白日门引擎服务端版本一个 前言&#xff1a; 此次教程使用的是版本是一个决战斗罗的一个版本、服务器使用的是驰网科技的游戏高频系列服务器。 教程开始 在我们拿到版本之后、我们需要先把版本解压到服务器D盘的根目录…

Mac安装Typora实现markdown自由

一、什么是markdown Markdown 是一种轻量级标记语言&#xff0c;创始人为约翰格鲁伯&#xff08;John Gruber&#xff09;。 它允许人们使用易读易写的纯文本格式编写文档&#xff0c;然后转换成有效的 XHTML&#xff08;或者HTML&#xff09;文档。这种语言吸收了很多在电子邮…

RocketMQ系统性学习-SpringCloud Alibaba集成RocketMQ以及顺序消费实战

顺序消费实战 顺序消费分为两种&#xff1a; 全局有序&#xff1a;适用于并发度不大&#xff0c;并且对消息要求严格一致性的场景下 通过创建一个 topic&#xff0c;并且该 topic 下只有一个队列&#xff0c;那么生产者向着一个队列中发消息&#xff0c;消费者也在这一个队列中…

Redis-数据结构

参考资料 极客时间Redis&#xff08;亚风&#xff09; Redis数据结构 SDS sds(Simple Dynamic String) 字符串接结构体: struct --attribute_- ((-_packed__)) sdshdr8{uint8_t len&#xff1b;/* buf已保祥的字符串字节数&#xff0c;不包含结束标示*/uint8_t alloc&#…

正式开通运营!“一应黔行”服务网点进驻贵阳地铁3号线

今天下午14:00&#xff0c;贵阳地铁3号线正式进入初期运营。为进一步实现一卡通在贵阳市全区域覆盖&#xff0c;不断提升“一应黔行一卡通”业务办理效率&#xff0c;贵阳市信捷科技有限公司在贵阳地铁3号线明珠大道站、顺海站、皂角井站3个站点设立“一应黔行”服务网点&#…

[Spring ~松耦合的设计神器]`SPI`

Java SPI&#xff08;Service Provider Interface&#xff09;是一种Java的服务提供者接口机制。它允许在运行时动态加载实现服务接口的类。 文章目录 基本概念最简单的实例使用 jar 包通过 spi动态实现接口功能 基本概念 SPI 机制的基本思想是&#xff0c;定义一个服务接口&a…

基于ssm线上学习网站论文

线上学习网站 摘要 随着信息技术在管理上越来越深入而广泛的应用&#xff0c;作为学校以及一些培训机构&#xff0c;都在用信息化战术来部署线上学习以及线上考试&#xff0c;可以与线下的考试有机的结合在一起&#xff0c;实现线上学习网站在技术上已成熟。本文介绍了线上学…

【Android开发-25】Android中多线程编程用法介绍

1&#xff0c;线程基本用法 在Android中&#xff0c;线程的使用主要有两种方法&#xff1a;一种是扩展java.lang.Thread类&#xff0c;另一种是实现Runnable接口。 1.1以下是一个简单的Android线程继承Thread的用法示例&#xff1a; public class MyThread extends Thread {…