FROM: http://www.xsdou.com/1470.html

最近需要用ffmpeg进行视频转码,考虑到ffmpeg这个工具本身支持多线程,而服务器也是多核的,想最大程度发挥服务器的计算能力。显然不能用单线程了,但是线程并不是越多越好,需要找到个平衡点。这就需要用time命令进行计时,并将该屏幕的输出重定向到文件,以便后期进行分析。

假设我这里有个in.mp4的视频文件,分辨率为640*480,码率为580kbps,需要降低分辨率为320*240,降低码率为290kbps(这个参数和分辨率同时使用时不一定起作用,特别是中途退出时)。

普通降低分辨率,码率的命令:
 ffmpeg-y-i in.mp4-s 320x240-b290000 out290.mp4
 
带thread参数的命令:    
ffmpeg -y -threads 2 -i in.mp4 -s 320x240 -b 290000 out290.mp4
这里用了两个线程。

用time统计时间的命令:    
time ffmpeg -y -threads 2 -i in.mp4 -s 320x240 -b 290000 out290.mp4

输出重定向命令:
(time ffmpeg -y -threads 2 -i in.mp4 -s 320x240 -b 290000 out290.mp4) 2>1.txt
由于输出为标准出错,所以这里用2>1.txt

当然也可使用如下命令:
(time ffmpeg -y -threads 2 -i in.mp4 -s 320x240 -b 290000 out290.mp4) >& 1.txt

为了同时在屏幕上输出,可以用tee命令。首先将标准出错重定向到标准输出,然后通过通道传给文件,命令如下:
(time ffmpeg -y -threads 2 -i in.mp4 -s 320x240 out290.mp4) 2>&1 | tee 1.txt

如果想测试下服务器到底支持多少个线程比较好,就需要写个脚本运行,我这里有一个,仅供参考:
#! /bin/bash
echo "Input num : "
read num
for (( i=1; i<=$num; i=i+1 ))
do
        #(time ffmpeg -y -threads $i -i in.mp4 -s 320x240 -vcodec libx264 -vpre fast out290.mp4) >& $i.txt
        (time ffmpeg -y -threads $i -i in.mp4 -s 320x240 -vcodec libx264 -vpre fast out290.mp4) 2>&1 | tee $i.txt
done

ffmpeg多线程转码相关推荐

  1. 【FFmpeg】ffmpeg工具源码分析(三):分配过滤器内存(宏GROW_ARRAY)详解

    0.引言 在ffmpeg.c源码的核心函数transcode() 中,先执行初始化操作transcode_init() : 首先初始化过滤器filtergraphs,在寻找过滤器在哪分配时,发现它使用 ...

  2. 使用ffmpeg实现转码样例(代码实现)

    分类: C/C++ 使用ffmpeg实现转码样例(代码实现) 使用ffmpeg转码主要工作如下: Demux -> Decoding -> Encoding -> Muxing 其中 ...

  3. Android FFmpeg视频转码并保存到本地

    本文讲述在Android中, 如何将FFmpeg视频转码为YUV格式并保存到本地. 首先,我们基于上一篇文章 基于Android Studio3.2实现ffmpeg最简单的例子 来进行配置. 配置好之 ...

  4. 最简单的基于FFMPEG的转码程序

    本文介绍一个简单的基于FFmpeg的转码器.它可以将一种视频格式(包括封转格式和编码格式)转换为另一种视频格式.转码器在视音频编解码处理的程序中,属于一个比较复杂的东西.因为它结合了视频的解码和编码. ...

  5. nodejs+ffmpeg视频转码

    nodejs+ffmpeg视频转码 const context = require("../core/node_core_ctx"); const {spawn,exec} =re ...

  6. 使用ffmpeg批量转码的命令行(以mkv转mp4为例)

    使用ffmpeg批量转码的命令行(以mkv转mp4为例) 单个文件转码 批量文件转码 使用python和ffmpeg在cmd中实现(没事找事) 单个文件转码 ffmpeg -i INPUTPATH.m ...

  7. C#调用Process执行ffmpeg视频转码七分钟后就假死了

    问题描述 ffmpeg -i /wzfgs_img_storage/tuku.img_linux/upload/20210421_164313_803_a2a2.mov -vcodec h264 /v ...

  8. HLS + ffmpeg 实现动态码流视频服务

    一.简介 如下图,包含三部分,右边一列为边缘节点:中间一列代表数据中心:左边一列是项目为客户提供的一系列web管理工具: 具体来说在我们项目中有一堆边缘节点,每个节点上部署一台强大的GPU服务器及N个 ...

  9. java用ffmpeg转码_java运用FFMPEG视频转码技术.doc

    java运用FFMPEG视频转码技术 基于windows系统安装FFMPEG转码技术 软件特点: 被转视频基本不失真(支持超清.高清.标清): 转码速度比较现成转码软件快非常多(不管文件有多大,此软件 ...

最新文章

  1. 刚刚,2022 USNews全美大学排行榜出炉!普林斯顿霸榜,哥大哈佛MIT并列第二
  2. 学习实例.文章管理.数据库操作类.DBUtil.java
  3. mysql instead of_mysqluniqueoptionprefixmyisam_recoverinsteadofmyisam-recover-options的解决方法
  4. 时间即财富:创业者浪费精力的八个错误
  5. 文件标识符无效。使用 fopen 生成有效的文件标识符。_「存储架构」块存储、文件存储和对象存储(第1节)...
  6. Mars——基于矩阵的统一分布式计算框架
  7. 在JavaScript中以Hours24:Minutes:Seconds格式获取当前时间
  8. mysql如何植入到oracle_MySQL性能优化之数据库Recovery改进策略
  9. Eclipse改动Project的文件夹位置
  10. spring batch 读mysql_spring batch csv文件导入到mysql数据库
  11. [导入]【布鲁斯威利斯】【虎胆龙威4最终珍藏版】【1024x432RMVB 1.41GB】【20:50】...
  12. android studio 导入c,3.3、Android Studio 添加 C 和 C++ 项目
  13. 自动生成PDF的书签目录
  14. 新偶像时代:被直播重构的粉丝经济和社交平台
  15. R语言主题风格—ggthemes和hrbrthemes包绘图风格总览参考手册
  16. Freesurfer recon-all命令详解及使用示例
  17. 艺赛旗(RPA)word 文本差异比较
  18. Linux tshark安装
  19. 小程序请求后端接口步骤
  20. wamp橙色不变绿的几个主要原因

热门文章

  1. leetcode算法题--回文链表
  2. 分摊的意思_会计分摊是什么意思
  3. Sql Server实用操作-存储过程精解
  4. 9个JavaScript小技巧:写出更简洁,高效代码
  5. [Nodejs学习之旅2-1] 模块机制
  6. 【Python】插入sqlite数据库
  7. 解决 ASP.NET Core 自定义错误页面对 Middleware 异常无效的问题
  8. Android零基础入门第40节:自定义ArrayAdapter
  9. 外联css及js的使用
  10. [禅悟人生]拿得起放得下, 才是真幸福