Django Celery FFMPEG:转换视频文件

发布于 2024-12-23 13:21:09 字数 1379 浏览 4 评论 0原文

我正在尝试通过 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文