gpt4 book ai didi

ffmpeg - 多输入多输出 ffmpeg 命令中的截断视频

转载 作者:行者123 更新时间:2023-12-04 23:02:28 25 4
gpt4 key购买 nike

我正在尝试使用 rtsp 从 CCTV DVR 服务器(6 个 channel )复制视频。如何优化我的 ffmpeg 命令?

下面是配置:

ffmpeg 版本:ffmpeg-4.1.4-win64-static
CPU : Intel Core i7-8650U @1.9 GHz 2.11 GHz
内存:16 GB

当我尝试从 3 个 channel 下载时,视频似乎下载得很好,但是当我同时使用 >=4 个 channel 时,来自 channel 1 的视频几乎在大约 5 秒后被截断,并且输出文件从 channel 2 到 4 小得多, channel 5 视频输出没有问题。

例如这是根据 channel 的输出文件大小。

Channel 1 : 1.7 MB (truncated)
Channel 2 : 27.5 MB (approx 5 secs video loss in the beginning)
Channel 3 : 28.5 MB (approx 3-4 secs loss)
channel 4 : 29.5 MB (approx 2 secs loss)
Channel 5 : 30 MB (no issues found)

下面是我试图用来下载的命令。
ffmpeg -rtsp_transport tcp -thread_queue_size 1024 -i rtsp://<input url 1> -thread_queue_size 1024 -i rtsp://<input url 2> -thread_queue_size 1024 -i rtsp://<input url 3> -thread_queue_size 1024 -i rtsp://<input url 4> -thread_queue_size 1024 -i rtsp://<input url 5> -map 0 -vcodec copy -t 60 -y outputfile1.mp4 -map 1 -vcodec copy -t 60 -y outputfile2.mp4 -map 2 -vcodec copy -t 60 -y outputfile3.mp4 -map 3 -vcodec copy -t 60 -y outputfile4.mp4 -map 4 -vcodec copy -t 60 -y outputfile5.mp4

