我使用ffmpeg编码一些将在Unified Streaming之后传送的直播频道。我的播放器是一个STB,它在重现这个输出时遇到了问题,但在iOS上就像魅力一样。
拥有http输出时,需要:
-moveflag isml -f ismv
如果输出是一个ismv文件,我删除那些标志并用mp4split创建清单,我的STB再现它。
这对我的STB无效:
ffmpeg -nostdin -loglevel info -y -re -i udp://XXX.XXX.XXX.XXX:XXXX?pkt_size=1316\&buffer_size=409600\&fifo_size=1000000\&overrun_nonfatal=1 -c:v libx264 -preset medium -profile:v baseline -g 50 -keyint_min 50 -sc_threshold 0 -c:a libfdk_aac -ac 2 -b:a 64k -map 0:v -b:v:0 1200k -minrate 1200k -maxrate 1200k -bufsize 2400k -muxrate 2400k -s:v:0 1280x720 -x264opts pic-struct:no-scenecut -movflags isml+frag_keyframe -f ismv -threads 0 -map 0:a http://XXX.XXX.XXX.XXX/Teledoce_HD/Teledoce_HD.isml/Streams(video)
用mp4split创建清单后,这个工作在我的STB上:
ffmpeg -nostdin -loglevel info -y -re -i udp://XXX.XXX.XXX.XXX:XXXX?pkt_size=1316\&buffer_size=409600\&fifo_size=1000000\&overrun_nonfatal=1 -c:v libx264 -preset medium -profile:v baseline -g 50 -keyint_min 50 -sc_threshold 0 -c:a libfdk_aac -ac 2 -b:a 64k -map 0:v -b:v:0 1200k -minrate 1200k -maxrate 1200k -bufsize 2400k -muxrate 2400k -s:v:0 1280x720 -x264opts pic-struct:no-scenecut -movflags frag_keyframe -threads 0 -map 0:a test.ismv
我认为是流的长度,我的直播流上的播放器无法知道,但是vod是的。
有什么想法吗?