我使用ffmpeg转码HDHomerun Prime的实时流。一切都很美好。但是,如果可能的话,我希望能够改变HDHomerun上的频道,而不必停止并重新启动ffmpeg转码过程。Ffmpeg在转换HDHomerun Prime转换频道时挂起
我启动ffmpeg进程开始从HDHomerun读取UDP源。它使用m3u8播放列表将流写入一系列* .ts文件。
我使用hdhomerun_config
改变装置上的信道的第二个,FFMPEG立即报告以下和挂起:
[mpegts @ 0000018b4e05be60] New video stream 0:3 at pos:295211888 and DTS:40884.7s=108 drop=0 speed=1.02x [mpegts @ 0000018b4e05be60] New audio stream 0:5 at pos:295279568 and DTS:40884.4s frame= 4488 fps= 29 q=23.0 q=27.0 q=23.0 size=N/A time=00:02:28.94 bitrate=N/A dup=108 drop=0 speed=0.959x
我使用推出的ffmpeg的命令是:
ffmpeg.exe -t 03:00:00 -i "udp://192.168.1.150:5000?fifo_size=1000000&overrun_nonfatal=1" -vf yadif=0:-1:1 -y -threads 4 -c:v libx264 -s 1280x720 -r 30 -b:v 4500k -force_key_frames expr:gte(t,n_forced*2) -profile:v high -preset fast -x264opts level=41 -c:a libfdk_aac -b:a 96k -ac 2 -hls_time 10 -hls_list_size 6 -hls_wrap 6 -hls_base_url /stream/ -hls_flags temp_file -hls_playlist_type event "C:\temp\streams\4500-stream.m3u8"
是否有一个特定的命令,我可以通过允许ffmpeg从此“恢复”?或者,有没有一种arg可以防止这种挂起?我正在使用Ubuntu的ffmpeg交叉编译的最新版v3.4。从ffmpeg.org使用ffmpeg for Windows的稳定版本v3.4也出现了这个问题。
编辑:
一个新发现的问题,但仍然没有解决: 如果我改变回原来的通道的通道,ffmpeg的是能够继续写入流。
示例:我从频道X开始.Ffmpeg正在记录到文件中。我更改为频道Y.Ffmpeg输出类似于上面发布的消息并“挂起”的消息。我改回到X频道,ffmpeg从它离开的地方回来,没问题。
您可能需要脚本获取新的流。我怀疑FFmpeg是挂着的,它只是你最初从一个流开始,现在有一个新的不相关的流并排运行,没有来自原始流的更多数据。 – Brad
你的意思是启动一个新的ffmpeg进程? – devo1929