当前位置:   article > 正文

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

ffmpeg -rtsp_transport 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内容:

  1. //record.m3u8内容:
  2. #EXTM3U
  3. #EXT-X-VERSION:3
  4. #EXT-X-TARGETDURATION:10
  5. #EXT-X-MEDIA-SEQUENCE:0
  6. #EXTINF:10.000000,
  7. record0.ts
  8. #EXTINF:10.000000,
  9. record1.ts
  10. #EXTINF:10.000000,
  11. record2.ts
  12. #EXTINF:10.000000,
  13. record3.ts
  14. #EXTINF:10.000000,
  15. record4.ts
  16. #EXTINF:10.000000,
  17. record5.ts
  18. #EXTINF:10.000000,
  19. record6.ts
  20. #EXTINF:10.000000,
  21. record7.ts
  22. #EXTINF:10.000000,
  23. record8.ts
  24. #EXTINF:10.000000,
  25. record9.ts
  26. #EXTINF:10.000000,
  27. record10.ts
  28. #EXTINF:10.000000,
  29. record11.ts
  30. #EXTINF:10.000000,
  31. record12.ts
  32. #EXTINF:10.000000,
  33. record13.ts
  34. #EXTINF:10.000000,
  35. record14.ts
  36. #EXTINF:10.000000,
  37. record15.ts
  38. #EXTINF:10.000000,
  39. record16.ts
  40. #EXTINF:10.000000,
  41. record17.ts
  42. #EXTINF:10.000000,
  43. record18.ts
  44. #EXTINF:10.000000,
  45. record19.ts
  46. #EXTINF:10.000000,
  47. record20.ts
  48. #EXTINF:10.000000,
  49. record21.ts
  50. #EXTINF:10.000000,
  51. record22.ts
  52. #EXTINF:10.000000,
  53. record23.ts
  54. #EXTINF:10.000000,
  55. record24.ts
  56. #EXTINF:10.000000,
  57. record25.ts
  58. #EXTINF:10.000000,
  59. record26.ts
  60. #EXTINF:10.000000,
  61. record27.ts
  62. #EXTINF:10.000000,
  63. record28.ts
  64. #EXTINF:10.000000,
  65. record29.ts
  66. #EXTINF:10.000000,
  67. record30.ts
  68. #EXTINF:10.000000,
  69. record31.ts
  70. #EXTINF:10.000000,
  71. record32.ts
  72. #EXTINF:10.000000,
  73. record33.ts
  74. #EXTINF:10.000000,
  75. record34.ts
  76. #EXTINF:10.000000,
  77. 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)

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/174870
推荐阅读
相关标签
  

闽ICP备14008679号