ffmpeg转码转视频时出现以下情况
ffmpeg version 2.3.6 Copyright (c) 2000-2014 the FFmpeg developers
built on Mar 24 2017 11:48:29 with gcc 4.1.2 (GCC) 20080704 (Red Hat 4.1.2-52)
configuration: --enable-shared --disable-static --enable-memalign-hack --enable-libx264 --enable-gpl --extra-cflags=-I/usr/local/include --extra-ldflags=-L/usr/local/lib --enable-pthreads
libavutil 52. 92.100 / 52. 92.100
libavcodec 55. 69.100 / 55. 69.100
libavformat 55. 48.100 / 55. 48.100
libavdevice 55. 13.102 / 55. 13.102
libavfilter 4. 11.100 / 4. 11.100
libswscale 2. 6.100 / 2. 6.100
libswresample 0. 19.100 / 0. 19.100
libpostproc 52. 3.100 / 52. 3.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '/mnt/nfs/filesRoot/microclassFile/test28.MP4':
Metadata:
major_brand : isom
minor_version : 512
compatible_brands: isomiso2avc1mp41
encoder : Lavf56.36.100
Duration: 00:07:10.32, start: 0.072562, bitrate: 226 kb/s
Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 800x600 [SAR 30:29 DAR 40:29], 92 kb/s, 25.20 fps, 25.20 tbr, 16128 tbn, 50.40 tbc (default)
Metadata:
handler_name : VideoHandler
Stream #0:1(und): Audio: aac (mp4a / 0x6134706D), 22050 Hz, mono, fltp, 127 kb/s (default)
Metadata:
handler_name : SoundHandler
[AVFilterGraph @ 0xbc62a0] Error initializing threading.
[AVFilterGraph @ 0xbc62a0] Error creating filter 'null'
Error opening filters!
由于linux的pid超过最大的数导致 ffmpeg无资源可用。
解决办法:
首先在转码命令中加入参数 -thread (参考:http://ffmpeg.org/ffmpeg.html)
ffmpeg -i $original -threads:1 4 -ab 56 -ar 22050 -qscale 8 -codec:v libx264 -c:a copy -movflags faststart -r 15 -s 480*320 -y $tmp
然后修改最大的进程数
1. free 命令查看内存数
2. sysctl kernel.pid_max 查看最大进程数
3. ps -eLf | wc -l查看进程数(确认满了就修改最大值)
临时方法:
修改最大进程数后系统恢复
echo 1000000 > /proc/sys/kernel/pid_max
永久生效方法:
echo "kernel.pid_max=1000000 " >> /etc/sysctl.conf
sysctl -p