如何用块中的FFMPEG记录UDP流?

use*_*281 4 udp ffmpeg video-recording

我正在寻找一种方法来使用ffmpeg记录视频UDP流,但是在10mn块中.我目前使用以下内容获得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 experimental -vf yadif -acodec aac -ab 96000 -ac 2 -t 600 -y /media/test.m4"

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

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

提前致谢

use*_*281 6

好的发现了.

最近ffmpeg添加了一个分段器,这里是语法:

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

-segment_time:块大小秒

您可以使用自动增量文件名,例如%03d(000,001,002,003 ...).

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

ffmpeg -i upp://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 -segment_time 60"xxx-%03d.ts"

  • 我正在尝试使用您的解决方案,现在我有: ffmpeg -i rtsp://192.168.88.11/ -vcodec copy -acodec copy -f mp4 -segment_time 60 -y "test-%03d.mp4" 这很好用,但输出不是分段的。如果我用 -f 段替换 -f mp4,我得到:输出文件 #0 不包含任何流任何想法? (2认同)

小智 5

这是一个更好的方法:

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-最大1000k-严格实验-f stream_segment -segment_format mpegts -segment_time 5 -segment_atclocktime 1 -reset_timestamps 1 -strftime 1 d:/%H%M%S.mp4

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