ffmpeg命令行拉TCP的RTSP流的方法及使用测试记录——RTP over RTSP(TCP)

 

1、启动EasyDarwin流媒体服务器,然后启动RTSP推流(1080P + h264编码): 

 ./demo  /dev/video0 1920 1080 0

注:./demo 为本地自写的推流工具。 可以使用VLC或者ffmpeg推RTSP流进行代替。

  • 启动EasyDarwin流媒体服务器:

  • RTSP推流,在流媒体服务器上出现如下图记录,则推流成功:

 

2、拉流播放视频测试:

语法:ffplay -i "拉流地址" -fflags nobuffer
          注:nobuffer为实时播放

使用ffmpeg命令行播放:

ffplay.exe rtsp://172.16.19.67/dev/video0

出图如下:

 

3、FFmpeg 抓流,保存视频

ffmpeg.exe -i rtsp://172.16.19.67/dev/video0 -c copy -f mpegts ts1001.ts

抓流保存文件如下:

 

4、使用多媒体码流分析器ffprobe.exe 查看文件格式:

 ffprobe.exe ts1001.ts

查看结果:

 

5、使用VLC播放抓流存储的ts1001.ts文件 —— 如下,说明已成功抓流存储到本地:

 

6、控制输出文件大小

-fs (file size首字母缩写)
ffmpeg -i input.avi -fs 1024K output.mp4
计算输出文件大小
(视频码率+音频码率) * 时长 /8 = 文件大小K

设置文件输出大小为10M=1024K*10=10240k ,

存储路径:./video_storage ,

存储文件名:  ts008.ts , 命令行如下:

 ffmpeg.exe -y -i rtsp://172.16.19.67/dev/video0 -vcodec copy   -f mpegts -fs 10240k ./video_storage/ts008.ts

 

 

7、录像存储 —— 

rtsp流切割成TS的切片,并生成M3U8索引,视频流hls

ffmpeg.exe -i rtsp://172.16.19.67/dev/video0 -c:v libx264 -hls_time 8 -hls_list_size 0  -strict -2 -f hls video_storage\record.m3u8

命令说明

  • -i 源视频绝对路径
  • -c 视频流和没一片的时间 time这里 8,表示每片8秒时长
  • strict -2 -f hls 存放的绝对路径
  • .m3u8 输入的文件名,不要写数字,顺序容易出错

 

开始切割:

 

切割完成后,索引文件record.m3u8:

record.m3u8内容:

//record.m3u8内容:
#EXTM3U
#EXT-X-VERSION:3
#EXT-X-TARGETDURATION:10
#EXT-X-MEDIA-SEQUENCE:0
#EXTINF:10.000000,
record0.ts
#EXTINF:10.000000,
record1.ts
#EXTINF:10.000000,
record2.ts
#EXTINF:10.000000,
record3.ts
#EXTINF:10.000000,
record4.ts
#EXTINF:10.000000,
record5.ts
#EXTINF:10.000000,
record6.ts
#EXTINF:10.000000,
record7.ts
#EXTINF:10.000000,
record8.ts
#EXTINF:10.000000,
record9.ts
#EXTINF:10.000000,
record10.ts
#EXTINF:10.000000,
record11.ts
#EXTINF:10.000000,
record12.ts
#EXTINF:10.000000,
record13.ts
#EXTINF:10.000000,
record14.ts
#EXTINF:10.000000,
record15.ts
#EXTINF:10.000000,
record16.ts
#EXTINF:10.000000,
record17.ts
#EXTINF:10.000000,
record18.ts
#EXTINF:10.000000,
record19.ts
#EXTINF:10.000000,
record20.ts
#EXTINF:10.000000,
record21.ts
#EXTINF:10.000000,
record22.ts
#EXTINF:10.000000,
record23.ts
#EXTINF:10.000000,
record24.ts
#EXTINF:10.000000,
record25.ts
#EXTINF:10.000000,
record26.ts
#EXTINF:10.000000,
record27.ts
#EXTINF:10.000000,
record28.ts
#EXTINF:10.000000,
record29.ts
#EXTINF:10.000000,
record30.ts
#EXTINF:10.000000,
record31.ts
#EXTINF:10.000000,
record32.ts
#EXTINF:10.000000,
record33.ts
#EXTINF:10.000000,
record34.ts
#EXTINF:10.000000,
record35.ts

 

 

 

/******************************************* TODU **************************************************/

8、自动存储覆盖

 

 

9、7*24h自动存储覆盖

 

 

 

 

 

******************************************* 补充: **********************************************************//

1 .容器

视频文件本身其实是一个容器(container),里面包括了视频和音频,也可能有字幕等其他内容。
常见的容器格式有以下几种。一般来说,视频文件的后缀名反映了它的容器格式。

  • MP4
  • MKV
  • WebM
  • AVI

查看 FFmpeg 支持的容器

$ ffmpeg -formats

 

2 .编码格式

视频和音频都需要经过编码,才能保存成文件。不同的编码格式(CODEC),有不同的压缩率,会导致文件大小和清晰度的差异。

常用的视频编码

  • H.262
  • H.264
  • H.265

上面的编码格式都是有版权的,但是可以免费使用。此外,还有几种无版权的视频编码格式

  • VP8
  • VP9
  • AV1

常用的音频编码

  • MP3
  • AAC

上面所有这些都是有损的编码格式,编码后会损失一些细节,以换取压缩后较小的文件体积。无损的编码格式压缩出来的文件体积较大,这里就不介绍了,可以查看 FFmpeg 支持的编码格式,视频编码和音频编码.

$ ffmpeg -codecs

 

3 .编码器

编码器(encoders)是实现某种编码格式的库文件。只有安装了某种格式的编码器,才能实现该格式视频/音频的编码和解码。

这是一些 FFmpeg 内置的视频编码器

  • libx264:最流行的开源 H.264 编码器
  • NVENC:基于 NVIDIA GPU 的 H.264 编码器
  • libx265:开源的 HEVC 编码器
  • libvpx:谷歌的 VP8 和 VP9 编码器
  • libaom:AV1 编码器

音频编码器如下

  • libfdk-aac
  • aac

查看 FFmpeg 已安装的编码器

$ ffmpeg -encoders

 

4、查询使用的ffmpeg版本是否支持 CUDA, 命令:

ffmpeg -hwaccels

查询结果:

 

5、测试指定使用cuvid硬件加速,

ffmpeg.exe -hwaccel cuvid -c:v h264_cuvid -i test.mp4 -c:v h264_nvenc -y test_cuda.mp4

 

6、m3u8 与MP4 简单对比:

  • MP4 对HTML5flash播放器亲和度都挺好。但是文件头太大,需要加载完成才能播放,其次结构复杂,长视频的大文件头影响加载速度的视频体验,所以MP4在短视频的应用更常见
  • m3u8 采用苹果的HLS协议,目前 iosandroid设备均已支持。由于其工作原因是将整个视频流分成一个个小的基于Http的文件进行下载播放,因此支持视频直播,和视频加速播放

 

 

 

参考&&致谢:

1、 使用FFmpeg工具进行推流、拉流、截图、变速、转换,及常见问题处理

2、ffmpeg 基本用法 ——  https://www.jianshu.com/p/3c8c4a892f3c

3、 FFmpeg的应用,Web视频解决方案 - 爆胎博客 (itggg.cn)

4、ffmpeg命令参数详解 - 简书 (jianshu.com)

  • 1
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xw-何妨吟啸且徐行

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值