video - 使用 gstreamer 压缩视频文件大小
问题描述
我正在尝试在本地播放,流式传输到地址并与 gstreamer 同时保存视频
这是我一直在使用的命令行代码
gst-launch-1.0 v4l2src ! video/x-raw,width=640,height=480 ! timeoverlay ! tee name="local" \
local. ! queue ! autovideosink \
local. ! queue ! vpuenc_h264 bitrate=3000 ! h264parse config-interval=1 ! rtph264pay ! udpsink host=192.168.50.112 port=5100 \
local. ! queue ! vpuenc_h264 bitrate=3000 ! matroskamux name=mux ! filesink location=camera.mkv
命令行做了它应该做的,即我可以在本地播放捕获的视频,流到另一个位置,并将捕获的视频本地存储为文件
但是,我发现存储的视频大小对于 h264 视频来说太大了,但我认为我已将其编码为 h264 文件。我认为我在存储部分做错了,但我找不到错误
需要你的帮助,如果可能的话,改进管道的方法
谢谢
解决方案
您要求它提供 3kbps 的bitrate=3000
比特率。这低于 10kbps 的下限。但即使是 10kbps 也会看起来非常糟糕。
kbps 表示每秒千位(1000,而不是 1024)位。
推荐阅读
- php - Javascript 时间戳在 Laravel 中被 Carbon 解析为错误日期
- php - 附加到 XML 的末尾时,formatOutput 不起作用,但在第一次创建文件时,formatOutput 工作正常
- css - 将反应门户居中在父元素的顶部
- r - muthist 中没有空格的盒子
- javascript - 在特定单元格不为空时在 Google 表格中运行一个脚本,将公式生成到单元格中
- windows - 错误:在Windows中通过cmd在c盘中创建文件?
- jquery - 如何在同一页面上为 2 个无线电流制作播放/停止按钮?
- ios - 'NSInternalInconsistencyException',原因:'请求节 (0) 的行数超出范围。
- sequelize.js - Sequelize.query 将表名转换为小字符,而不是使用我在原始查询中提供的确切名称
- php - 执行存储在变量中的数组