gpt4 book ai didi

video - 与 ffplay 和 VLC 相比,ffmpeg 性能不佳

转载 作者:行者123 更新时间:2023-12-04 23:11:00 30 4
gpt4 key购买 nike

我在 ffmpeg 上的表现一直很差,而在 ffplay 和 VLC 上我看不到。我觉得这很奇怪,因为 ffplay 在后台使用 ffmpeg。
简单地说,如果我使用 ffmpeg 流式传输 HEVC/h265 流并将其通过管道传输到 ffplay,它会卡顿并且性能比直接使用 ffplay 播放流时更差。
我想说的是我期待这个命令 ffplay rtsp://stream-ip执行与 ffmpeg -i rtsp://stream-ip -f matroska - | ffplay - 相同的操作但事实并非如此,ffplay 播放起来明显更流畅。另外,如果我尝试使用 VLC 流式传输,它就像 ffplay 一样流畅。
这是ffplay的日志:

$ ffplay rtsp://admin:1234@192.168.1.47:554/StdCh1
ffplay version n4.4 Copyright (c) 2003-2021 the FFmpeg developers
built with gcc 11.1.0 (GCC)
configuration: --prefix=/usr --disable-debug --disable-static --disable-stripping --enable-amf --enable-avisynth --enable-cuda-llvm --enable-lto --enable-fontconfig --enable-gmp --enable-gnutls --enable-gpl --enable-ladspa --enable-libaom --enable-libass --enable-libbluray --enable-libdav1d --enable-libdrm --enable-libfreetype --enable-libfribidi --enable-libgsm --enable-libiec61883 --enable-libjack --enable-libmfx --enable-libmodplug --enable-libmp3lame --enable-libopencore_amrnb --enable-libopencore_amrwb --enable-libopenjpeg --enable-libopus --enable-libpulse --enable-librav1e --enable-librsvg --enable-libsoxr --enable-libspeex --enable-libsrt --enable-libssh --enable-libsvtav1 --enable-libtheora --enable-libv4l2 --enable-libvidstab --enable-libvmaf --enable-libvorbis --enable-libvpx --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxcb --enable-libxml2 --enable-libxvid --enable-libzimg --enable-nvdec --enable-nvenc --enable-shared --enable-version3
libavutil 56. 70.100 / 56. 70.100
libavcodec 58.134.100 / 58.134.100
libavformat 58. 76.100 / 58. 76.100
libavdevice 58. 13.100 / 58. 13.100
libavfilter 7.110.100 / 7.110.100
libswscale 5. 9.100 / 5. 9.100
libswresample 3. 9.100 / 3. 9.100
libpostproc 55. 9.100 / 55. 9.100
Input #0, rtsp, from 'rtsp://admin:1234@192.168.1.47:554/StdCh1':
Metadata:
title : KNS-224C
comment : http80 rtsp554 a0 ba0 pt0 rc2 rv2 ua2 tk3 vs3 vd3 pc0 sc0 af0
Duration: N/A, start: 0.000000, bitrate: N/A
Stream #0:0: Video: hevc (Main), yuvj420p(pc, bt709), 1920x1080, 30.30 tbr, 90k tbn, 90k tbc
Stream #0:1: Data: none
这是 ffmpeg 通过管道传输到 ffplay 的日志:
$ ffmpeg -i rtsp://admin:1234@192.168.1.47:554/StdCh1 -f matroska - | ffplay -
ffplay version n4.4ffmpeg version n4.4 Copyright (c) 2003-2021 the FFmpeg developers Copyright (c) 2000-2021 the FFmpeg developers

