在 YouTube 直播中,FFMPEG 转换随机失败

发布于 2025-01-15 14:16:21 字数 5288 浏览 0 评论 0原文

我正在arm64上使用ubuntu服务器运行bash脚本,将视频和音频实时流式传输到youtube,下面的脚本

FFMPEG是ubuntu存储库中可用的最新版本

#! /bin/bash

VBR="8000k"
FPS="24"
QUAL="superfast"

YOUTUBE_URL="rtmp://a.rtmp.youtube.com/live2"
KEY="****"

VIDEO_SOURCE="/mnt/disk1/test/****"

AUDIO_SOURCE="****"

ffmpeg \
    -re -f lavfi -i "movie=filename=$VIDEO_SOURCE:loop=0, setpts=N/(FRAME_RATE*TB)" \
    -thread_queue_size 512 -i "$AUDIO_SOURCE" \
    -map 0:v:0 -map 1:a:0 \
    -map_metadata:g 1:g \
    -vcodec libx264 -pix_fmt yuv420p -preset $QUAL -r $FPS -g $(($FPS * 2)) -b:v $VBR \
    -acodec libmp3lame -ar 44100 -threads 4 -qscale:v 3 -b:a 320000 -bufsize 512k \
    -report -loglevel fatal -nostats  \
    -f flv "$YOUTUBE_URL/$KEY"

流工作正常,但是在看似随机的一段时间之后,我得到 转换失败错误

流式传输 64 小时后首先出现 直播 12 小时后的第二次 第三个经过 8 小时的流传输后,

服务器本身很好,CPU 和内存使用率极低,并且没有出现任何峰值,

从错误日志来看,我可以猜测该错误与 libx264 有关,尽管我真的不知道。经过一些关于下一步该做什么的指导后尝试。这是 ffmpeg 日志报告的尾部

[libx264 @ 0xaaab23ad3e30] frame=1351975 QP=16.89 NAL=2 Slice:P Poc:14  I:6461 P:1224 SKIP:475  size=26602 bytes
av_interleaved_write_frame(): Broken pipe
No more output streams to write to, finishing.
[libx264 @ 0xaaab23ad3e30] frame=1351976 QP=17.90 NAL=2 Slice:B Poc:10  I:2395 P:3322 SKIP:2443 size=20127 bytes
[libx264 @ 0xaaab23ad3e30] frame=1351977 QP=17.89 NAL=0 Slice:B Poc:12  I:1848 P:3235 SKIP:3077 size=17313 bytes
[libx264 @ 0xaaab23ad3e30] frame=1351978 QP=15.65 NAL=2 Slice:P Poc:22  I:6458 P:1171 SKIP:531  size=26073 bytes
[libx264 @ 0xaaab23ad3e30] frame=1351979 QP=17.19 NAL=2 Slice:B Poc:18  I:2766 P:3514 SKIP:1880 size=19633 bytes
[libx264 @ 0xaaab23ad3e30] frame=1351980 QP=18.35 NAL=0 Slice:B Poc:16  I:1233 P:2876 SKIP:4051 size=11769 bytes
[libx264 @ 0xaaab23ad3e30] frame=1351981 QP=17.28 NAL=0 Slice:B Poc:20  I:822  P:3197 SKIP:4141 size=10699 bytes
[libx264 @ 0xaaab23ad3e30] frame=1351982 QP=17.08 NAL=2 Slice:P Poc:30  I:6351 P:1443 SKIP:366  size=29120 bytes
[libx264 @ 0xaaab23ad3e30] frame=1351983 QP=17.29 NAL=2 Slice:B Poc:26  I:2060 P:4211 SKIP:1889 size=18465 bytes
[libx264 @ 0xaaab23ad3e30] frame=1351984 QP=18.00 NAL=0 Slice:B Poc:24  I:472  P:3225 SKIP:4463 size=8893 bytes
[libx264 @ 0xaaab23ad3e30] frame=1351985 QP=17.98 NAL=0 Slice:B Poc:28  I:1339 P:3681 SKIP:3140 size=13378 bytes
[libx264 @ 0xaaab23ad3e30] frame=1351986 QP=15.57 NAL=2 Slice:P Poc:32  I:6270 P:1584 SKIP:306  size=33703 bytes
av_interleaved_write_frame(): Broken pipe
[libmp3lame @ 0xaaab23ac06f0] Trying to remove 47 more samples than there are in the queue
[flv @ 0xaaab23ad2ff0] Failed to update header with correct duration.
[flv @ 0xaaab23ad2ff0] Failed to update header with correct filesize.
Error writing trailer of rtmp://a.rtmp.youtube.com/live2/****: Broken pipe
frame=1351987 fps= 24 q=22.0 Lsize=37296521kB time=15:38:52.22 bitrate=5423.8kbits/s dup=0 drop=56332 speed=   1x    
video:35035969kB audio:2200479kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.161329%
Input file #0 (movie=filename=/mnt/disk1/test/****.mp4:loop=0, setpts=N/(FRAME_RATE*TB)):
  Input stream #0:0 (video): 1408319 packets read (4380435417600 bytes); 1408319 frames decoded; 
  Total: 1408319 packets (4380435417600 bytes) demuxed
