我正在尝试将实时rtmp流转换为hls流实时.
读完后我有点想法
我能够将实时rtmp流转换为hls但不能在运行时转换.当我运行命令并测试任何hsl文件(.m3u8和.ts)时,我无法看到,但是当我中断命令并检查那里时,我根据需要获取了hls文件.
我在谷歌搜索解决方案,但无法得到正确的答案.
有谁能够帮我?
提前致谢...
use*_*376 70
这是使用任何输入文件或流的HLS流的简短指南:
我遵循user1390208的方法,所以我只使用FFMPEG来生成rtmp流,然后我的服务器接收它以提供HLS.而不是Unreal/Wowza/Adobe,我使用免费服务器nginx和rtmp模块,这很容易设置.这就是我简单的做法:Any input file or stream -> ffmpeg -> rtmp -> nginx server -> HLS -> Client或更详细:
输入视频文件或流(http,rtmp,等等) - > ffmpeg将实时代码转换为x.264 + aac,输出到rtmp - > nginx获取rtmp并向用户(客户端)提供HLS.因此,在客户端,您可以使用VLC或其他任何东西,并连接到由nginx提供的.m3u8文件.
这是我使用ffmpeg将输入文件转码为rtmp的方式:
ffmpeg -re -i mydirectory/myfile.mkv -c:v libx264 -b:v 5M -pix_fmt yuv420p -c:a:0 libfdk_aac -b:a:0 480k -f flv rtmp://localhost:12345/hls/mystream;
Run Code Online (Sandbox Code Playgroud)
(.mkv是1080p,5.1声音,根据你的输入,你应该使用较低的比特率!)
你从哪里得到rtmp流?
任何带有流Y的服务器X?然后你必须将ffmpeg命令更改为:
ffmpeg -re -i rtmp://theServerX/yourStreamY -c:v libx264 -b:v 5M -pix_fmt yuv420p -c:a:0 libfdk_aac -b:a:0 480k -f flv rtmp://localhost:12345/hls/mystream;
Run Code Online (Sandbox Code Playgroud)
或者如果您的rtmp流已经是h.264/aac编码,您可以尝试使用copyffmpeg中的选项将内容直接流式传输到nginx.
正如您在我的nginx配置文件中看到的:
rtmp://localhost:12345/hls/mystream;location /hls.这意味着在VLC中我可以连接http://myServer:80/hls/mystream.m3u8以访问HLS流. 一切都清楚了吗?快乐流媒体!
Sum*_*and 21
尝试使用此RTMP到HLS命令行设置:
ffmpeg -v verbose -i rtmp://<host>:<port>/<stream> -c:v libx264 -c:a aac -ac 1 -strict -2 -crf 18 -profile:v baseline -maxrate 400k -bufsize 1835k -pix_fmt yuv420p -flags -global_header -hls_time 10 -hls_list_size 6 -hls_wrap 10 -start_number 1 <pathToFolderYouWantTo>/<streamName>.m3u8
Run Code Online (Sandbox Code Playgroud)
HLS提要可能会有一些延迟.但是,它会起作用.