built with gcc 11.1.0 (GCC)
built with gcc 11.1.0 (GCC)
configuration: --prefix=/usr --disable-debug --disable-static --disable-stripping --enable-amf --enable-avisynth --enable-cuda-llvm --enable-lto --enable-fontconfig --enable-gmp --enable-gnutls --enable-gpl --enable-ladspa --enable-libaom --enable-libass --enable-libbluray --enable-libdav1d --enable-libdrm --enable-libfreetype --enable-libfribidi --enable-libgsm --enable-libiec61883 --enable-libjack --enable-libmfx --enable-libmodplug --enable-libmp3lame --enable-libopencore_amrnb --enable-libopencore_amrwb --enable-libopenjpeg --enable-libopus --enable-libpulse --enable-librav1e --enable-librsvg --enable-libsoxr --enable-libspeex --enable-libsrt --enable-libssh --enable-libsvtav1 --enable-libtheora --enable-libv4l2 --enable-libvidstab --enable-libvmaf --enable-libvorbis --enable-libvpx --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxcb --enable-libxml2 --enable-libxvid --enable-libzimg --enable-nvdec --enable-nvenc --enable-shared --enable-version3
configuration: --prefix=/usr --disable-debug --disable-static --disable-stripping --enable-amf --enable-avisynth --enable-cuda-llvm --enable-lto --enable-fontconfig --enable-gmp --enable-gnutls --enable-gpl --enable-ladspa --enable-libaom --enable-libass --enable-libbluray --enable-libdav1d --enable-libdrm --enable-libfreetype --enable-libfribidi --enable-libgsm --enable-libiec61883 --enable-libjack --enable-libmfx --enable-libmodplug --enable-libmp3lame --enable-libopencore_amrnb --enable-libopencore_amrwb --enable-libopenjpeg --enable-libopus --enable-libpulse --enable-librav1e --enable-librsvg --enable-libsoxr --enable-libspeex --enable-libsrt --enable-libssh --enable-libsvtav1 --enable-libtheora --enable-libv4l2 --enable-libvidstab --enable-libvmaf --enable-libvorbis --enable-libvpx --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxcb --enable-libxml2 --enable-libxvid --enable-libzimg --enable-nvdec --enable-nvenc --enable-shared --enable-version3
libavutil 56. 70.100 / 56. 70.100
libavcodec 58.134.100 / 58.134.100
libavutil 56. 70.100 / 56. 70.100
libavformat 58. 76.100 / 58. 76.100
libavcodec 58.134.100 / 58.134.100
libavdevice 58. 13.100 / 58. 13.100
libavformat 58. 76.100 / 58. 76.100
libavfilter 7.110.100 / 7.110.100
libavdevice 58. 13.100 / 58. 13.100
libswscale 5. 9.100 / 5. 9.100
libavfilter 7.110.100 / 7.110.100
libswresample 3. 9.100 / 3. 9.100
libswscale 5. 9.100 / 5. 9.100
libpostproc 55. 9.100 / 55. 9.100
libswresample 3. 9.100 / 3. 9.100
libpostproc 55. 9.100 / 55. 9.100
Input #0, rtsp, from 'rtsp://admin:1234@192.168.1.47:554/StdCh1':
Metadata:
title : KNS-224C
comment : http80 rtsp554 a0 ba0 pt0 rc2 rv2 ua2 tk3 vs3 vd3 pc0 sc0 af0
Duration: N/A, start: 0.000000, bitrate: N/A
Stream #0:0: Video: hevc (Main), yuvj420p(pc, bt709), 1920x1080, 30.30 tbr, 90k tbn, 90k tbc
Stream #0:1: Data: none
Stream mapping:
Stream #0:0 -> #0:0 (hevc (native) -> h264 (libx264))
Press [q] to stop, [?] for help
[hevc @ 0x561e88468480] Could not find ref with POC 0
[libx264 @ 0x561e8845a480] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2 AVX FMA3 BMI2 AVX2
[libx264 @ 0x561e8845a480] profile High, level 4.2, 4:2:0, 8-bit0
[libx264 @ 0x561e8845a480] 264 - core 161 r3039 544c61f - H.264/MPEG-4 AVC codec - Copyleft 2003-2021 - http://www.videolan.org/x264.html - options: cabac=1 ref=3 deblock=1:0:0 analyse=0x3:0x113 me=hex subme=7 psy=1 psy_rd=1.00:0.00 mixed_ref=1 me_range=16 chroma_me=1 trellis=1 8x8dct=1 cqm=0 deadzone=21,11 fast_pskip=1 chroma_qp_offset=-2 threads=12 lookahead_threads=2 sliced_threads=0 nr=0 decimate=1 interlaced=0 bluray_compat=0 constrained_intra=0 bframes=3 b_pyramid=2 b_adapt=1 b_bias=0 direct=1 weightb=1 open_gop=0 weightp=2 keyint=250 keyint_min=25 scenecut=40 intra_refresh=0 rc_lookahead=40 rc=crf mbtree=1 crf=23.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 ip_ratio=1.40 aq=1:1.00
Output #0, matroska, to 'pipe:':
Metadata:
title : KNS-224C
comment : http80 rtsp554 a0 ba0 pt0 rc2 rv2 ua2 tk3 vs3 vd3 pc0 sc0 af0
encoder : Lavf58.76.100
Stream #0:0: Video: h264 (H264 / 0x34363248), yuvj420p(pc, bt709, progressive), 1920x1080, q=2-31, 30.30 fps, 1k tbn
Metadata:
encoder : Lavc58.134.100 libx264
Side data:
cpb: bitrate max/min/avg: 0/0/0 buffer size: 0 vbv_delay: N/A
Input #0, matroska,webm, from 'pipe:': vq= 0KB sq= 0B f=0/0 /A speed= 0x
Metadata:
title : KNS-224C
COMMENT : http80 rtsp554 a0 ba0 pt0 rc2 rv2 ua2 tk3 vs3 vd3 pc0 sc0 af0
ENCODER : Lavf58.76.100
Duration: N/A, start: 0.000000, bitrate: N/A
Stream #0:0: Video: h264 (High), yuvj420p(pc, bt709, progressive), 1920x1080, 30.30 fps, 30.30 tbr, 1k tbn, 60.61 tbc (default)
Metadata:
ENCODER : Lavc58.134.100 libx264
我想知道为什么会这样?不应该在这两种情况下都应用硬件加速吗?
除此之外,我正在尝试创建视频马赛克,当在这样的命令中一起显示流时,性能问题变得非常明显:
$ ffmpeg -i rtsp://stream1 \
-i rtsp://stream2 \
-i rtsp://stream3 \
-filter_complex "[0:v] scale=960x540 [a0];
[1:v] scale=960x540 [a1];
[2:v] scale=960x540 [a2];
[a0][a1][a2] xstack=inputs=3:layout=0_0|0_h0|w0_0[out]" \
-map "[out]" -f matroska - | ffplay -
这比在 VLC 中尝试相同的马赛克要差得多。有什么我做错了吗?
我想指出,如果我同时使用 ffplay 独立流式传输所有源,它的性能非常好。

最佳答案

避免昂贵的压缩:

$ ffmpeg -i rtsp://stream1 \
-i rtsp://stream2 \
-i rtsp://stream3 \
-filter_complex "[0:v] scale=960x540 [a0];
[1:v] scale=960x540 [a1];
[2:v] scale=960x540 [a2];
[a0][a1][a2] xstack=inputs=3:layout=0_0|0_h0|w0_0[out]" \
-map "[out]" -c:v rawvideo -f nut - | ffplay -
更好的是,使用 ffplay (或 mpv )直接:
ffplay -autoexit -f lavfi "movie=rtsp\\\://stream1,scale=960x540[v1];movie=rtsp\\\://stream2,scale=960x540[v2];movie=rtsp\\\://stream3,scale=960x540[v3];[v0][v1][v2]xstack=inputs=3:layout=0_0|0_h0|w0_0[out0]"

关于video - 与 ffplay 和 VLC 相比,ffmpeg 性能不佳,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68824225/

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