Input file #1 (https://****.mp3):
  Input stream #1:0 (audio): 2156470 packets read (901316441 bytes); 2156470 frames decoded (2484253440 samples); 
  Total: 2156470 packets (901316441 bytes) demuxed
Output file #0 (rtmp://a.rtmp.youtube.com/live2/****):
  Output stream #0:0 (video): 1351987 frames encoded; 1351976 packets muxed (35876832486 bytes); 
  Output stream #0:1 (audio): 2156470 frames encoded (2484253440 samples); 2156469 packets muxed (2253290057 bytes); 
  Total: 3508445 packets (38130122543 bytes) muxed
3564789 frames successfully decoded, 0 decoding errors
[AVIOContext @ 0xaaab23ac4ef0] Statistics: 0 seeks, 3823215 writeouts
[rtmp @ 0xaaab23dab6a0] UnPublishing stream...
[rtmp @ 0xaaab23dab6a0] Deleting stream...
[libx264 @ 0xaaab23ad3e30] frame I:53166 Avg QP:16.31  size: 39514
[libx264 @ 0xaaab23ad3e30] frame P:500115 Avg QP:17.79  size: 32831
[libx264 @ 0xaaab23ad3e30] frame B:798706 Avg QP:19.67  size: 21732
[libx264 @ 0xaaab23ad3e30] consecutive B-frames: 13.9% 15.2% 20.2% 50.7%
[libx264 @ 0xaaab23ad3e30] mb I  I16..4: 45.9% 44.7%  9.4%
[libx264 @ 0xaaab23ad3e30] mb P  I16..4: 40.6% 37.1%  2.2%  P16..4: 16.5%  0.0%  0.0%  0.0%  0.0%    skip: 3.7%
[libx264 @ 0xaaab23ad3e30] mb B  I16..4: 16.3% 16.2%  0.2%  B16..8: 25.0%  0.0%  0.0%  direct:19.7%  skip:22.5%  L0:48.7% L1:48.4% BI: 2.9%
[libx264 @ 0xaaab23ad3e30] 8x8 transform intra:47.5% inter:31.9%
[libx264 @ 0xaaab23ad3e30] coded y,uvDC,uvAC intra: 15.8% 78.7% 25.0% inter: 2.0% 60.3% 1.8%
[libx264 @ 0xaaab23ad3e30] i16 v,h,dc,p: 50% 20%  9% 21%
[libx264 @ 0xaaab23ad3e30] i8 v,h,dc,ddl,ddr,vr,hd,vl,hu: 19% 16% 31%  4%  7%  5%  5%  6%  6%
[libx264 @ 0xaaab23ad3e30] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 36% 20% 33%  2%  2%  2%  1%  2%  2%
[libx264 @ 0xaaab23ad3e30] i8c dc,h,v,p: 29% 18% 18% 35%
[libx264 @ 0xaaab23ad3e30] Weighted P-Frames: Y:3.0% UV:2.2%
[libx264 @ 0xaaab23ad3e30] kb/s:5095.01
[AVIOContext @ 0xaaab22460eb0] Statistics: 42281852862 bytes read, 2731 seeks
[AVIOContext @ 0xaaab23ac4de0] Statistics: 901390389 bytes read, 0 seeks
Conversion failed!

