TestPattern error

news/2024/11/19 9:19:39/

目前三个问题:
1.支持多路
—2.延时进度条减少时,花屏h264已解决 h265
—3.延时进度条拉大时,h264视频缓存不够,视频跟不上音频
–4.做成一个服务 改变分辨率和帧率,重启问题
–5.考虑正在码流探测时,停止推流的情况,码流探测可长时间阻塞
6.开始和结束推流配置文件会有。无推流时显示彩条
—8.支持port和-d输入
9分辨率和帧率可改
10出奇偶场 帧率和分辨率变换
–11内存泄露,释放掉多余的内存池 连接
12网络丢包带来的花屏,修改ffmpeg源码,模拟工具

汇聚延时2s 测试2M码流
抖动:sudo tc qdisc add dev enp1s0 root netem delay 1000ms 600ms
断流时长超过250ms 偶尔有马赛克
抖动:sudo tc qdisc add dev enp1s0 root netem delay 1000ms 500ms
断流时长250测试ing
sudo tc qdisc add dev enp1s0 root netem delay 200ms 50ms
sudo tc qdisc del dev enp1s0 root

ScheduledPlaybackHasStopped主要这个函数还没有被调用

kill -9不会回收资源
kill -15杀死TestPattern会回收socket资源

帧同步:sea,h264/265都有这个。
帧对齐:ref

tcp是握手,udp传输,所以检测的时候得重新建立一次连接才能检测到
sudo tcpdump -i enp7s0 -nnn tcp port 50000

传输丢包是只真实丢了的包
业务丢包是指传输过程中丢了的但又重传的包

没有预回滚,音频走不动,视频能走动
对于小的decklin卡
全* 0: one sub-device full-duplex
则0和1口可以采集和播放 3和4采集和播放都不行

0和1改为0: one sub-device full-duplex
2和3改为 1: two sub-devices half-duplex
则4个口全可以采集和播放
大的decklin卡应全部执行./ActivateProfile -d 0 -p 3

音频从1428000,开始到1529760(经过几秒),又从900000开始,视频直接从900000开始。

livepush给接收机推流的还有一个从背包收流的
i9 一路 top 90 华为盒子出1080i50 15M h265 28帧-47帧但是很稳定 ±1帧
i9 一路 top 90 华为盒子出1080p50 15M h265 57帧-97帧但是很稳定 ±2帧
i9 一路 top 90 华为盒子出720p50 15M h265 64帧-92帧但是很稳定 ±3帧

ps -aux | grep udp
/home/deviser/App-fusion/app/build
gdb recvd
r

ffmpeg -i ‘/home/yqw/下载/deviser.jpg’ -s 1920x1080 -pix_fmt uyvy422 deviser_yuv.yuv
ffplay -video_size 3840x2160 -pixel_format uyvy422 deviser_yuv_3840x2160.yuv

输入1280x720 用decklink可以播成1920x1080
1920x1080可以转换成2160x3840
但1280x720无法转换成2160x3840
[buffer @ 0x7f1e3cb0cb00] Unable to parse option value “0x0” as image size
[buffer @ 0x7f1e3cb0cb00] Unable to parse option value “0x0” as image size
[buffer @ 0x7f1e3cb0cb00] Error setting option video_size to value 0x0.

discardcorrupt加了这个之后,nobuffer没有明显效果了
—是这周完成的
h264第一帧是I帧 h265第一帧不一定是I帧
av_read_frame和av_format_open_input都是无限时间阻塞
配置环境
志强4路解码,线程10/20都不行,不均衡,导致单个线程个位数,视频解码跟不上,音视频不同步。存在内存泄露问题。
I9上线程10负载均衡
Gitee内存泄露,一下午变5个G了

[hevc @ 0x7faff41aa6c0] CABAC_MAX_BIN : 7
[hevc @ 0x7faff41aa6c0] The cu_qp_delta -1094995529 is outside the valid range [-26, 25].
avformat_find_stream_info特性:只有执行过av_format_open_input后才能执行,不能多次执行,除非avformat_close_input后,再次av_format_open_input后才能再次执行。
1080的12M,3840x2160 25M->36M
3840x2160p50 7M,无抖动情况,视频queue 30~50帧 音视频不同步

h265 1080p50 12M之前看看会不会卡顿
h265 2160x3840 36M之前看看会不会卡顿,做相应的处理
TestPattern_filter_no_30 两个按钮都没问题 看看抖动的问题 h264也有视频跟不上的问题,和最终版一样,最终版似乎是视频过大也是h264。

avcodec_send_packet() 多次发送 NULL 并不会导致解码器中缓存的帧丢失,使用 avcodec_flush_buffers() 可以立即丢掉解码器中缓存帧。因此播放完毕时应 avcodec_send_packet(NULL) 来取完缓存的帧,而 SEEK 操作或切换流时应调用 avcodec_flush_buffers() 来直接丢弃缓存帧

Prediction is not allowed in AAC-LC
1080p50 h265
第一帧视频进出编码器之间隔了8帧音频
视频编码器进10帧视频才开始出,音频不缓存

