
音视频
音视频相关知识。
草丛中的蝈蝈
这个作者很懒,什么都没留下…
展开
-
I帧和IDR帧的区别
当用户在播放视频时进行随机访问操作时,播放器可以快速定位到最近的 IDR 帧,然后从该帧开始解码播放,从而实现快速的随机访问。例如,在视频点播系统中,用户可以随时点击视频的进度条进行跳转,此时播放器会寻找最近的 IDR 帧以确保正确的播放。例如,在网络不稳定的情况下,当部分帧丢失时,播放器可以等待下一个 I 帧到达后继续解码播放,从而减少播放中断的影响。• 定义:IDR 帧是一种特殊的 I 帧,它不仅具有 I 帧的独立编码特性,还会触发解码器的随机访问和参考帧重置。原创 2025-02-14 11:22:33 · 288 阅读 · 0 评论 -
YUV 格式
YUV 格式通常有两大类:打包(packed)格式和平面(planar)格式。前者将 YUV 分量存放在同一个数组中,通常是几个相邻的像素组成一个宏像素(macro-pixel);而后者使用三个数组分开存放 YUV 三个分量,就像是一个三维平面一样。几种常见的yuv格式。原创 2024-08-13 19:21:52 · 211 阅读 · 0 评论 -
DirectShowPlayerService::doRender: Unresolved error code 0x80040266 (IDispatch error #102)
使用QMediaPlayer播放mp4文件时,报错“DirectShowPlayerService::doRender: Unresolved error code 0x80040266 (IDispatch error #102)”。原创 2023-05-16 11:50:28 · 690 阅读 · 0 评论 -
wave文件格式
原文链接:https://blog.youkuaiyun.com/weixin_37853880/article/details/106022885。原创 2023-01-29 19:49:54 · 397 阅读 · 0 评论 -
音频设备常见测试指标及测试方法
如果需要DUT输出1Vrms的信号,用AP的Signal Generator输出一个1KHz的正弦信号,将AP的Analyzer窗口中 Level单位设置为V,然后调整信号发生器的输出幅值使Analyzer中的Level值变为1V即可;④测试文档指定的输入或输出电平。串扰(Crosstalk):在多通道的音频系统中通常会发生一个通道的信号以低电平的形式泄漏到另外一个通道里的情况,这种跨通道泄漏的信号被称之为串扰,其通常表述为泄漏信号和原始信号之间的比率,串扰在实际设备中非常难以被消除干净。转载 2023-01-06 16:43:25 · 3318 阅读 · 0 评论 -
dbfs换算_通信中dBFS、dBm、dBV、dBW、0dB、3dB的定义
在电声系统中,±3dB的差别被认为不会影响总特性,所以各种设备指标,如频率范围,输出电平等,不加说明的话都可能有±3dB的出入。但是有一点请注意,无论dBV还是dBu,都是取的平均电压值,为什么平均,因为音频信号不是直流信号,电压是一直在改变的,而dBu的标准电压最初也是以交流电的功率换算出来的。若某功放前级是100倍(20dB),后级是20倍(13dB),那么总功率放大倍数是100×20=2000倍,总增益为20dB+13dB=33dB。通常为平衡信号传输,例如卡农(XLR),大三芯(TRS)。转载 2022-11-22 11:15:12 · 2811 阅读 · 0 评论 -
使用swr_convert_frame进行转码返回错误码-1668179714
使用swr_convert_frame进行转码返回错误码-1668179714。输出帧的格式填错,和输入帧的格式相同。原创 2022-09-21 17:51:41 · 405 阅读 · 0 评论 -
FFMPEG滤镜学习之AVFILTER
大致框架如下图所示,可以把AVFilter看做一些列Filter节点链组成,这个链由AVfilterGraph管理,每个AVFilter节点都会对数据处理,处理完成后交给下一个节点继续处理,直到最后一个节点处理完成。内部各个节点链接方式可以自由灵活配置,前一个的输出配置在后一个的输入,可以多个节点进行过滤,也可以少数2个节点过滤。官方特效说明请点击;但是,主要注意的是 buffer的AVFilter只有输出端口,buffersink的AVFilter只有输入端口,其他的AVFilter都有输入和输出。转载 2022-09-21 16:18:42 · 721 阅读 · 0 评论 -
[mp3 @ 000002bbaa0d8500] Format mp3 detected only with low score of 1, misdetection possible!
使用ffmpeg解码mp3文件进行播放,报错:“[mp3 @ 000002bbaa0d8500] Format mp3 detected only with low score of 1, misdetection possible!目前没找到原因,换了一个mp3文件,不会报错,推测报错的mp3文件格式有问题。原创 2022-09-20 16:35:23 · 4438 阅读 · 0 评论 -
移植FFmpeg在arm交叉编译时遇到的问题
原文链接:添加链接描述遇到的问题1:aarch64-himix100-linux-gcc is unable to create an executable file.C compiler test failed.解决方法:1、首先查看移植时具体出现的问题:vi ffbuild/config.log ,config.log是在./congfigure遇到问题时的记录日志,直接查看最后一行出现:aarch64-himix100-linux-gcc: error: missing argument转载 2021-11-30 18:09:49 · 845 阅读 · 0 评论 -
【ffmpeg】FFmpeg常用基本命令
【FFmpeg】FFmpeg常用基本命令1.分离视频音频流ffmpeg -i input_file -vcodec copy -an output_file_video //分离视频流ffmpeg -i input_file -acodec copy -vn output_file_audio //分离音频流2.视频解复用ffmpeg –i test.mp4 –vcodec copy...原创 2019-04-20 13:42:16 · 182 阅读 · 0 评论 -
【video】YUV420P转换为RGB32格式
从网络摄像机中获取的帧数据是YUV420P格式的,而我们处理图像需要RGB格式,在网上找了一段将YUV420P格式的帧转换为RGB的代码。<方法一> 直接计算,效率低[cpp] view plaincopy// 转换 YV12 到 RGB24// pYUV 的大小 (3 * iWidth * iHeight / 2)// pRGB 的大小 (3 * iWidth * iHei...原创 2019-04-30 09:04:36 · 930 阅读 · 0 评论 -
【ffmpeg】ffmpeg configure配置选项
帮助选项Help options标准选项Standard options许可证选项Licensing options配置选项Configuration options程序选项Program options文档选项Documentation options组件选项Component options个别组件选项Individual component options扩展库支持Exter...原创 2019-04-30 16:05:30 · 4932 阅读 · 0 评论 -
海思Hi3559a音视频同时播放的例子
原文链接:海思Hi3559a音视频同时播放的例子在mpp/sample下新建av目录(1)编写Makefile,如下:Hisilicon Hi35xx sample Makefileinclude …/Makefile.paramSRCS := $(wildcard .c)TARGET := $(SRCS:%.c=%)SRCS += $(wildcard $(PWD)/adp/.c)...转载 2020-03-09 09:56:35 · 931 阅读 · 0 评论 -
【video】Linux与视频文件的硬解播放
硬解还是软解,这是个问题。但关键是,你能硬解么?视频文件要播放得先拆包分离,然后对分离出的数据解码,解码后才是可播放的raw视频直接输出到显示器播放。其中使用cpu进行解码,就是软解,使用GPU(显卡)进行解码,就是硬解。那么为什么需要硬解。一般来说,windows下,默认的解码方式一般是软解,硬解是相对有点麻烦的。cpu的运算能力足够,一般使用软解也非硬解,因为软解现在更成熟,对应的编码更广,...原创 2019-05-01 20:03:33 · 3235 阅读 · 0 评论 -
【gst】播放Udp视频流
Udp播放需要根据发送端数据源封装格式来决定采用哪些Gstreamer插件,如果进行了RTP封装,则需要先用rtph264depay进行解包,如果包含自定义帧头的情况,应该编程对帧头进行处理,不然会显示异常,比如部分花屏现象,以下是对裸流进行播放。硬解gst-launch-1.0 udpsrc port=2101 ! h264parse ! vaapidecode ! vaapisink...原创 2019-10-18 21:55:29 · 2270 阅读 · 0 评论 -
【gstreamer】最简单的使用Gstreamer播放视频文件的代码
经本人实测,可正常播放本地文件。gint main(int argc, char *argv[]){ gst_init(&argc, &argv); GstElement * pipeline0 = gst_parse_launch("filesrc location = e:/silent_sheep.mp4 ! qtdemux ! queue ! decodebin !...原创 2019-05-10 11:19:31 · 4973 阅读 · 0 评论 -
【qml】QML使用VideoOutput渲染视频
Qt帮助文档对VideoOutput的source属性的描述:This property holds the source item providing the video frames like MediaPlayer or Camera.If you are extending your own C++ classes to interoperate with VideoOutput, y...原创 2019-04-27 14:06:26 · 3428 阅读 · 1 评论 -
【ffmpeg】基于Qt、FFMpeg的音视频播放器设计三(Qt界面设计及OpenGL绘制视频)
本部分总结了一下界面绘制和OpenGL绘制视频,由于使用的是Qt的openGL,功能上没有那么复杂,实现起来也比较简单,毕竟人家已经给封好的,完整的代码中使用OpenGL绘制视频,对数据的顶点shader、片元shader着色,对yuv材质的绑定,分配材质内存空间、创建材质显卡空间、纹理以及显卡绘制每帧视频时如何对齐等等一些内容,这部分内容是OpenGL中的,较为复杂,待继续学习后有一定收获再来总...原创 2019-04-29 16:40:02 · 1296 阅读 · 1 评论 -
【qml】qt 采用opengl渲染nv12视频到QSG并采用qml做显示
前面采用了离屏渲染,多线程的方式实现了nv12视频的播放,这次采用在QSG中渲染的方式实现,也就是在渲染线程中。原理同样是将图像纹理到一个FBO中,然后通过qt的接口带到QSG中进行显示。采用opengl渲染并用qml显示的接口类为QQuickFramebufferObject,渲染线程会在刷新画面的时候调用其createRenderer()方法用于创建渲染,这里我留了一个设置视频地址的接口,...原创 2019-04-27 14:19:05 · 2258 阅读 · 0 评论 -
【qt】 QML使用VideoOutput渲染视频
Qt帮助文档对VideoOutput的source属性的描述:This property holds the source item providing the video frames like MediaPlayer or Camera.If you are extending your own C++ classes to interoperate with VideoOutput, y...原创 2019-04-30 17:31:12 · 3536 阅读 · 0 评论 -
【ffmpeg】FFMPEG Qt视频播放器之显示图像
上一节讲解了YUV420P格式的内容。我说过,我们不是为了做研究。 平白无故讲了YUV420P的理论知识,要是不做点什么总说不过去吧。 那么,我们就练练刀,写个播放YUV420P的程序吧,将前面保存的YUV420P图像用自己写的播放器播放出来。这里我们还是一样使用Qt来显示图像。之前做播放器的时候,是将YUV420P转换成RGB32,然后放到QImage里面显示出来。由于Qt不支持直接显示...原创 2019-04-23 11:20:36 · 723 阅读 · 0 评论 -
海思HI35xx平台软件开发快速入门之视频分辨率
前言在海思HI35xx平台软件开发过程中常常遇到一些音视频相关的专业知识,为了能够灵活应对这些问题,我们必须对相关知识有所理解。这里结合海思HIMMP媒体处理系统相关应用对视频分辨率知识进行梳理,以便我们能够在应用软件开发中从容应对。分辨率概念分辨率是衡量视频质量的重要指标之一,它的表征特点就是视频尺寸的大小。有了这个概念我们可以进一步理解海思平台有关分辨率的相关知识,分辨率在海思平台中有以...转载 2020-02-26 17:17:22 · 403 阅读 · 0 评论 -
【qml】使用mediaplayer无法播放根目录下的视频文件
【问题描述】qml使用mediaplayer无法播放根目录下的视频文件。代码如下: MediaPlayer { id: mediaplayer source: "file:///xxx.mp4" autoPlay: true loops: MediaPlayer.Infinite } VideoOutput...原创 2019-12-13 15:16:39 · 1136 阅读 · 0 评论 -
imx6 3.14.52 播放视频问题,光晕,色块,阴影
硬件平台: MX6D显示接口:HDMI (1920X1080)原来采用的ltib 下的3.0.35,现在更换为yocto 下的 3.14.52后,发现问题,播放视频时出现光晕以及阴影。同一块Fsl demo 板 c2 烧写3.0.35 镜像,与烧写3.14.52镜像作对比,播放同一片源,同一显示器,3.0.35效果好很多,3.14.52 出现光晕以及阴影。Fsl demo 板与飞图板同时烧...转载 2019-12-06 14:59:34 · 433 阅读 · 0 评论 -
【video】YUV420与YUV422区别
Y:亮度分量 UV:色度分量 Y与RGB的演算关系为:Y = 0.2126 R + 0.7152 G + 0.0722 BYUV4:2:2或4:2:0都是指的Y分量和UV分量在一个像素点中占有的平均比例。YUV422:水平方向上的UV分量减半了YUV420:水平垂直方向都会减半YUV 4:4:4采样,每一个Y对应一组UV分量。YUV 4:2:2采样,每两个Y共用一组UV分量...原创 2019-04-22 21:29:27 · 2873 阅读 · 0 评论 -
imx6q平台上用Gstremer播放udp传输的h264流
Udp播放需要根据发送端数据源封装格式来决定采用哪些Gstreamer插件,如果进行了RTP封装,则需要先用rtph264depay进行解包,如果包含自定义帧头的情况,应该编程对帧头进行处理,不然会显示异常,比如部分花屏现象,以下是对裸流进行播放。硬解gst-launch-1.0 udpsrc port=2101 ! h264parse ! vaapidecode ! vaapisink...原创 2019-05-10 11:36:11 · 744 阅读 · 3 评论 -
【ffmpeg】ffmpeg h264+ts +udp传输
最近遇到好几个人在问ffmpeg如何处理网络流,刚好前段时间也在做这方面,抽空整理了下,把主要代码发出来,希望对大家有用。为简单处理,我这里只简单介绍UDP接收TS流,其实只要是socket接收的都可以类似处理。/*main.cCreated on: 2011-9-18 Author: wudegang*/#include “utils.h”#include <pt...原创 2019-04-20 18:57:39 · 1241 阅读 · 0 评论 -
【qt】Use of QAbstractVideoSurface
The QAbstractVideoSurface is an interface between the producer and consumer of the video frames. You only have two functions to implement to begin with:supportedPixelFormats so that the producer can ...原创 2019-05-02 15:40:34 · 1174 阅读 · 0 评论 -
【vlc】使用VLC播放RTP码流(SDP文件方式)
自己编写程序实现了对h.264码流的RTP封装,并进行了发送。使用VLC的串流保存文件,可以接收并保存,收到的数据也正确,但就是无法播放。直接按照下图方式,报错。看来需要配置sdp文件。按照如下方式进行配置:m=video 1234 RTP/AVP 96a=rtpmap:96 H264/90000a=fmtp:96 packetization-mode=1; profile-lev...原创 2019-04-26 11:44:44 · 8815 阅读 · 4 评论 -
【rtp】RTP:实时应用传输协议 (RFC3550)
RTP:实时应用传输协议摘要本文描述RTP(real-time transport protocol),实时传输协议。RTP在多点传送(多播)或单点传送(单播)的网络服务上,提供端对端的网络传输功能,适合应用程序传输实时数据,如:音频,视频或者仿真数据。RTP没有为实时服务提供资源预留的功能,也不能保证QoS(服务质量)。数据传输功能由一个控制协议(RTCP)来扩展,通过扩展,可以用一种方式对...转载 2019-11-10 15:13:13 · 1050 阅读 · 0 评论 -
gstreamer常用指令汇总
Gstreamer中一些gst-launch常用命令用Linux系统中使用gstreamer架构做对媒体开发时,gst-inspect和gst-launch是两个非常使用的小工具,gst-inspect 在开发时用于查询库各个插件element的详细信息,后者用于在终端快速构建一条pipeline用于播放多媒体。下面列出我在以前的学习和项目开发时常用的gst-launch播放各种多媒体文件的实例:一、gstreamer实现视频显示gst-launch videotestsrc ! xvimagesin原创 2020-05-15 14:37:33 · 1361 阅读 · 0 评论 -
IMX6 多屏幕显示问题
运行Qt程序1.1 两个屏幕运行不同Qt 程序:若Qt5运行于eglfs平台,与屏幕设置有关的环境变量为QT_QPA_EGLFS_FB,在LVDS 上& HDMI 上显示: export QT_QPA_EGLFS_FB=/dev/fb0 ./QtDemo1 &export QT_QPA_EGLFS_FB=/dev/fb2 / ./QtDemo22. ...转载 2019-12-06 14:58:36 · 967 阅读 · 0 评论 -
【system】iMX6 应用叠加--OVERLAY
两个应用的叠加可以使用overlay的方式本文和开机动画一文大部分概念相同,只是用途不同做不同的修改,本质都是对overlay的操作在imx6qd中,发fb1是fb0的overlay,fb3是fb2的overlay在最初开机的时候,fb1并不是fb0的overlay此时对fb1的操作不会有显示使用overlay可以通过如下两个示例打开,关闭overlay还找到方法,目前的做法是直接设置为透...原创 2019-12-06 14:44:05 · 484 阅读 · 0 评论 -
【ffmpeg】FFmpeg发送流媒体的命令(UDP,RTP,RTMP)
这两天研究了FFmpeg发送流媒体的命令,在此简单记录一下以作备忘。 UDP1.1. 发送H.264裸流至组播地址注:组播地址指的范围是224.0.0.0—239.255.255.255下面命令实现了发送H.264裸流“chunwan.h264”至地址udp://233.233.233.223:6666ffmpeg -re -i chunwan.h264 -vcodec cop...原创 2019-04-20 14:46:46 · 567 阅读 · 0 评论 -
【qml】QML Image动态刷新图片来自C++的QImage的一个巨坑
最近,需要在QML上显示来自OPenCV的摄像头视频,因为是视频,既好多好多图片,所以需要QML上动态刷新来自C++的QImage具体怎么搞我就不再赘述,虽然资料不多,但是优快云上的一篇博客已经写得十分的清楚:Qt C++发送图片到QML显示但是!我按照他们的方法,根本无法正常刷新图片,只能显示第一张!!!我按照他们的方法,根本无法正常刷新图片,只能显示第一张!!!我按照他们的方法,...转载 2019-04-27 11:56:03 · 2814 阅读 · 1 评论