我正在尝试在新环境中启动并运行旧的转码服务器,但在使用经过充分测试的 ffmpeg 命令在新环境中运行时遇到了一些问题。
这是一个 2 遍编码策略,第一次传递每次都运行良好,第二次传递始终失败,并出现以下情况:
[libx264 @ 0x3925fc0] 2nd pass has more frames than 1st pass (1478)
[libx264 @ 0x3925fc0] continuing anyway, at constant QP=14
[libx264 @ 0x3925fc0] disabling adaptive B-frames
[libx264 @ 0x3925fc0] specified frame type is not compatible with max B-frames
Segmentation fault
这是我们每次传递时使用的命令:
第 1 遍:
ffmpeg -y -i input.mp4 -pass 1 -b 774000 -ab 128000 -s 640x360 -passlogfile ffmpeglog -vcodec libx264 -g 90 -bf 3 -refs 1 -b_strategy 1 -coder 1 -qmin 10 -qmax 51 -sc_threshold 40 -flags +loop -cmp chroma -me_range 16 -me_method dia -subq 2 -i_qfactor 0.71 -qcomp 0.6 -qdiff 4 -direct-pred 3 -trellis 0 -partitions -parti8x8-parti4x4-partp8x8-partb8x8 -r 30 -keyint_min 25 -wpredp 2 -rc_lookahead 50 -acodec libfaac -ar 44100 pass1.mp4
第 2 遍:
ffmpeg -y -i pass1.mp4 -pass 2 -b 774000 -ab 128000 -s 640x360 -passlogfile ffmpeglog -vcodec libx264 -g 90 -bf 3 -refs 8 -b_strategy 1 -coder 1 -qmin 10 -qmax 51 -sc_threshold 40 -flags +loop -cmp chroma -me_range 16 -me_method umh -subq 9 -i_qfactor 0.71 -qcomp 0.6 -qdiff 4 -direct-pred 3 -trellis 2 -partitions +parti8x8+parti4x4+partp8x8+partp4x4+partb8x8 -r 30 -keyint_min 25 -wpredp 2 -rc_lookahead 60 -acodec libfaac -ar 44100 pass2.mp4
...这是我的 ffmpeg 配置:
ffmpeg version 2.1.4 Copyright (c) 2000-2014 the FFmpeg developers
built on Feb 25 2014 19:23:21 with gcc 4.6.3 (GCC) 20120306 (Red Hat 4.6.3-2)
configuration: --enable-gpl --enable-libmp3lame --enable-libtheora --enable-libvo-aacenc --enable-libvorbis --enable-libvpx --enable-libx264 --enable-version3 --enable-libfaac --enable-nonfree
libavutil 52. 48.101 / 52. 48.101
libavcodec 55. 39.101 / 55. 39.101
libavformat 55. 19.104 / 55. 19.104
libavdevice 55. 5.100 / 55. 5.100
libavfilter 3. 90.100 / 3. 90.100
libswscale 2. 5.101 / 2. 5.101
libswresample 0. 17.104 / 0. 17.104
libpostproc 52. 3.100 / 52. 3.100
Hyper fast Audio and Video encoder
usage: ffmpeg [options] [[infile options] -i infile]... {[outfile options] outfile}...
任何想法都将不胜感激!
答案1
这是我想出的解决方案,目前看来效果很好:在 #ffmepg 的好心人的帮助下,我重新开始
ffmpeg -i $inputFile -vcodec libx264 -s $widthx$height -b $videoBitrate -preset medium -crf 23 -acodec libfaac -q:a 100 -movflags +faststart -pix_fmt yuv420p -r $frameRate $outputFile