ffmpeg多线程转码
来源:互联网 发布:kettle java脚本 编辑:程序博客网 时间:2024/05/18 12:43
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进行视频转码,考虑到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
0 0
- ffmpeg多线程转码
- FFMPEG解码多线程
- FFMPEG解码多线程
- FFMPEG解码多线程
- FFMPEG解码多线程
- FFMPEG解码多线程
- FFMPEG解码多线程
- FFMPEG解码多线程
- FFmpeg解码多线程
- FFMPEG解码多线程
- ffmpeg多线程解码流程
- ffmpeg多线程编解码
- FFMPEG解码多线程
- ffmpeg 转码笔记
- ffmpeg视频转码
- ffmpeg转码参数
- ffmpeg 内存转码
- FFmpeg 本地化转码
- 【LeetCode】Valid Sudoku
- HDOJ 题目4858 项目管理(vector水)
- 单例模式与线程
- 处理python爬虫的timeout报错
- sql server2008 用户登录失败 错误18457 解决
- ffmpeg多线程转码
- 有关session阻塞问题
- 子元素和后代元素的区别
- VS2010 远程调试
- Android开发 使用 adb logcat 显示 Android 日志
- 如何删除多余系统引导项
- UNIX网络编程——揭开网络编程常见API的面纱【下】
- zoj 3640 概率dp
- 利用NSCache提升效率