发布:https://github.com/nareix/joy4/tree/master/examples/rtmp_publish 服务器:https://github.com/nareix/joy4/tree/master/examples/http_flv_and_rtmp_server 有了这个服务器, 我试图将 flv 数据发布到服务器但失败了。 // 等同于:ffmpeg -re -i projectindex.flv -c copy -f flv rtmp://localhost:1936/app/publish 使用命令 ffmpeg 时,它可以工作,但 rtmp_publish.go 不工作。 当我检查服务器端的登录时,发布打印 [接受] 的示例。 我似乎无法访问解析 URL 有没有人如何工作它?
执行服务器代码并执行发布代码。 当我测试 ffmpeg -re -i projectindex.flv -c copy -f flv rtmp://localhost:1936/app/publish 它有效。使用 vlc 播放器,我可以播放网络流。但是 rtmp_publish.go 代码不工作。 所以我试着打印日志。当使用 ffmpeg 命令发布时,它打印接受和解析 URL,但 rtmp_publish.go 不打印解析 URL。
我使用从
https://getsamplefiles.com/sample-video-files/flv下载的 flv 文件 (
sample-3.flv
) 进行了测试,并且 ffmpeg 和 rtmp_publish/main.go
都可以工作。你能用这个文件测试一下吗?
如果可以,那么很可能是你最初测试的flv文件中包含了包不支持的流。
我和
sample-3.flv
查过ffprobe
的资料:
$ ffprobe sample-3.flv
Input #0, flv, from 'sample-3.flv':
Metadata:
major_brand : isom
minor_version : 512
compatible_brands: isomiso2avc1mp41
encoder : Lavf56.15.102
Duration: 00:00:30.08, start: 0.000000, bitrate: 7836 kb/s
Stream #0:0: Video: h264 (Constrained Baseline), yuv420p(progressive), 1920x1080 [SAR 1:1 DAR 16:9], 8000 kb/s, 25 fps, 25 tbr, 1k tbn
你可以检查你的并将输出与上面的输出进行比较(但我不知道包支持或不支持什么)。
其他想运行示例的人注意事项:
首先,包的源代码不包含
go.mod
文件。在存储库的根目录创建一个:
$ go mod init github.com/nareix/joy4
http_flv_and_rtmp_server
默认监听端口 1935
。所以不换服务器就得换rtmp_publish/main.go
:
- file, _ := avutil.Open("projectindex.flv")
- conn, _ := rtmp.Dial("rtmp://localhost:1936/app/publish")
+ file, _ := avutil.Open("sample-3.flv")
+ conn, _ := rtmp.Dial("rtmp://localhost:1935/app/publish")
ffmpeg 命令应该是:
$ ffmpeg -re -i sample-3.flv -c copy -f flv rtmp://localhost:1935/app/publish
可以用
ffplay
播放流:
$ ffplay http://localhost:8089/app/publish
运行
sample-3.flv
或ffmpeg
时确保
go run rtmp_publish/main.go
在当前工作目录中