相关疑难解决方法(0)

在Windows下更改默认套接字缓冲区大小

我无法更改的应用程序是丢弃一些传入的UDP数据包.我怀疑接收缓冲区溢出.是否有注册表设置使默认缓冲区大于8KB?

sockets windows registry udp

8
推荐指数
1
解决办法
4万
查看次数

解码MB时ffmpeg RTSP错误

我正在使用ffmpeg从Cisco 3050 IP摄像机读取h264 RTSP流,并将其重新编码为h264到磁盘(这是我不仅仅使用的原因-codec:copy)。

ffmpeg版本如下:

ffmpeg version 3.2.6 Copyright (c) 2000-2017 the FFmpeg developers
  built with gcc 6.3.0 (Alpine 6.3.0)
Run Code Online (Sandbox Code Playgroud)

我还尝试使用ffmpeg 2.8.14-0ubuntu0.16.04.1和从源代码构建的最新ffmpeg(我使用了提交),并看到了与以下相同的行为。

我正在运行的命令是:

ffmpeg -rtsp_transport udp -i 'rtsp://<user>:<pw>@<ip>:554/StreamingSetting?version=1.0&action=getRTSPStream&ChannelID=1&ChannelName=Channel1' -r 10 -c:v h264 -crf 23 -x264-params keyint=60:min-keyint=60 -an -f ssegment -segment_time 60 -strftime 1 /output/%Y%m%d_%H%M%S.ts -abort_on empty_output
Run Code Online (Sandbox Code Playgroud)

我以每秒至少一个的相当稳定的速度收到各种错误。这是一个示例:

[rtsp @ 0x7f268c5e9220] max delay reached. need to consume packet
[rtsp @ 0x7f268c5e9220] RTP: missed 40 packets
[h264 @ 0x55b1e115d400] left block unavailable for requested intra mode
[h264 @ …
Run Code Online (Sandbox Code Playgroud)

video opencv ffmpeg h.264

7
推荐指数
2
解决办法
8398
查看次数

ffmpeg rtsp 解码缓冲区太小

我正在使用 ffmpeg 在 Android 上解码 rtsp,当图像快速更新或以高分辨率更新时,我很快就会看到像素化:

工作解码帧

非工作解码帧

谷歌搜索后,我发现它可能与 UDP 缓冲区大小相关。然后我在 ffmpeg/libavformat/udp.c 中使用以下参数重新编译了 ffmpeg 库

#define UDP_TX_BUF_SIZE 327680
#define UDP_MAX_PKT_SIZE 655360
Run Code Online (Sandbox Code Playgroud)

它似乎有所改善,但在某些时候仍然开始失败。知道我应该增加哪个缓冲区以及如何增加吗?

streaming android ffmpeg rtsp

5
推荐指数
1
解决办法
4046
查看次数

使用FFMpeg库读取RTSP流 - 如何使用avcodec_open2?

在尝试阅读rtsp流时,我遇到了一些问题,包括代码和文档.简短说明:无论我做什么,avcodec_open2要么失败(说"编解码器类型或ID不匹配"),或者widthheight调用后编解码方面都是0(从而进一步代码没用).流本身可以通过VLC播放器正常打开并av_dump_format()显示正确的信息.我的代码基于这个问题的技术答案.

详细说明:我的代码是在C#中,但这里是C++ - 相当于FFMpeg调用(实际上我将代码减少到这个最小值并且问题仍然存在):

av_register_all();
avformat_network_init(); //return code ignored

AVFormatContext* formatContext = avformat_alloc_context();
if (avformat_open_input(&formatContext, stream_path, null, null) != 0) {
    return;
}

if (avformat_find_stream_info(formatContext, null) < 0) {
    return;
}

int videoStreamIndex = 0;
for (int i = 0; i < formatContext->nb_streams; ++i) {
    AVStream* s = formatContext->streams[i];
    if (s->codec == null) continue;
    AVCodecContext c = *(s->codec);
    if (c.codec_type == AVMEDIA_TYPE_VIDEO) videoStreamIndex = i;
}

//start reading packets …
Run Code Online (Sandbox Code Playgroud)

ffmpeg rtsp

4
推荐指数
1
解决办法
7362
查看次数

标签 统计

ffmpeg ×3

rtsp ×2

android ×1

h.264 ×1

opencv ×1

registry ×1

sockets ×1

streaming ×1

udp ×1

video ×1

windows ×1