ffmpeg 转换方法 流 为 mp4片段

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

你可能感兴趣的:(ffmpeg 转换方法 流 为 mp4片段)