下面是实际输出:
ffmpeg version 4.1.4 Copyright (c) 2000-2019 the FFmpeg developers
built with gcc 9.1.1 (GCC) 20190716
configuration: --enable-gpl --enable-version3 --enable-sdl2 --enable-fontconfig --enable-gnutls --enable-iconv --enable-libass --enable-libbluray --enable-libfreetype --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libtheora --enable-libtwolame --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxml2 --enable-libzimg --enable-lzma --enable-zlib --enable-gmp --enable-libvidstab --enable-libvorbis --enable-libvo-amrwbenc --enable-libmysofa --enable-libspeex --enable-libxvid --enable-libaom --enable-libmfx --enable-amf --enable-ffnvcodec --enable-cuvid --enable-d3d11va --enable-nvenc --enable-nvdec --enable-dxva2 --enable-avisynth
libavutil 56. 22.100 / 56. 22.100
libavcodec 58. 35.100 / 58. 35.100
libavformat 58. 20.100 / 58. 20.100
libavdevice 58. 5.100 / 58. 5.100
libavfilter 7. 40.101 / 7. 40.101
libswscale 5. 3.100 / 5. 3.100
libswresample 3. 3.100 / 3. 3.100
libpostproc 55. 3.100 / 55. 3.100
Input #0, rtsp, from 'rtsp://<input url 1':
Metadata:
title : -
Duration: N/A, start: 0.080000, bitrate: N/A
Stream #0:0: Video: h264 (High), yuv420p(progressive), 1920x1080, 25 tbr, 90k tbn, 180k tbc
[udp @ 000001f27c6fffc0] 'circular_buffer_size' option was set but it is not supported on this build (pthread support is required)
[udp @ 000001f27c74f400] 'circular_buffer_size' option was set but it is not supported on this build (pthread support is required)
[rtsp @ 000001f27c721f40] max delay reached. need to consume packet
[rtsp @ 000001f27c721f40] RTP: missed 15 packets
[h264 @ 000001f27d627ac0] error while decoding MB 71 49, bytestream -6
[h264 @ 000001f27d627ac0] concealing 2258 DC, 2258 AC, 2258 MV errors in P frame
[h264 @ 000001f27d627ac0] Increasing reorder buffer to 1
Input #1, rtsp, from 'rtsp://<input url 2':
Metadata:
title : -
Duration: N/A, start: 0.040000, bitrate: N/A
Stream #1:0: Video: h264 (High), yuv420p(progressive), 1920x1080, 25 tbr, 90k tbn, 180k tbc
[udp @ 000001f27c6ffc40] 'circular_buffer_size' option was set but it is not supported on this build (pthread support is required)
[udp @ 000001f27d2dc180] 'circular_buffer_size' option was set but it is not supported on this build (pthread support is required)
[rtsp @ 000001f27d2db700] max delay reached. need to consume packet
[rtsp @ 000001f27d2db700] RTP: missed 15 packets
[h264 @ 000001f27d2dbd00] concealing 7337 DC, 7337 AC, 7337 MV errors in P frame
[h264 @ 000001f27d2dbd00] Increasing reorder buffer to 1
Input #2, rtsp, from '<input url 3':
Metadata:
title : -
Duration: N/A, start: 0.080000, bitrate: N/A
Stream #2:0: Video: h264 (High), yuv420p(progressive), 1920x1080, 25 tbr, 90k tbn, 180k tbc
[udp @ 000001f27c6ffd00] 'circular_buffer_size' option was set but it is not supported on this build (pthread support is required)
[udp @ 000001f27d302bc0] 'circular_buffer_size' option was set but it is not supported on this build (pthread support is required)
[rtsp @ 000001f27cfe9200] max delay reached. need to consume packet
[rtsp @ 000001f27cfe9200] RTP: missed 44 packets
[h264 @ 000001f27cfe6c40] error while decoding MB 41 24, bytestream -8
[h264 @ 000001f27cfe6c40] concealing 5288 DC, 5288 AC, 5288 MV errors in P frame
[h264 @ 000001f27cfe6c40] Increasing reorder buffer to 1
Input #3, rtsp, from '<input url 4':
Metadata:
title : -
Duration: N/A, start: 0.080000, bitrate: N/A
Stream #3:0: Video: h264 (High), yuv420p(progressive), 1920x1080, 25 tbr, 90k tbn, 180k tbc
[udp @ 000001f27cfe0940] 'circular_buffer_size' option was set but it is not supported on this build (pthread support is required)
[udp @ 000001f27dd1bec0] 'circular_buffer_size' option was set but it is not supported on this build (pthread support is required)
[rtsp @ 000001f27daaf040] max delay reached. need to consume packet
[rtsp @ 000001f27daaf040] RTP: missed 107 packets
[h264 @ 000001f27dc05040] concealing 1340 DC, 1340 AC, 1340 MV errors in P frame
[rtsp @ 000001f27daaf040] max delay reached. need to consume packet
[rtsp @ 000001f27daaf040] RTP: missed 28 packets
[h264 @ 000001f27dc05040] Increasing reorder buffer to 1
[h264 @ 000001f27dc05040] concealing 6961 DC, 6961 AC, 6961 MV errors in P frame
[rtsp @ 000001f27daaf040] max delay reached. need to consume packet
[rtsp @ 000001f27daaf040] RTP: missed 53 packets
[h264 @ 000001f27dc05040] error while decoding MB 16 40, bytestream -18
[h264 @ 000001f27dc05040] concealing 3393 DC, 3393 AC, 3393 MV errors in I frame
Input #4, rtsp, from 'rtsp://<input url 5':
Metadata:
title : -
Duration: N/A, start: 0.120000, bitrate: N/A
Stream #4:0: Video: h264 (High), yuv420p(progressive), 1920x1080, 25 tbr, 90k tbn, 180k tbc
Output #0, mp4, to 'outputfile1.mp4':
Metadata:
title : -
encoder : Lavf58.20.100
Stream #0:0: Video: h264 (High) (avc1 / 0x31637661), yuv420p(progressive), 1920x1080, q=2-31, 25 tbr, 90k tbn, 90k tbc
Output #1, mp4, to 'outputfile2.mp4':
Metadata:
title : -
encoder : Lavf58.20.100
Stream #1:0: Video: h264 (High) (avc1 / 0x31637661), yuv420p(progressive), 1920x1080, q=2-31, 25 tbr, 90k tbn, 90k tbc
Output #2, mp4, to 'outputfile3.mp4':
Metadata:
title : -
encoder : Lavf58.20.100
Stream #2:0: Video: h264 (High) (avc1 / 0x31637661), yuv420p(progressive), 1920x1080, q=2-31, 25 tbr, 90k tbn, 90k tbc
Output #3, mp4, to 'outputfile4.mp4':
Metadata:
title : -
encoder : Lavf58.20.100
Stream #3:0: Video: h264 (High) (avc1 / 0x31637661), yuv420p(progressive), 1920x1080, q=2-31, 25 tbr, 90k tbn, 90k tbc
Output #4, mp4, to 'outputfile5.mp4':
Metadata:
title : -
encoder : Lavf58.20.100
Stream #4:0: Video: h264 (High) (avc1 / 0x31637661), yuv420p(progressive), 1920x1080, q=2-31, 25 tbr, 90k tbn, 90k tbc
Stream mapping:
Stream #0:0 -> #0:0 (copy)
Stream #1:0 -> #1:0 (copy)
Stream #2:0 -> #2:0 (copy)
Stream #3:0 -> #3:0 (copy)
Stream #4:0 -> #4:0 (copy)
Press [q] to stop, [?] for help
[mp4 @ 000001f27dd0d8c0] Timestamps are unset in a packet for stream 0. This is deprecated and will stop working in the future. Fix your code to set the timestamps properly
[mp4 @ 000001f27dd09040] Timestamps are unset in a packet for stream 0. This is deprecated and will stop working in the future. Fix your code to set the timestamps properly
[mp4 @ 000001f27dd09040] pts has no value
[mp4 @ 000001f27dc054c0] Timestamps are unset in a packet for stream 0. This is deprecated and will stop working in the future. Fix your code to set the timestamps properly
[mp4 @ 000001f27dc054c0] pts has no value
[mp4 @ 000001f27ddf86c0] Timestamps are unset in a packet for stream 0. This is deprecated and will stop working in the future. Fix your code to set the timestamps properly
[mp4 @ 000001f27ddf86c0] pts has no value
[mp4 @ 000001f27c743b00] Timestamps are unset in a packet for stream 0. This is deprecated and will stop working in the future. Fix your code to set the timestamps properly
[mp4 @ 000001f27c743b00] pts has no value
[mp4 @ 000001f27dd0d8c0] Non-monotonous DTS in output stream 0:0; previous: 0, current: 0; changing to 1. This may result in incorrect timestamps in the output file.
[mp4 @ 000001f27dd09040] Non-monotonous DTS in output stream 1:0; previous: 0, current: 0; changing to 1. This may result in incorrect timestamps in the output file.
[mp4 @ 000001f27dc054c0] Non-monotonous DTS in output stream 2:0; previous: 0, current: 0; changing to 1. This may result in incorrect timestamps in the output file.
[mp4 @ 000001f27ddf86c0] Non-monotonous DTS in output stream 3:0; previous: 0, current: 0; changing to 1. This may result in incorrect timestamps in the output file.
[mp4 @ 000001f27c743b00] Non-monotonous DTS in output stream 4:0; previous: 0, current: 0; changing to 1. This may result in incorrect timestamps in the output file.
[mp4 @ 000001f27dd09040] Non-monotonous DTS in output stream 1:0; previous: 1, current: 0; changing to 2. This may result in incorrect timestamps in the output file.
[mp4 @ 000001f27dc054c0] Non-monotonous DTS in output stream 2:0; previous: 1, current: 0; changing to 2. This may result in incorrect timestamps in the output file.
[mp4 @ 000001f27ddf86c0] Non-monotonous DTS in output stream 3:0; previous: 1, current: 0; changing to 2. This may result in incorrect timestamps in the output file.
[mp4 @ 000001f27c743b00] Non-monotonous DTS in output stream 4:0; previous: 1, current: 0; changing to 2. This may result in incorrect timestamps in the output file.
[rtsp @ 000001f27d2db700] max delay reached. need to consume packet
[rtsp @ 000001f27d2db700] RTP: missed 1644 packets
[rtsp @ 000001f27c721f40] max delay reached. need to consume packet
[rtsp @ 000001f27c721f40] RTP: missed 2461 packets
[rtsp @ 000001f27cfe9200] max delay reached. need to consume packet
[rtsp @ 000001f27cfe9200] RTP: missed 733 packets
frame= 46 fps=0.8 q=-1.0 Lq=-1.0 q=-1.0 q=-1.0 q=-1.0 size= 1790kB time=00:00:59.99 bitrate= 244.4kbits/s speed=1.04x
video:119011kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: unknown

有人可以帮我优化 ffmpeg 命令吗?

最佳答案

请设置 RTP 数据包的套接字缓冲区大小。

buffer_size=size Set the UDP maximum socket buffer size in bytes. This is used to set either the receive or send buffer size, depending on what the socket is used for. Default is 64KB. See also fifo_size.



增加数据包的缓冲时间。

-max_delay

从日志中可以看出,很多数据包丢失正在发生。

RTP: missed 2461 packets



还要在 ffmpeg 的单独进程中尝试每个 channel 。

关于ffmpeg - 多输入多输出 ffmpeg 命令中的截断视频,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57246310/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com