5

我正在寻找一种使用 ffmpeg 但以 1000 万块记录视频 UDP 流的方法。我目前使用以下内容获取 1000 万视频(使用 h264 转码)。

“ffmpeg -i udp://239.0.77.15:5000 -map 0:0 -map 0:1 -s 640x360 -vcodec libx264 -g 100 -vb 500000 -r 25 -strict 实验性 -vf yadif -acodec aac -ab 96000 -ac 2 -t 600 -y /media/test.m4 "

我的问题是使用命令行 ffmpeg 需要时间与 udp 流重新同步,每次丢失 2 秒的视频。正常吗?

知道是否有办法在命令行中执行此操作,还是我应该尝试使用 ffmpeg API?

提前致谢

4

2 回答 2

12

好的,找到了。

最近ffmpeg添加了一个segmenter,语法如下:

-f segment: 告诉 ffmpeg 使用分段器

-segment_time: 以秒为单位的块大小

您可以使用带有 %03d (000,001,002,003...) 之类的自动增量文件名。

这是我将 UDP MPEGTS 流转码为 H264+AAC 并将其保存到文件块(60 秒)的行:

ffmpeg -i udp://239.0.77.15:5000 -map 0:0 -map 0:1 -s 640x360 -vcodec libx264 -g 60 -vb 500000 -strict experimental -vf yadif -acodec aac -ab 96000 -ac 2 - y -f 段 -segment_time 60 "xxx-%03d.ts"

于 2012-05-23T10:26:54.180 回答
10

这是一个更好的方法:

ffmpeg -re -i udp://10.1.1.238:1234?fifo_size=1000000 -vcodec libx264 -vb 500000 -g 60 -vprofile main -acodec aac -ab 128000 -ar 48000 -ac 2 -vbsf h264_mp4toannexb -b 1000k -minrate 1000k -maxrate 1000k -strict experimental -f stream_segment -segment_format mpegts -segment_time 5 -segment_atclocktime 1 -reset_timestamps 1 -strftime 1 d:/%H%M%S.mp4

通过此代码,ffmpeg 使用当前系统时间制作一系列输出文件。

于 2017-04-16T09:14:30.493 回答