ffmpeg。输入过程结束时出现段错误

标签 ffmpeg katalon-studio

我使用带有katalon cli命令的xvfb-run在docker容器(ubuntu 16)内执行 Selenium 测试

xvfb-run --listen-tcp --server-num 44 --auth-file /tmp/xvfb.auth -s '-ac -screen 0 1024x768x24' katalon -browserType=Firefox -retry=0 -statusDelay=15 -testSuitePath=Test Suites/Full_cases -runMode=console -reportFolder=/katalon/report -projectPath=/katalon/project.prj &

和 ffmpeg 命令来录制视频
ffmpeg -y -f x11grab -video_size 1024x768 -i :44 -codec:v libx264 -r 12 /katalon/report/output_2.mp4

但是当 xvf-run 进程结束时,我有一个 ffmpeg 段错误错误。输出文件不保存。
ffmpeg version 2.8.15-0ubuntu0.16.04.1 Copyright (c) 2000-2018 the FFmpeg developers
  built with gcc 5.4.0 (Ubuntu 5.4.0-6ubuntu1~16.04.10) 20160609
  configuration: --prefix=/usr --extra-version=0ubuntu0.16.04.1 --build-suffix=-ffmpeg --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --cc=cc --cxx=g++ --enable-gpl --enable-shared --disable-stripping --disable-decoder=libopenjpeg --disable-decoder=libschroedinger --enable-avresample --enable-avisynth --enable-gnutls --enable-ladspa --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libmodplug --enable-libmp3lame --enable-libopenjpeg --enable-libopus --enable-libpulse --enable-librtmp --enable-libschroedinger --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx265 --enable-libxvid --enable-libzvbi --enable-openal --enable-opengl --enable-x11grab --enable-libdc1394 --enable-libiec61883 --enable-libzmq --enable-frei0r --enable-libx264 --enable-libopencv
  libavutil      54. 31.100 / 54. 31.100
  libavcodec     56. 60.100 / 56. 60.100
  libavformat    56. 40.101 / 56. 40.101
  libavdevice    56.  4.100 / 56.  4.100
  libavfilter     5. 40.101 /  5. 40.101
  libavresample   2.  1.  0 /  2.  1.  0
  libswscale      3.  1.101 /  3.  1.101
  libswresample   1.  2.101 /  1.  2.101
  libpostproc    53.  3.100 / 53.  3.100
Input #0, x11grab, from ':44':
  Duration: N/A, start: 1584962410.149890, bitrate: N/A
    Stream #0:0: Video: rawvideo (BGR[0] / 0x524742), bgr0, 1024x768, 29.97 fps, 29.97 tbr, 1000k tbn, 29.97 tbc
No pixel format specified, yuv444p for H.264 encoding chosen.
Use -pix_fmt yuv420p for compatibility with outdated media players.
[libx264 @ 0x15e1a80] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2 AVX FMA3 AVX2 LZCNT BMI2
[libx264 @ 0x15e1a80] profile High 4:4:4 Predictive, level 3.1, 4:4:4 8-bit
[libx264 @ 0x15e1a80] 264 - core 148 r2643 5c65704 - H.264/MPEG-4 AVC codec - Copyleft 2003-2015 - 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=4 threads=9 lookahead_threads=1 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=12 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, mp4, to '/katalon/katalon/report/behat_2.mp4':
  Metadata:
    encoder         : Lavf56.40.101
    Stream #0:0: Video: h264 (libx264) ([33][0][0][0] / 0x0021), yuv444p, 1024x768, q=-1--1, 12 fps, 12288 tbn, 12 tbc
    Metadata:
      encoder         : Lavc56.60.100 libx264
Stream mapping:
  Stream #0:0 -> #0:0 (rawvideo (native) -> h264 (libx264))
Press [q] to stop, [?] for help
Segmentation fault2 q=26.0 size=     548kB time=00:00:53.08 bitrate=  84.5kbits/s dup=1 drop=1033

我决定如何保存视频是在 xvfb 运行结束之前发送“q”关键字,但这很不舒服

最佳答案

在 xvfb session 结束之前停止 ffmpeg

如与 kill $(pgrep ffmpeg) .

或者使用更强大的视频和容器格式

ffmpeg -y -f x11grab -video_size 1024x768 -framerate 12 -i :44 -c:v ffv1 /katalon/report/output_2.nut

注意 -framerate 的用法x11grab输入选项而不是 -r输出选项,以避免将 29.97 fps(默认 -framerate 省略)转换为 12 fps。

然后重新编码:
ffmpeg -i /katalon/report/output_2.nut -c:v libx264 -vf format=yuv420p -crf 18 /report/output_2.mp4

关于ffmpeg。输入过程结束时出现段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60818983/

相关文章:

video - 使用 FFmpeg 进行 H.264 转换(来自 RTP 流)

katalon-studio - 如何在 Katalon Studio 中验证元素的值是否不为空

jquery - 卡塔隆 : Unable to click on object: Web element with id not found

video - ffmpeg:如何同时使用翻转、连接和加速多个视频?

php - 使用 PHP 更改 ffmpeg 快照文件名

ffmpeg - 如何将这两个命令组合成一个命令?

ffmpeg - HTML5 Progressive Streaming -- 无后续范围请求

testing - Katalon studio - 只允许本地连接 - 终端问题

selenium - 创建测试 Web 应用程序重播以测试并预热服务器

java - 使用列表/字符串单击并下拉值