【问题标题】:ffmpeg infinite streaming of audio and video using rtmpffmpeg 使用 rtmp 无限流式传输音频和视频
【发布时间】:2020-01-03 21:11:38
【问题描述】:

我正在尝试制作一个包含无限循环 video.mp4(10 秒长)和无限循环 audio.flac(4 小时长)从我的 VPS 流式传输的 Youtube 广播。这些音频和视频流不需要同步。

我尝试使用 FFMPEG,它运行良好,直到我尝试使流循环播放

ffmpeg -f concat -i video.txt \
-f concat -i audio.txt \
-c:a aac \
-s 1920x1080 \
-ab 256k \
-b:v 2500k \
-q:v 3 \
-preset veryfast \
-vcodec libx264 \
-pix_fmt yuv240p \
-maxrate 1024k \
-bufsize 048k \
-framerate 4 \
-threads 2 \
-f flv \
"$YOUTUBE_URL/$KEY"

(audio.txt 分别包含 10000 行相同的 'file audio.flac', video.txt 'file video.mp4') “concat”过滤器留下了一些可怕的故障,导致我的流(音频和视频)经常向前滚动 10 秒左右。 我也尝试了“-stream_loop”标志,但它不适用于多个输入流。

【问题讨论】:

  • 尝试 ffmpeg 4.1 或更新版本。 -stream_loop 适用于多个文件。

标签: ffmpeg youtube video-streaming audio-streaming rtmp


【解决方案1】:

您需要有某种播放列表来告诉流播放什么。您可以使用 Liquidsoap 来执行此操作:

这里是一个ffmpeg和liquidsoap的例子:

set("frame.video.width", 1280)
set("frame.video.height", 720)
set("frame.video.samplerate", 25)
set("gstreamer.add_borders", false)

s = playlist.safe("playlist.pls",reload_mode="watch") 

s = fallback([s, blank()])


  output.gstreamer.audio_video(
  video_pipeline=
    "videoconvert ! x264enc bitrate=2000 ! video/x-h264,profile=baseline ! queue ! mux.",
  audio_pipeline=
    "audioconvert ! voaacenc bitrate=128000 ! queue ! mux.",
  pipeline=
    "flvmux name=mux ! rtmpsink location=\"rtmp://[YOUR_IP]:1935/example/live live=1\"",
  s)

以下是您需要采取的完整步骤:

https://github.com/fyroc/RTMP-Playlist

在您的情况下,只需将单个文件添加到播放列表文件中,它就会循环播放。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-04-27
    • 2013-01-11
    • 2012-11-06
    • 1970-01-01
    • 2011-12-21
    • 2011-09-30
    • 2020-10-27
    • 2016-02-26
    相关资源
    最近更新 更多