Node-Media-Server
Node-Media-Server copied to clipboard
转 HLS/DASH 直播流 使用验证的 m3u8地址如何使用?
http://ip:8000/live/zhibo.m3u8?sign=1873067467-030086ab5a32d97620445c7397e5b880
这样播放不了。
rtmp://ip/live/zhibo?sign=1873067467-030086ab5a32d97620445c7397e5b880
可以播放
我的app.js
const NodeMediaServer = require('node-media-server');
const config = { rtmp: { port: 1935, chunk_size: 60000, gop_cache: true, ping: 30, ping_timeout: 60 }, http: { port: 8000, mediaroot: './media', allow_origin: '*' }, auth: { api : true, api_user: 'admin', api_pass: 'adminadmin', play: true, publish: true, secret: 'year2019@888' } , trans: { ffmpeg: 'C:\Program Files\ffmpeg\ffmpeg.exe', tasks: [ { app: 'live', ac: 'aac', hls: true, hlsFlags: '[hls_time=2:hls_list_size=3:hls_flags=delete_segments]', dash: true, dashFlags: '[f=dash:window_size=3:extra_window_size=5]' } ] } };
var nms = new NodeMediaServer(config) nms.run();
========================================= ffmpeg路径正确,不知道是不是m3u8地址的问题
播放地址搞错了吧?rtmp的播放地址没有问题,其实就是你的推流地址 hls应该为:http://ip:8000/live/zhibo/index.m3u8?sign=1873067467-030086ab5a32d97620445c7397e5b880 dash为:http://ip:8000/live/zhibo/index.mpd?sign=1873067467-030086ab5a32d97620445c7397e5b880
播放地址搞错了吧?rtmp的播放地址没有问题,其实就是你的推流地址 hls应该为:http://ip:8000/live/zhibo/index.m3u8?sign=1873067467-030086ab5a32d97620445c7397e5b880 dash为:http://ip:8000/live/zhibo/index.mpd?sign=1873067467-030086ab5a32d97620445c7397e5b880
换了这个地址还是不存在。
看源码好像是没有获取到你配置的ffmpeg的版本信息,你发的第二张图片中,是判断ffmpeg版本的时候,version是undefined,它这个程序要求ffmpeg的版本大于4.0.0,你看一下这个你安装的ffmpeg版本号是多少
看源码好像是没有获取到你配置的ffmpeg的版本信息,你发的第二张图片中,是判断ffmpeg版本的时候,version是undefined,它这个程序要求ffmpeg的版本大于4.0.0,你看一下这个你安装的ffmpeg版本号是多少
感谢你的回复,版本号是:4.0以上的吧
你使用命令的方式调用一下ffmpeg -v 看一下呢,我这里下载的是ffmpeg 4.2.1,运行的时候没有报你的那个version错误,但是hls还是没有生产出来,只看到创建了live/zhibo/ 这个路径,但是zhibo下面的index.m3u8及对应的ts切片没有创建出来,我尝试改一下hlsFlags的命令参数试试
你的问题已经找到了原因了,你的app.js里面配置ffmpeg路径要写为:
ffmpeg: 'C:/Program Files/ffmpeg/ffmpeg.exe'
如果你想要在windows环境下能播放m3u8地址,那么需要在node_trans_seesion.js的run方法中:
let ouPath =
${this.conf.mediaroot}/${this.conf.streamApp}/${this.conf.streamName};
这句下面添加一行:
ouPath = ouPath.replace(/\\/g, "/");
希望能帮到你
你的问题已经找到了原因了,你的app.js里面配置ffmpeg路径要写为:
ffmpeg: 'C:/Program Files/ffmpeg/ffmpeg.exe'
如果你想要在windows环境下能播放m3u8地址,那么需要在node_trans_seesion.js的run方法中:let ouPath =
${this.conf.mediaroot}/${this.conf.streamApp}/${this.conf.streamName};
这句下面添加一行:ouPath = ouPath.replace(/\\/g, "/");
希望能帮到你
感谢你的回复和帮助,但是我在app.js修改了,还是不行。
node_trans_seesion.js文件在哪里的?搜索了一下找不到。
这个地方,你要确保你推的视频流编码为h264编码,音频的编码要确保为aac
比如你的这个服务的IP地址为172.16.5.100,开放了至少两个端口:http的为8000,https的为8443,RTMP的为1935,那么你推RTMP的时候,命令就为:ffmpeg -re -i yourMediaFile -acodec mp3 -vcodec libx264 -f flv rtmp://172.16.5.100:1935/live/zhibo
或者说你不能保证外部推流的视频和音频编码为我们想要的,那么我们可以在这个服务进行切片时指定视频和音频的编码,我这儿给你一个app.js的示例配置,可以保证m3u8出去的视频编码为h264,音频为aac
trans: {
ffmpeg:'F:/tools/ffmpeg-441/bin/ffmpeg.exe',
tasks:[
{
app: 'live',
ac: 'mp3',
vc: 'libx264',
hls: true,
hlsFlags:'[f=hls:hls_time=2:hls_list_size=3:hls_flags=delete_segments]',
dash: false,
dashFlags: '[f=dash:window_size=3:extra_window_size=5]'
}
]
}
或者说你不能保证外部推流的视频和音频编码为我们想要的,那么我们可以在这个服务进行切片时指定视频和音频的编码,我这儿给你一个app.js的示例配置,可以保证m3u8出去的视频编码为h264,音频为aac
trans: { ffmpeg:'F:/tools/ffmpeg-441/bin/ffmpeg.exe', tasks:[ { app: 'live', ac: 'mp3', vc: 'libx264', hls: true, hlsFlags:'[f=hls:hls_time=2:hls_list_size=3:hls_flags=delete_segments]', dash: false, dashFlags: '[f=dash:window_size=3:extra_window_size=5]' } ] }
再次感谢你的帮助,还是不行,可以加一下我的Q:261735959吗?谢谢
已经添加你好友了,你要升级一下最新的代码,你当前使用的这个版本不是它最新的版本
已经添加你好友了,你要升级一下最新的代码,你当前使用的这个版本不是它最新的版本
经过chenypgg的远程帮助终于解决了,谢谢。(^_^)
两个地方,一是你的ffmpeg运行版本信息得到的字符串这个node-media-server它解析要出问题
二一个是你的nodeMedia不是最新版本
我把ffmpeg和nodeMediaServer都给你换成了可用的