FFMPEG - RTMP到HLS无音频输出



我目前正在为我们的直播摄像头应用程序开发一个动态HLS分段器。因此,我捕获外部RTMP流并将其转换为带有ffmpeg的段。

以下命令有效:

ffmpeg -i rtmp://"$serverip"/"$application"/mp4:"$stream_name".f4v -c:v libx264 -profile:v baseline -level 5.1 
-c:a aac -strict experimental -flags +global_header -f mpegts - | ffmpeg -i - -c copy -map 0 -f segment 
-segment_list /tmp/hls/"$id"/"$stream_name".m3u8 -segment_format libmp3lame -segment_time 10 
-segment_wrap 4 /tmp/hls/"$id"/"$stream_name"%03d.ts

但是使用此命令,我在直播和 HLS 输出之间确实存在巨大的延迟(大约 1-2 分钟!

所以我尝试了另一个命令,导致 20-30 秒的延迟!我唯一的问题是,音频流无法识别,也没有放入 HLS 文件(意味着我只获得了视频,但根本没有音频(:

ffmpeg -probesize 50k -i rtmp://"$serverip"/"$application"/mp4:"$stream_name".f4v 
-c:v libx264 -b:v 128k -g 90 -c:a aac -strict experimental -flags -global_header -map 0 
-f segment -segment_time 3 -segment_list /tmp/hls/"$id"/"$stream_name".m3u8 -segment_list_flags +live 
-segment_list_type m3u8 -segment_list_size 5 -segment_format mpegts /tmp/hls/"$id"/"$stream_name"%d.ts

我想,-c:a aac 标志也应该完成音频复用的工作。

你有什么建议第二个命令出了什么问题吗?我肯定也必须隔离音频流!

提前致谢

更新:

FFMPEG 命令的一些输出:

我启动了命令 (2( 一个,并得到了音频输出,但它似乎每次都不起作用。

工作命令2的输出,音频正在工作:http://pastebin.com/bhxfNQBg

工作

命令 2 的输出,音频不工作(没有任何变化(:http://pastebin.com/engEuSdn

对我来说奇怪的是,这句话:

[flv @ 0x1eed900] New audio stream 0:1 at pos:716680 and DTS:0s

仅当 hls 端的音频无法正常工作时,才会发生这种情况。

任何帮助将不胜感激

更新 2:
当我在流已经发布后启动 ffmpeg 命令时似乎有问题。
如果我按照以下步骤操作,一切正常:
1. 启动流(已建立与 AMS 的 nc 连接(
2. 启动 FFMPEG 命令(它将空闲,直到流发布(
3. 开始发布

但是如果我这样做(我们需要(,则不会出现音频:
1. 开始流
2. 用户加入,开始发布
3. 触发 ffmpeg 命令

因为越来越多的人必须实现HLS功能,所以我很快就想发布我对我的起源问题的"答案"。

我发现,问题必须与探头有关。

正如您在文档中看到的,探测器定义了 ffmpeg 在开始分段之前等待流信息的时间。

在正在运行的实时流中,我必须将其设置为 1000k 左右才能正确获取音频流。

没有一切都按预期工作。但请注意,探测大小越大,延迟越大!

相关内容

  • 没有找到相关文章

最新更新