Django Celery FFMPEG:转换视频文件
我正在尝试通过 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)
当在控制台中手动执行相同的命令时,它工作得很好。
更新
到目前为止,我已经在 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`
是什么可能导致这个奇怪的问题?
苏丹
I'm trying to convert video files using FFMPEG via Celery tasks. The generated command to be executed looks like
ffmpeg -i /path/to/flv -ar 22050 -ab 96k -r 24 -b 600k -f flv path/to/flv/transcoded/flv_movie.flv
and when I call the task TranscodeVideoTask.delay(src=filepath, dst=destination_path)
I get flv_movie.flv
file but its size is only about 200Kb
and debug output
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 source
@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)
When the same command executed manually in the console it works just fine.
UPDATE
So far I've composed the following ffmpeg instructions in my bash file and it converts almost every avi file I tested already
#!/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`
What may cause this strange problem?
Sultan
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论