Go2X
发布于 2025-08-13 / 1 阅读
0
0

如何将Youtube直播频道转换为m3u直播源

所需工具:

MediaMTX(媒体服务器,比SRS等简单且强大好用)
https://github.com/bluenviron/mediamtx

yt-dlp(用于解析和下载Youtube视频流的工具)

https://github.com/yt-dlp/yt-dlp

FFmpge(强大的串流,转码工具)

https://ffmpeg.org

以及用于安装、运行上述工具的服务器,或Nas、主机等。

总体方法:

以yt-dlp解析Youtube直播视频的动态地址,并实时传送至FFmpeg进行串流或转码,由FFmpeg推流至媒体服务器MediaMTX。客户端通过m3u的直播地址从MediaMTX读取视频进行观看。

经过大量测试可稳定运行的mediamtx.yml配置举例:

runOnDemandStartTimeout: 20s

paths:

ifeng:

runOnDemand: sh -c 'yt-dlp -f 96 -g "https://www.youtube.com/watch?v=BLaQVW5oUGU" | xargs -I {} ffmpeg -re -fflags +genpts -rw_timeout 15000000 -timeout 15000000 -reconnect 1 -reconnect_streamed 1 -reconnect_delay_max 5 -hwaccel vaapi -vaapi_device /dev/dri/renderD128 -i "{}" -vf "format=nv12,hwupload,scale_vaapi=w=1920:h=1088" -c:v hevc_vaapi -b:v 3500k -maxrate 4000k -bufsize 8000k -g 30 -keyint_min 30 -c:a aac -ar 44100 -b:a 128k -fflags nobuffer -flags low_delay -f rtsp -rtsp_transport tcp rtsp://127.0.0.1:8554/ifeng'

runOnDemandRestart: yes

播放地址为 http://服务器IP:8888/频道名称/index.m3u8

这里进行了转码与硬件加速配置,主要目的是为了兼容TV端,否则由于安卓TV播放软件的限制,视频会卡住。

如果不转码,可以使用如下简单配置,无需额外CPU/GPU资源,但TV端会无法正常流畅播放。

paths:

ifeng:

runOnDemand: sh -c 'yt-dlp -f 96 -g "https://www.youtube.com/watch?v=BLaQVW5oUGU" | xargs -I {} ffmpeg -re -i "{}" -c copy -f flv rtmp://127.0.0.1:1935/ifeng'

runOnDemandRestart: yes


评论