如何使用 ffmpeg 将复杂的视频流式传输到 YouTube?

如何使用 ffmpeg 将复杂的视频流式传输到 YouTube?

我有一段视频,想用 ffmpeg 在 YouTube 上直播。这段视频没有音频,但画面相当杂乱(大量快速变化的颜色)。我尝试以 720p 分辨率进行直播,但每次观看直播时,画面都不流畅。有很多卡顿和缓冲。但是,直播结束后,我观看不再直播的视频,所有帧都清晰流畅。

这让我最初以为我只是在观看直播时遇到了问题,但我在观看其他 720p 或更高分辨率的直播时没有遇到任何问题。此外,在播放视频的复杂部分时,ffmpeg“time=...”会变慢,比特率会急剧上升,并且 fps 也会下降。

这让我相信问题出在我用来发送它的 ffmpeg 命令上。当我使用相同的命令发送更简单的视频(全白带黑框)时,我没有遇到任何问题。

这是我的 ffmpeg 脚本:

INPUT=""
# Read input as native framerate
INPUT="$INPUT -re"
# Input file
INPUT="$INPUT -i input.flv"

AUDIO=""
# Read input as native framerate
AUDIO="$AUDIO -re"
# Audio codec (lavfi is better for bandwidth?)
AUDIO="$AUDIO -f lavfi"
# Input (dummy)
AUDIO="$AUDIO -i aevalsrc=0"

OUTPUT=""
# Video codec
OUTPUT="$OUTPUT -c:v libx264"
# Video resolution
OUTPUT="$OUTPUT -video_size 1280x720"
# Pixel format
#OUTPUT="$OUTPUT -pix_fmt yuv420p"
# Attempt to force bitrate at 1500k
OUTPUT="$OUTPUT -minrate 150k -maxrate 150k -b:v 150k"
# frames per second
OUTPUT="$OUTPUT -r 25"
# Audio codec
OUTPUT="$OUTPUT -c:a libvo_aacenc"
# GOP size (calculates intraframes)
OUTPUT="$OUTPUT -g 30"
# Format
OUTPUT="$OUTPUT -f flv"
# Allow use of "experimental" encoders
OUTPUT="$OUTPUT -strict experimental"
# Testing
OUTPUT="$OUTPUT rtmp://a.rtmp.youtube.com/live2/xxx"

是否可以使用 ffmpeg 发送这种无需缓冲的视频?

相关内容