我正在尝试通过Celery任务使用FFMPEG转换视频文件。生成的命令看起来像
ffmpeg -i /path/to/flv -ar 22050 -ab 96k -r 24 -b 600k -f flv path/to/flv/transcoded/flv_movie.flv
当我调用任务TranscodeVideoTask.delay(src=filepath, dst=destination_path)
时
我得到flv_movie.flv
文件,但其大小只有200Kb
和调试输出
Press [q] to stop, [?] for help
[h264 @ 0x10205a200] Reference 3 >= 3
[h264 @ 0x10205a200] error while decoding MB 7 5, bytestream (690)
[h264 @ 0x10205a200] concealing 762 DC, 762 AC, 762 MV errors
frame= 40 fps= 0 q=2.0 Lsize= 136kB time=00:00:01.66 bitrate= 668.2kbits/s dup=0 drop=9
video:114kB audio:20kB global headers:0kB muxing overhead 1.814991%
TranscodeVideoTask来源
@task(name="transcode.media")
def TranscodeVideoTask(src, dst):
command = commands.get("flv") % {"src": src, "dst": dst}
os.system(src, dst)
filename = os.path.join(dst, "flv_movie.flv")
YamdiInjector.yamdi(filename, dst)
当在控制台中手动执行相同的命令时,它可以正常工作。
UPDATE
到目前为止,我已经在我的bash文件中编写了以下ffmpeg指令,它几乎可以转换我测试过的每个avi文件
#!/bin/sh
INPUT=$1
OUTPUT=$2/flv_movie.flv
echo "Input file: ${INPUT}"
echo "Output file: ${OUTPUT}"
echo `ffmpeg -y -i $INPUT -ar 44100 -ab 128k -ac 2 -sameq -f flv $OUTPUT`
什么可能导致这个奇怪的问题?
苏丹