av_buffer_unref 内存泄露应该出现在这里,这个函数应该只能减引用不能销毁结构体空间
int av_packet_ref(AVPacket *dst, const AVPacket *src);

/*
对 packet 做拷贝操作,将 src 拷贝到 dst。
如果 src 是引用计数的,那么 dst 将会引用 src 中的数据,使其引用计数加 1 。
如果 src 不是引用计数的,那么会在 dst 中分配一个新的内存,然后将 src 中的数据拷贝过去。dst 其他的字段均拷贝自 src。
返回值:成功时返回0,失败时返回一个负数的AVERROR。
*/

原文链接:https://blog.csdn.net/qq_34305316/article/details/106317711
AVPacket *av_packet_alloc(void);

/*
分配一个AVPacket结构体,并将其字段设置为默认值。分配生成的结构体必须使用 av_packet_free()释放。
返回值:成功返回一个AVPacket结构体,失败返回NULL
注意:这个函数仅分配AVPacket本身,并不包括其内部的数据缓存区。相关的数据缓存区必须通过其他的方式来分配,如 av_new_packet 函数。
*/
————————————————
版权声明:本文为CSDN博主「H&A」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_34305316/article/details/106317711

3840x2160 p50 h265 播放20分钟后自动崩掉
[hevc @ 0x7f36c010e140] Duplicate POC in a sequence: 116083.
[hevc @ 0x7f36c010e140] Error parsing NAL unit #2.
encode send error = -1094995529
@@@Invalid data found when processing input@@@

1080p50 h265 开启偶尔报错:
encode send error = -1094995529
@@@Invalid data found when processing input@@@

3840x2160
[hevc @ 0x2356a80] Could not find ref with POC 8
[hevc @ 0x2356a80] Could not find ref with POC 12
[hevc @ 0x2356a80] Could not find ref with POC 16
[hevc @ 0x2396440] The cu_qp_delta 73 is outside the valid range [-26, 25].

[decklink @ 0x23d3fc0] There are not enough buffered video frames. Video may misbehave!
[decklink @ 0x23d3fc0] There’s no buffered audio. Audio will misbehave!

[hevc @ 0x7f412815c540] The cu_qp_delta -32 is outside the valid range [-26, 25].

20000 400s 1080p50 TestPattern_17

Socio.1000
1080i50 1080i60有逐行

硬件方式:视频分辨率转换和视频编码方式转换会黑其他的不黑
码率改变不蹦

h265 8M 4k top
h264/1080p50 声音无延时 ffplay没有 视频还有些卡顿 考虑是主频问题
h265/1080p50 有延时

推流端停止推流
但TestPattern没有崩
推流端再启动后报错:
[hevc @ 0x7f05d4070e80] Duplicate POC in a sequence: 16422.
[hevc @ 0x7f05d4070e80] Error parsing NAL unit #2.
encode send error = -1094995529
@@@Invalid data found when processing input@@@//

[mpegts @ 0x7f77740027c0] PES packet size mismatch
[mpegts @ 0x7f77740027c0] Packet corrupt (stream = 1, dts = 84151592).
read_time:126
[h264 @ 0x7f7774022c00] error while decoding MB 64 29, bytestream -6
againV
read_time:3
[aac @ 0x7f777402e780] decode_band_types: Input buffer exhausted before END element found
@@@Invalid data found when processing input@@@
//这个是udp缓存的问题

Assertion desc failed at libswscale/swscale_internal.h:674
//这个是没收到流信息
-d 2
断音

udp中断报错
[h264 @ 0x7fd39c02e200] error while decoding MB 32 41, bytestream -7
[h264 @ 0x7fd39c02e200] concealing 3257 DC, 3257 AC, 3257 MV errors in I frame

av_read_frame返回值为-5 EIO打印日志为
@@@Input/output error@@@
//5min

/home/deviser/UHD4000R/livepush --config /home/deviser/UHD4000R/devices/0080000103/livepush.config --srcip 192.168.100.77 --srcport 25403 --dstip 192.168.100.78 --dstport 6017 --dev 1000012146 --magic 1180000103 --workmode 0 --type ipc --board-id -1 --url rtmp://192.168.100.150/live/gx1234

udp之前3.5s 2M时
udp之前6s 500K

用推mp4,一个半小时不崩

/home/deviser/UHD4000R/Receiver.sh &

[udp @ 0x7f7a340032c0] attempted to set receive buffer to size 104857600 but it only ended up set as 33554432

buffer_size=size
Set the maximum UDP socket buffer size in bytes.
fifo_size=units
Set the UDP receiving circular buffer size, expressed as a number of packets with size of 188 bytes. If not specified defaults to 7*4096.
overrun_nonfatal=1|0
Survive in case of UDP receiving circular buffer overrun. Default value is 0.

以上来自ffmpeg官方文档http://ffmpeg.org/ffmpeg-all.html

1080i50 9分钟13535~~13500 nobuffer如下:

