h .rtsp流中的i帧丢失处理
h.264 I-frame loss handling in rtsp streaming
我正在开发一个使用Live555打开rtsp流并使用FFMPEG解码视频流的播放器。我被困在一个点上,即IDR帧在网络上丢失,因此在解码其后续B/P帧后,它在视频中显示抖动效果。它在视频中的表现非常糟糕。
所以我的问题是,我如何处理I帧数据包丢失?我想知道是否有任何策略/算法来处理丢包,使视频应该平滑或清晰。
任何帮助将不胜感激。谢谢你。
如果这是第一种方法,我猜你同步解码帧,我的意思是Live555 after get回调直接调用avcodec_decode_video2的FFMPEG。
在这种情况下,在解码过程中不读取接收套接字,然后数据包被缓冲直到溢出。
你可以尝试不同的解决方法,比如增加套接字缓冲区,使用RTP超过TCP,但一个真正的解决方案需要更多的异步,例如,afterget可以将数据推送到fifo,解码线程可以从中获取。
好吧,一旦i帧丢失,它就丢失了。你不能在客户端做任何事情。我们可以解决这个问题的唯一方法是配置服务器(即:streamer)以一种方式发送更频繁的i帧(即:流中更多的i帧)或更不频繁的i帧(即流中更少的i帧)(如果你使用ffmpeg/libx264,它可以在发送i帧时精确到令人难以置信的水平)。
相关文章:
- 警告处理为错误这里有什么问题
- 在C#中处理C++指针而不使用unsafe的最佳方法
- 处理多个异常集合的C++方法
- 找不到成员对象:没有名为get_event()的成员,也处理多态性和向量
- 使用流处理接收到的数据
- 获取日期异步信号安全吗?如果在信号处理程序中使用,它会导致死锁吗
- 处理小于cpu数据总线的数据类型.(c++转换为机器代码)
- 基于多个条件处理地图中的所有元素
- 如何用数字处理log(0)
- SSL上的`curl_easy_send`和`curl_asy_recv`:如何处理`CURLE_AGAIN`
- 错误处理.将系统错误代码映射到泛型
- 从文本文件中读取时钟时间和事件时间并进行处理
- 在运行时处理类型擦除的数据-如何不重新发明轮子
- 在for循环中使用auto vs decltype(vec.size())来处理字符串的向量
- 用于矢量处理的多个线程
- 对字符串进行排序时,在c++中处理sort()
- 如何处理linux终端中带有负号(-)的C++中的命令行参数
- 处理除以零会导致<csignal>意外行为
- 是否可以在c++中处理字符串流中的各个元素
- h .rtsp流中的i帧丢失处理