HLS点播 FFmpeg udp视频流

HLS点播--FFmpeg接收udp视频流

FFmpeg接收udp视频流实现HLS直播的方法,就用VLC将一个MP4文件生成UDP视频流来代替直播流。

1、确认Nginx安装配置成功支持HLS,具体过程可参考我以前博客。

2、使用VLC生成UDP视频流

3、FFmpeg接收udp流转换成RTMP视频流推送到Nginx上

[plain]  view plain  copy
  1. ffmpeg -i udp://192.168.1.110:1234 -vcodec copy -acodec aac -ar 44100 -strict -2 -ac 1 -f flv -s 1280x720 -q 10 rtmp://192.168.1.110:1935/hls/test2  

效果如下:

[plain]  view plain  copy
  1. Input #0, mpegts, from 'udp://192.168.1.110:1234':  
  2.   Duration: N/A, start: 1904.952289, bitrate: N/A  
  3.   Program 1   
  4.     Stream #0:0[0x45]: Video: h264 (High) ([27][0][0][0] / 0x001B), yuv420p, 1280x554 [SAR 1:1 DAR 640:277], 23.98 fps, 25 tbr, 90k tbn, 47.96 tbc  
  5. Output #0, flv, to 'rtmp://192.168.1.110:1935/hls/test2':  
  6.   Metadata:  
  7.     encoder         : Lavf56.15.102  
  8.     Stream #0:0: Video: h264 ([7][0][0][0] / 0x0007), yuv420p, 1280x554 [SAR 1:1 DAR 640:277], q=2-31, 23.98 fps, 1k tbn, 90k tbc  
  9. Stream mapping:  
  10.   Stream #0:0 -> #0:0 (copy)  
  11. Press [q] to stop, [?] for help  
  12. frame= 3695 fps= 15 q=-1.0 size=   32812kB time=00:02:36.16 bitrate=1721.3kbits/s      

4、在手机浏览器中输入地址

[plain]  view plain  copy
  1. http://192.168.1.110/hls/test2.m3u8  
HLS点播 FFmpeg udp视频流_第1张图片
 
 
2楼  thezhili 2015-04-12 23:50发表 [回复]
你好,我现在能实现hls直播了。
但是还是遇到个问题:好像不是所有视频都支持,有的直播效果是只有声音没有图像,我看了一下那些切片,很小,的确是只有声音没有图像的分片。请问这是什么原因呢?
Re:  小石头吼吼 2015-04-13 15:55发表 [回复]
回复thezhili:这是因为HLS协议的视频分段TS流只支持和h264,你在转码时别-vcodec copy了 直接转换了-vcodec libx264就好了
Re:  thezhili 2015-04-13 16:10发表 [回复]
回复小石头吼吼:你好,我用的视频就是H264的mp4视频,用vlc发出udp流后,本地播放的就是只有声音没有图像,切片也因此没有图像只有声音,不知什么原因? 但是我也试过其他H264的视频,有些视频是可以正常直播的。还有一个问题,HLS直播不支持h265视频吗?
Re:  小石头吼吼 2015-04-13 17:00发表 [回复]
回复thezhili:HLS只支持h264和aac,你上面的原因可能是视频源的问题,你可以用网络摄像机测试下,毕竟摄像机输出格式自己可以定。
1楼  thezhili 2015-04-09 15:40发表 [回复] [引用] [举报]
你好,谢谢你之前回复我!
你的这个帖子里是ffmpeg接收udp流转成rtmp流发到nginx上,有没有办法实现ffmpeg接收udp流自动切片到某个文件夹目录下呢?
还有,按照你这个做法,你的nginx目录下会产生什么文件?
Re:  小石头吼吼 2015-04-09 16:20发表 [回复] [引用] [举报]
回复thezhili:我这种方式的切片也是在一个文件夹下啊,这个文件夹的地址是你自己在Nginx配置文件中规定的。默认/tmp中啊!location /hls { types { application/vnd.apple.mpegurl m3u8; video/mp2t ts; } root /tmp; add_header Cache-Control no-cache; }
Re:  thezhili 2015-04-09 16:49发表 [回复] [引用] [举报]
回复小石头吼吼:好的,除了这个办法,有什么办法接收udp流之后直接切片放到目录下吗?
Re:  小石头吼吼 2015-04-09 18:53发表 [回复] [引用] [举报]
回复thezhili:你生成TS切片不是送给服务器吗?直接切的话不清楚怎么做了

你可能感兴趣的:(转码推流,udp,HLS,rtmp)