ffmpeg 转换方法 流 为 mp4片段
# 将流转换为 mp4, 这里的流可以是 rtp, 也可以是 rtmp
ffmpeg -y -i rtsp://192.168.100.30:554/live/test -vcodec copy -t 500 -f mp4 ttt.mp4
# 将流转换为 mp4, 并按照2分钟就分割成多个文件 -r 设定帧速率, 一分钟分割, -segment_time 120, 两分钟 120sffmpeg -i rtsp://192.168.100.30:554/live/test -r 1/60 -c copy -map 0 -f segment -segment_time 120 -segment_format mp4 ".\\test\\out%03d.mp4"
# 将流转换为 mp4, 分割短视频并生成对应的缩略图ffmpeg -i rtsp://192.168.100.30:554/live/test -r 1/60 -f image2 ".\\test\\images%05d.png" -c copy -map 0 -f segment -segment_time 60 -segment_format mp4 ".\\test\\out%03d.mp4"
# 将rtp 96 协议类型为1889的流转换为 mp4, 并分割视频, sdp 文件文章下有说明
ffmpeg -protocol_whitelist "file,udp,rtp" -i xxx.sdp -r 1/60 -c copy -map 0 -f segment -segment_time 120 -segment_format mp4 ".\\test\\out%03d.mp4"
# 取消缓冲区,降低延迟
ffplay "udp://232.0.0.6:10000" -fflags nobuffer -nofind_stream_info -analyzeduration 10000 -max_delay 0
# 另外 rtp包可以使用 udp协议播放ffplay rtp://@232.0.0.6:10000
ffplay udp://232.0.0.6:10000
# 上述方法转成 mp4片段会出现个问题, 每个片段的起始播放时间是连续的,如何让每个mp4视频为单独的文件呢,提供两种方式
# 1.直接使用 ffmpeg 二次转换mp4视频, 在这里我使用的是第一种方式ffmpeg -i out006.mp4 -c copy tttt.mp4
# 2.使用串流格式, 既将 -segment_format 使用参数 mpegts, 这时生成的是MP4串流格式,使用vlc可播放,但是在浏览器上是不支持播放的,而且点击快进的时候会卡顿两秒左右,没有原生mp4格式支持好
ffmpeg -i rtsp://192.168.100.30:554/live/test -r 1/60 -c copy -map 0 -f segment -segment_time 120 -segment_format mpegts ".\\test\\out%03d.mp4"
ffplay 播放sdp rtp 文件
##有些RTP流是需要分装到sdp文件中的, 播放指令如下,将rtp,file,udp 添加到白名单ffplay -protocol_whitelist "file,udp,rtp" test.sdp
ffmpeg -protocol_whitelist "file,udp,rtp" -i test.sdp -vcodec copy -t 500 -f mp4 ttt.mp4# 生成rtptype96 的sdp文件ffmpeg -re -i t4.mp4 -vcodec copy -an -f rtp rtp://192.168.100.10:10000 > t222.sdp
ffmpeg rtp 推流
将画面和音频 通过 rtp_mpegts 传输
推流 ffmpeg -re -i t4.mp4 -vcodec h264 -f rtp_mpegts rtp://192.168.100.10:10000
播放 ffplay -protocol_whitelist "file,udp,rtp" rtp://@192.168.100.10:10000
来源:https://www.cnblogs.com/han-guang-xue/p/16056041.html