FFMPEG:选择原始和指定比特率的最小值

标签 ffmpeg video-processing live-streaming transcoding

我正在使用 FFMPEG 对 RTMP 流进行转码。如果原始比特率大于 600k,我希望输出具有 600k(近似)的比特率,否则输出应该具有原始比特率。我看过-minrate、-maxrate、-bufsize。但不要认为它们在这里适用。有没有办法实现这一点,最好是在单个 FFMPEG 命令中?

最佳答案

这是如何完成的示例。
使用 ffprobe 短时间读取输入。
如果无法检测到 bit_rate(即 N/A 或为空),这是安全的

q=$(ffprobe -i rtmp://localhost/rtmpapp/key -select_streams v:0 -show_entries stream=width,height,bit_rate  -of csv=s=_:p=0 -analyzeduration 100k -probesize 100k)

bit_rate=$(echo $q | cut -d'_' -f 3)
b=$(echo "($bit_rate / 1000)" | bc)  #convert to kbps

target=4000 # this will be maximum target bitrate
btarget=$(( (target < b || b == 0) ? target : b )) #get min of the two
bmax=$(echo "($btarget*1.1) /1" | bc) #multiplier for maxrate
bbuf=$(echo "($btarget*1.5) /1" | bc) #multiplier for bufsize

关于FFMPEG:选择原始和指定比特率的最小值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58062637/

相关文章:

algorithm - 在视频中找到有趣的帧

linux - 如何将 mjpeg 从网络摄像头更改为 yuyv422 到 v4l2loopback?

c++ - 使用 libde265 直接显示过滤器

shell - 在后台运行 ffmpeg2theora convert

video - 将 NTSC DVD 转换为原始 HEVC 文件 - 29.97 或 23.967 fps?

FFMPEG 脚本用于合并列表中的所有文件并制作 1920x1080p 60fps mp4 视频

video-streaming - 在网页中嵌入 H.264 视频的实时 RTSP 流

node.js - 如何从多个文件创建可读文件流

python - 使用 numpy 和 mencoder 直接绘制到电影中

java - xuggler 找不到输入编解码器 ID (avi, msvideo1)