![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
音视频处理
文章平均质量分 60
破浪征程
我走过山时,山不说话
我路过海时,海不说话
小毛驴滴滴答答
倚天剑伴我走天涯。
大家都说我因为爱着杨过大侠
才在峨嵋山上出了家
其实我只是爱上了峨嵋山上的云和霞
像极了十六岁那年的烟花
展开
-
使用FFmpeg实现精确剪切视频
基本的剪切命令:用-ss和-t选项, 从第 30 秒开始,向后截取 10 秒的视频,并保存: ffmpeg -i input.wmv -ss 00:00:30.0 -c copy -t 00:00:10.0-codec copy output.wmv ffmpeg -i input.wmv -ss 30 -c copy -t 10 -codec copy output.wmv 达成相同效果,也可以用-ss和-to选项,ffmpeg -i input.wm...原创 2020-06-03 18:01:43 · 20484 阅读 · 7 评论 -
语音助手开发小记(2023.9.25)
在使用函数swr_alloc_set_opts给SwrContext传递输入输出的音频参数时,需要设置通道,这里通道为2,但是通道布局不能传递2.比如。如果要计算通道布局的通道数使用函数av_get_channel_layout_nb_channels。声道map定义在 libavutil/channel_layout.c文件中。原创 2023-09-25 19:44:54 · 460 阅读 · 0 评论 -
使用FFMPEG进行音频重采样
7.将输出的buffer拷贝到SDL2音频回调缓冲区中播放,或者直接写入文件,使用ffplay进行测试,也可以封装成Frame送到音频编码器中(如aac),进行编码后保存。4.创建一个输出buffer, 根据输出的音频参数(采样率,通道数,样本位深度)申请空间,填入默认数据,用于存储重采样后的数据。3.创建一个输入buffer, 根据输入的音频参数(采样率,通道数,样本位深度)申请空间,填入默认数据,用于存储输入音频数据。5.读取PCM数据,每次读取的大小等于输入buffer的大小。原创 2023-05-20 12:19:35 · 1517 阅读 · 0 评论 -
使用FFMPEG加载外挂或内封字幕小记
ffmpeg -i .\beautlWorld.mp4 -vf subtitles=filename="'D\:\\测试工程\\sound\\01.ass'" -y ass.mp4。加载字幕需要使用subtitles过滤器。注意我用了双引号和单引号。如果字幕文件就在当前目录,则使用如下命令即可。加载外挂字幕很简单,设置下过滤器参数中的filename即可。内嵌字幕,字幕与视频图像合二为一,成为视频帧的一部分。内封字幕,字幕封装在视频容器中,成为字幕流。外挂字幕,也就字幕文件,如ass,srt等。原创 2023-05-14 14:05:09 · 2151 阅读 · 0 评论 -
使用FFMPEG和SDL2实现音视频同步的简易视频播放器
这里我简单做了一个视频播放器,并简单做了音视频同步。1.如果当前视频帧与音频帧的播放时间差值小于或等于视频帧持续时间,则表示音视频同步,正常延时。2.如果视频帧比音频帧快,且大于视频帧一帧的时长,延时2倍的正常延时。3.如果视频帧比音频帧慢,且大于视频帧一帧的时长,则立即播放下一帧。4.创建解复用线程,音频解码播放线程,视频解码播放线程。6.根据音频帧和视频帧的差值计算延时。2.将取到的数据送至视频解码器中。5.计算视频帧的pts和持续时间。3.循环从解码器中取解码音频帧。3.循环从解码器中取解码视频帧。原创 2023-05-12 17:22:13 · 1692 阅读 · 4 评论 -
FFMPEG 关于smaple_fmts的理解及ffplay播放PCM
根据位深度,是否有符号,打包类型,定义了12种类型,AV_SAMPLE_FMT_NONE表示未知类型,最后的AV_SAMPLE_FMT_NB表示样本格式个数为12个。当我将一个aac的音频文件解码为原始的PCM数据后,使用ffplay播放测试是否成功时,需要提供给ffplay 采样率,通道数,PCM的格式类型 3个参数,否则无法播放!好了我们已经知道fltp表示的是float 32位数据,我们再结合前面的PCM的格式数据,在根据我们的电脑的大小端类型知道,我们需要传递的参数是。具体对照表如下,定义在。原创 2023-04-17 17:38:31 · 880 阅读 · 0 评论 -
FFMPEG 常用命令整理
如果关键帧间隔大于2秒,则拆分的视频也会大于2秒,可以每2秒插入一个关键帧(会增加文件大小)后再执行拆分。使用CAVLC(熵编码的一种,相较于CABAC更快,当然视频会更大)编码视频。主要用于测试,根据视频长度调整参数,这里的视频为10s 每秒30帧。将视频平滑拆分,会根据关键帧的位置拆分,每两秒一个视频(针对帧数为30帧的视频,其他帧数请调整参数。生成只有一个I帧,剩下全是P帧的视频(跟帧率有关,30fps则生成30张图片。将视频第一秒的视频提取为图片序列(测试I,P,B帧的数量。每一秒插入一个I帧(原创 2023-04-11 20:14:52 · 769 阅读 · 0 评论 -
RGB与YUV
YUV也叫YCbCr模型,是相对于RGB模型的一种广泛使用的颜色表示模型,YUV格式是1938年由一个法国通信工程师M. Georges Valensi发明的。YUV中的Y表示亮度luminance,UV表示色度chrominance;我们知道人眼是个复杂的器官,有许多部分组成,但我们最感兴趣的是视锥细胞和视杆细胞。眼睛有1.2亿个视杆细胞和6百万个视锥细胞。让我们把颜色和亮度放在眼睛的功能部位上。视杆细胞主要负责亮度,而视锥细胞负责颜色。原创 2023-04-11 12:27:21 · 1987 阅读 · 0 评论 -
使用ffmpeg调试宏块和运动向量
以前版本的 ffmpeg(2017 年 10 月之前)也允许您分析宏块,但此选项已被删除。`codecview` 过滤器可用于将运动矢量显示为每个宏块的小箭头。早期版本的 ffmpeg 没有这个过滤器,但支持现已弃用的 -vismv 选项。此选项不适用于不导出运动矢量的编解码器(大多数非基于 MPEG 的编解码器)pf - P 图片的前向预测运动向量。bf – B 图片的前向预测运动向量。bb – B 图片的后向预测运动向量。原创 2023-04-09 21:29:14 · 192 阅读 · 0 评论 -
Sip协议
SIP协议的简单介绍原创 2023-04-07 16:02:04 · 320 阅读 · 0 评论 -
使用C#将RGB24转换为YUV420格式
最近使用阿里云推送本地视频数据到远端播放!需要将图像数据转换为YUV420格式的,网上大部分是C++写的,这里将代码转换为C#格式,记录如下!1.原料准备!首先我们获得RGB原始数据,这里不能使用JPG等压缩格式图片,需要先将图片转换为RGB格式的裸数据保存!这里提供一个网站 ,可以做转换!https://convertio.co/zh/2.转码:使用下面的代码即可转换为YUV420!有需要的同学可以试试看! FileStream fs = new FileStream("./test.rgb原创 2021-02-04 17:11:54 · 1176 阅读 · 0 评论 -
Centos 7编译ZLMediaKit 小记
linux 编译ZLMediaKit 小记原创 2022-11-22 15:26:28 · 216 阅读 · 0 评论 -
关于使用GB28181协议实现与大华摄像机的语音对讲功能小记
使用GB28181协议对接大华摄像机,实现语音对讲功能原创 2022-11-11 19:03:15 · 3731 阅读 · 0 评论 -
C# 使用cefsharp点播m3u8在线视频流
winform程序加载网页点播视频流原创 2022-09-08 17:00:50 · 2711 阅读 · 0 评论 -
Linux平台下编译 FFmpeg动态库
下载源码:Index of /releases (ffmpeg.org)本人下载版本为5.0.1下载到本地后,使用rz命令拷贝过去,解压缩tar -xzf ffmpeg-5.0.1.tar.gz执行命令:./configure --enable-shared --disable-yasm --prefix=/usr/local/ffmpegmake install--enable-shared:生成的Makefile文件会编译生成动态库文件,必须得加,默认是不生成动态库文原创 2022-04-15 16:09:25 · 2814 阅读 · 0 评论 -
window下使用vs2019编译ZLMediaKit,并测试推拉流
下好相关的依赖库和编译工具1.openssl:本人使用的版本:Win64OpenSSL-3_0_2.exe下载地址:Win32/Win64 OpenSSL Installer for Windows - Shining Light Productions (slproweb.com)2.ffmpeg可执行文件本人使用的版本:ffmpeg-2022-04-03-git-1291568c98-essentials_build.7z下载地址:Builds - CODEX FFMPEG原创 2022-04-08 15:51:26 · 4300 阅读 · 0 评论 -
C# 模拟PCM数据并创建WAV文件
C# 处理PCM数据原创 2022-02-25 01:02:31 · 2891 阅读 · 0 评论 -
C#使用libVLC制作视频播放器时自定义鼠标事件的捕获或者忽略
由于项目之前使用libVLC制作的播放器没有全屏功能,现在需要添加全屏功能。而实现全屏功能后需要控件捕获鼠标消息。不做处理的话,鼠标消息会被vlc捕获!这里就需要VLC忽略掉鼠标消息!所以,需在创建完媒体播放器后,调用 libvlc_video_set_key_input() 和 libvlc_video_set_mouse_input() 即可,这样 libVLC 就可以忽略键盘和鼠标事件了:private libvlc_media_player_t Create_MediaPlayer(li原创 2020-12-28 12:09:05 · 1216 阅读 · 3 评论 -
音视频基础知识笔记
PCM:原始的音视频数据(未经压缩,一般较大)WAV:WAV是最常见的声音文件格式之一,是WaveForm的简写,也称为波形文件,可直接存储声音波形。是微软公司专门为Windows开发的一种标准数字音频文件,该文件能记录各种单声道或立体声的声音信息,并能保证声音不失真。MP3:MP3是一种音频压缩技术(有损),其全称是动态影像专家压缩标准音频层面3(Moving Picture Experts Group Audio Layer III),简称为MP3。它被设计用来大幅度地降低音频数据量。利用.原创 2020-06-29 13:48:59 · 1005 阅读 · 0 评论 -
C# 使用NAudio实现wav互转MP3
/// <summary> /// 将wav转为MP3 /// </summary> /// <param name="sourceFile">in wav文件</param> /// <param name="desFile">out MP3文件</param> public static void ConvertWAVtoMP3(str...原创 2020-06-29 11:33:35 · 3217 阅读 · 0 评论 -
C# 使用NAudio实现声音的录制(麦克风 , 扬声器)
NAudio 简介:NAudio是个相对成熟、开源的C#音频开发工具,它包含录音、播放录音、格式转换、混音调整等功能。本次介绍主要功能有音频、录音文件播放、实时音频流波形图显示等。第一步:添加引用,再NuGet中搜索NAudio,并安装第二步:在代码中使用,下面直接提供本人封装好的类,暴露了3个接口,一个初始化,一个开始,一个暂停,比较基础的应用 public class NAudioRecordHelper { public enum Record...原创 2020-06-28 16:49:57 · 13990 阅读 · 5 评论