I am running a bash script using ubuntu server on arm64 that live streams video and audio to youtube, heres the script below

FFMPEG is the lateset version available in the ubuntu repo

#! /bin/bash

VBR="8000k"
FPS="24"
QUAL="superfast"

YOUTUBE_URL="rtmp://a.rtmp.youtube.com/live2"
KEY="****"

VIDEO_SOURCE="/mnt/disk1/test/****"

AUDIO_SOURCE="****"

ffmpeg \
    -re -f lavfi -i "movie=filename=$VIDEO_SOURCE:loop=0, setpts=N/(FRAME_RATE*TB)" \
    -thread_queue_size 512 -i "$AUDIO_SOURCE" \
    -map 0:v:0 -map 1:a:0 \
    -map_metadata:g 1:g \
    -vcodec libx264 -pix_fmt yuv420p -preset $QUAL -r $FPS -g $(($FPS * 2)) -b:v $VBR \
    -acodec libmp3lame -ar 44100 -threads 4 -qscale:v 3 -b:a 320000 -bufsize 512k \
    -report -loglevel fatal -nostats  \
    -f flv "$YOUTUBE_URL/$KEY"

The stream works fine, however after a seemingly random period of time, I get a conversion failed error

first after 64 hours of streaming
second after 12 hours of streaming
third after 8 hours of streaming

The server itsef is fine cpu and memory usage are extremly low and there are no spikes

from what i can guess the error has something to do with libx264 judging by the error logs, although I do not really know. After some guidance on what to do try next. Here is the tail end of the ffmpeg log report

[libx264 @ 0xaaab23ad3e30] frame=1351975 QP=16.89 NAL=2 Slice:P Poc:14  I:6461 P:1224 SKIP:475  size=26602 bytes
av_interleaved_write_frame(): Broken pipe
No more output streams to write to, finishing.
[libx264 @ 0xaaab23ad3e30] frame=1351976 QP=17.90 NAL=2 Slice:B Poc:10  I:2395 P:3322 SKIP:2443 size=20127 bytes
[libx264 @ 0xaaab23ad3e30] frame=1351977 QP=17.89 NAL=0 Slice:B Poc:12  I:1848 P:3235 SKIP:3077 size=17313 bytes
[libx264 @ 0xaaab23ad3e30] frame=1351978 QP=15.65 NAL=2 Slice:P Poc:22  I:6458 P:1171 SKIP:531  size=26073 bytes
[libx264 @ 0xaaab23ad3e30] frame=1351979 QP=17.19 NAL=2 Slice:B Poc:18  I:2766 P:3514 SKIP:1880 size=19633 bytes
[libx264 @ 0xaaab23ad3e30] frame=1351980 QP=18.35 NAL=0 Slice:B Poc:16  I:1233 P:2876 SKIP:4051 size=11769 bytes
[libx264 @ 0xaaab23ad3e30] frame=1351981 QP=17.28 NAL=0 Slice:B Poc:20  I:822  P:3197 SKIP:4141 size=10699 bytes
[libx264 @ 0xaaab23ad3e30] frame=1351982 QP=17.08 NAL=2 Slice:P Poc:30  I:6351 P:1443 SKIP:366  size=29120 bytes
[libx264 @ 0xaaab23ad3e30] frame=1351983 QP=17.29 NAL=2 Slice:B Poc:26  I:2060 P:4211 SKIP:1889 size=18465 bytes
[libx264 @ 0xaaab23ad3e30] frame=1351984 QP=18.00 NAL=0 Slice:B Poc:24  I:472  P:3225 SKIP:4463 size=8893 bytes
[libx264 @ 0xaaab23ad3e30] frame=1351985 QP=17.98 NAL=0 Slice:B Poc:28  I:1339 P:3681 SKIP:3140 size=13378 bytes
[libx264 @ 0xaaab23ad3e30] frame=1351986 QP=15.57 NAL=2 Slice:P Poc:32  I:6270 P:1584 SKIP:306  size=33703 bytes
av_interleaved_write_frame(): Broken pipe
[libmp3lame @ 0xaaab23ac06f0] Trying to remove 47 more samples than there are in the queue
[flv @ 0xaaab23ad2ff0] Failed to update header with correct duration.
[flv @ 0xaaab23ad2ff0] Failed to update header with correct filesize.
Error writing trailer of rtmp://a.rtmp.youtube.com/live2/****: Broken pipe
frame=1351987 fps= 24 q=22.0 Lsize=37296521kB time=15:38:52.22 bitrate=5423.8kbits/s dup=0 drop=56332 speed=   1x    
video:35035969kB audio:2200479kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.161329%
Input file #0 (movie=filename=/mnt/disk1/test/****.mp4:loop=0, setpts=N/(FRAME_RATE*TB)):
  Input stream #0:0 (video): 1408319 packets read (4380435417600 bytes); 1408319 frames decoded; 
  Total: 1408319 packets (4380435417600 bytes) demuxed
