如何分段录制 UDP 流,FFmpeg
How can I Recording a UDP stream in segments, FFmpeg
我正在寻找一种以 30 分钟片段连续记录 UDP 流并在 GPU 上实时编码的方法。我希望录音将日期和时间刻录到剪辑中并连续进行 (24/7)。
我试过以下方法:
ffmpeg -i udp://source:port -c copy -flags +global_header -f segment -segment_time 1800 -segment_format_options movflags=+faststart -reset_timestamps 1 show_{Date}_{Time}.mp4
{Date}
和 {Time}
是保存 FFmpeg 启动时间的变量。
这可以正确记录我的片段,但是,如果流中的信号丢失,FFmpeg 会崩溃并且不会继续记录或自行备份,并且不会刻录当前时间或日期输出视频。
我需要它可以在 html5 中播放,这就是我制作 mp4 的原因。
我已经解决了。
我设置了一个在任务计划程序上运行的批处理文件。每 30 分钟触发一次。
ffmpeg -hwaccel cuvid -y -i {udp} -vf "drawtext=fontfile=calibrib.tff:fontsize=25:text='{ChannelName} %{localtime}': x=10: y=10: fontcolor=white: box=1: boxcolor=0x000000" -pix_fmt yuv420p -vsync 1 -c:v h264_nvenc -r 25 -threads 0 -b:v 1M -profile:v main -minrate 1M -maxrate 1M -bufsize 10M -sc_threshold 0 -c:a aac -b:a 128k -ac 2 -ar 44100 -af "aresample=async=1:min_hard_comp=0.100000:first_pts=0" -bsf:v h264_mp4toannexb -t 00:30:00 {output}\{ChannelName}\{ChannelName}_{year}_{monthno}_{day}__{Hours}_{Minutes}_{Seconds}.mp4
{ }
中的文件名是我的变量。
文件输出后im 运行一个trim函数。
Trim 函数从一个文件夹中选择所有 .mp4 文件到 trim 视频的第一分钟。
使用 -ss 00:01:00
和 -t 00:31:00
但没有编码所以我使用 -codec copy -map 0 output.mp4
我正在寻找一种以 30 分钟片段连续记录 UDP 流并在 GPU 上实时编码的方法。我希望录音将日期和时间刻录到剪辑中并连续进行 (24/7)。
我试过以下方法:
ffmpeg -i udp://source:port -c copy -flags +global_header -f segment -segment_time 1800 -segment_format_options movflags=+faststart -reset_timestamps 1 show_{Date}_{Time}.mp4
{Date}
和 {Time}
是保存 FFmpeg 启动时间的变量。
这可以正确记录我的片段,但是,如果流中的信号丢失,FFmpeg 会崩溃并且不会继续记录或自行备份,并且不会刻录当前时间或日期输出视频。
我需要它可以在 html5 中播放,这就是我制作 mp4 的原因。
我已经解决了。
我设置了一个在任务计划程序上运行的批处理文件。每 30 分钟触发一次。
ffmpeg -hwaccel cuvid -y -i {udp} -vf "drawtext=fontfile=calibrib.tff:fontsize=25:text='{ChannelName} %{localtime}': x=10: y=10: fontcolor=white: box=1: boxcolor=0x000000" -pix_fmt yuv420p -vsync 1 -c:v h264_nvenc -r 25 -threads 0 -b:v 1M -profile:v main -minrate 1M -maxrate 1M -bufsize 10M -sc_threshold 0 -c:a aac -b:a 128k -ac 2 -ar 44100 -af "aresample=async=1:min_hard_comp=0.100000:first_pts=0" -bsf:v h264_mp4toannexb -t 00:30:00 {output}\{ChannelName}\{ChannelName}_{year}_{monthno}_{day}__{Hours}_{Minutes}_{Seconds}.mp4
{ }
中的文件名是我的变量。
文件输出后im 运行一个trim函数。
Trim 函数从一个文件夹中选择所有 .mp4 文件到 trim 视频的第一分钟。
使用 -ss 00:01:00
和 -t 00:31:00
但没有编码所以我使用 -codec copy -map 0 output.mp4