URL = "udp://127.0.0.1:6017";//URL = "srt://192.168.100.78:8080?streamid=live.sls.com/live/test";AVDictionary *options = NULL;// ic->flags |= AVFMT_FLAG_NOBUFFER;//CODEC_FLAG_LOW_DELAY;AVIO_FLAG_NONBLOCK// ic->flags |= AVIO_FLAG_NONBLOCK;// ic->flags |= AVFMT_FLAG_NONBLOCK;
// URLContext// av_dict_set_int(&options, "timeout", 6, 0);//  av_dict_set(&options, "stimeout", "5", 0);//millisecondsav_dict_set(&options, "fflags", "nobuffer", 0);avformat_alloc_output_context2(&ic, 0, "mpegts", URL);int re = avformat_open_input(&ic, URL, NULL, &options);

1080i50 4分钟 6000~~6120

9分钟 13500~~13620

带音频睡眠 1080i50
15分钟 22500 ~~22500
20分钟 30027~~30000
用的下面配置

    avcodec_register_all();av_register_all();avformat_network_init();ic = avformat_alloc_context();//URL = "srt://127.0.0.1:8080?streamid=live.sls.com/live/test1";URL = "udp://127.0.0.1:6017";AVDictionary *options = NULL;//ic->flags |= AVFMT_FLAG_NOBUFFER;//CODEC_FLAG_LOW_DELAY;AVIO_FLAG_NONBLOCK//ic->flags |= AVIO_FLAG_NONBLOCK;// ic->flags |= AVFMT_FLAG_NONBLOCK;
// URLContext// av_dict_set_int(&options, "timeout", 6, 0);//  av_dict_set(&options, "stimeout", "5", 0);//milliseconds// ic->flags |= AVFMT_FLAG_GENPTS;//  ic->flags |= AVFMT_GENERIC_INDEX;//    ic->max_index_size = 99;av_dict_set(&options, "buffer_size", "33554432", 0);av_dict_set(&options, "reuse", "1", 0);av_dict_set(&options, "fifo_size", "30554432", 0);//200Mbav_dict_set(&options, "max_delay", "2000000", 0);int re = avformat_open_input(&ic, URL, NULL, &options);

http://www.ppmy.cn/news/336641.html

相关文章

Kubernetes基础之service、服务发布

文章目录 标签定义LabelSelector条件匹配修改标签(Label)删除标签(Label) Service创建一个Service使用Service代理k8s外部应用使用service反代外部应用使用Service反代域名Service类型 Ingress概念Ingress安装helm安装&#xff1a…

k8s笔记

目录 k8s介绍 一、kubernetes 部署 二、harbor仓库搭建 三、k8s流量入口Ingress 3.1 helm3安装 ingress-nginx 四、k8sHPA 自动水平伸缩pod 五、k8s存储 5.1 k8s持久化存储02pv pvc 5.2 StorageClass 5.ubuntu20.04系统 六、k8s架构师课程之有状态服务StatefulSet …

【记录】台式机的组装

台式机的组装 1.背景 家里的老电脑好多年没有用了。机箱去年暑假我拆开过,里面的主要配件都非常老了,那时就想买配件来组装一台新的,但因为种种原因没有实施。今年过年回家,跟家里人提了一下,家里人也表示需要一台台式…

ubuntu20.04 service版本硬盘部分未挂载,实际容量不对。sda3部分未使用

现象: 在安装完ubuntu20.04的服务器版本以后, 发现一个固态被分成了3部分,并且一分部固态容量消失了! rootmylinux:/dev# fdisk -l Disk /dev/loop0: 63.24 MiB, 66301952 bytes, 129496 sectors Units: sectors of 1 * 512 51…

无法完成安装:'Cannot access storage file '/

今天自己编译了spice-protocol spice-gtk spice qemu,然后想用virsh去创建一个虚机: # virsh define demo.xml 定义域 demo(从 demo.xml) # virsh start demo cannot access storage file (as uid:107, gid:107) permission denied 解决方法: Changing /etc…

Windows无法停用设备,原因是某个程序正在使用它...

有时候,当我们用完U盘需要弹出是,会出现“Windows无法停用设备,原因是某个程序正在使用它…”的黄色警告,很无奈。不过可以通过一些方法进行解决(win10版): 1. 打开“文件资源管理器”&#xf…

python中多线程运行shell cmd,并且管理线程执行进度

问:如何在python3脚本中运行shell的命令? 答:subprocess import subprocess cmd"lsscsi" p subprocess.run(cmd,shellTrue,stdoutsubprocess.PIPE, stderrsubprocess.PIPE) print(p)看一下这个输出是什么 CompletedProcess(argslsscsi, re…

虚拟机linux ecap文件在,pve系统里配置虚拟机的网卡、硬盘直通

配置网卡、硬盘直通可以增加硬盘写入速度、网卡减小延迟、增加访问速度,避免因为虚拟化之后的资源浪费。如果没有配置好pve环境与BIOS,添加设备时会出现No IOMMU detected, please activate it.See Documentation for further information.的报错,启动虚拟机失败: 提示如下…