Input file #1 (https://****.mp3):
  Input stream #1:0 (audio): 2156470 packets read (901316441 bytes); 2156470 frames decoded (2484253440 samples); 
  Total: 2156470 packets (901316441 bytes) demuxed
Output file #0 (rtmp://a.rtmp.youtube.com/live2/****):
  Output stream #0:0 (video): 1351987 frames encoded; 1351976 packets muxed (35876832486 bytes); 
  Output stream #0:1 (audio): 2156470 frames encoded (2484253440 samples); 2156469 packets muxed (2253290057 bytes); 
  Total: 3508445 packets (38130122543 bytes) muxed
3564789 frames successfully decoded, 0 decoding errors
[AVIOContext @ 0xaaab23ac4ef0] Statistics: 0 seeks, 3823215 writeouts
[rtmp @ 0xaaab23dab6a0] UnPublishing stream...
[rtmp @ 0xaaab23dab6a0] Deleting stream...
[libx264 @ 0xaaab23ad3e30] frame I:53166 Avg QP:16.31  size: 39514
[libx264 @ 0xaaab23ad3e30] frame P:500115 Avg QP:17.79  size: 32831
[libx264 @ 0xaaab23ad3e30] frame B:798706 Avg QP:19.67  size: 21732
[libx264 @ 0xaaab23ad3e30] consecutive B-frames: 13.9% 15.2% 20.2% 50.7%
[libx264 @ 0xaaab23ad3e30] mb I  I16..4: 45.9% 44.7%  9.4%
[libx264 @ 0xaaab23ad3e30] mb P  I16..4: 40.6% 37.1%  2.2%  P16..4: 16.5%  0.0%  0.0%  0.0%  0.0%    skip: 3.7%
[libx264 @ 0xaaab23ad3e30] mb B  I16..4: 16.3% 16.2%  0.2%  B16..8: 25.0%  0.0%  0.0%  direct:19.7%  skip:22.5%  L0:48.7% L1:48.4% BI: 2.9%
[libx264 @ 0xaaab23ad3e30] 8x8 transform intra:47.5% inter:31.9%
[libx264 @ 0xaaab23ad3e30] coded y,uvDC,uvAC intra: 15.8% 78.7% 25.0% inter: 2.0% 60.3% 1.8%
[libx264 @ 0xaaab23ad3e30] i16 v,h,dc,p: 50% 20%  9% 21%
[libx264 @ 0xaaab23ad3e30] i8 v,h,dc,ddl,ddr,vr,hd,vl,hu: 19% 16% 31%  4%  7%  5%  5%  6%  6%
[libx264 @ 0xaaab23ad3e30] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 36% 20% 33%  2%  2%  2%  1%  2%  2%
[libx264 @ 0xaaab23ad3e30] i8c dc,h,v,p: 29% 18% 18% 35%
[libx264 @ 0xaaab23ad3e30] Weighted P-Frames: Y:3.0% UV:2.2%
[libx264 @ 0xaaab23ad3e30] kb/s:5095.01
[AVIOContext @ 0xaaab22460eb0] Statistics: 42281852862 bytes read, 2731 seeks
[AVIOContext @ 0xaaab23ac4de0] Statistics: 901390389 bytes read, 0 seeks
Conversion failed!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文