关闭。这个问题是opinion-based .它目前不接受答案。
想改进这个问题?更新问题,以便 editing this post 可以用事实和引用来回答它.
1年前关闭。
Improve this question
嘿伙计们,在 django 中使用 ffmpeg 将视频编码为多种分辨率的最佳方法是什么?我们应该创建一个单独的 celery 任务来编码视频并保存在数据库中,还是有多个任务来将视频编码为各种分辨率?我对所有这些都是新手,因此非常感谢有关最佳方式的任何帮助。
我在这里有两个任务要编码为 480 和 1080p ..所以是否可以在 1 个任务中同时运行,或者最好的方法是分别编码?
还有像 youtube 这样的网站是如何编码的?
@task(name= 'task_video_encoding_480p')
def task_video_encoding_480p(video_id):
logger.info('Video Processing started')
try:
video =
input_file_path =
output_file_480p_path =
for i in range(1):
new_video_480p = subprocess.call([ffmpeg, {process},output_file_480p_path])
if new_video_480p == 0:
video.save()
logger.info('Video Processing Finished')
#video.temp_file.delete()
else:
logger.info('Proceesing Failed.') # Just for now
except:
raise ValidationError('Something went wrong!')
任务 2@task(name= 'task_video_encoding_1080p')
def task_video_encoding_1080p(video_id):
logger.info('Video Processing started')
try:
video =
input_file_path =
output_file_1080p_path =
for i in range(1):
new_video_1080p = subprocess.call([ffmpeg, {process},output_file_1080p_path])
if new_video_1080p == 0:
video.save()
logger.info('Video Processing Finished')
video.temp_file.delete()
else:
logger.info('Proceesing Failed.') # Just for now
except:
raise ValidationError('Something went wrong!')
谢谢你。非常感谢您的帮助。
最佳答案
例如 FFmpeg command采用一个输入流和四个输出流可能如下所示:
ffmpegCommand = """/opt/ffmpeg/bin/ffmpeg -y -threads 1 -i '/tmp/dev/built-inputVideo.avi'
-map '0:v' -s 640:360 -sn -vcodec h264 -movflags +faststart -strict -2 -threads 1 '/tmp/dev/built-output-640.mp4'
-map '0:v' -s 1024:576 -sn -vcodec h264 -movflags +faststart -strict -2 -threads 1 '/tmp/dev/built-output-1024.mp4'
-map '0:v' -sn -vf "fps=0.425" -s 640:360 -threads 1 '/tmp/dev/preview/%08d.jpg'
-map '0:v' -sn -q:v 1 -vf "fps=0.425" -s 1024:576 -threads 1 '/tmp/dev/preview_hires/%02d.jpg'
"""
subprocess.call([ffmpegCommand], ...)
解释:注:这可能不适用于您的用例,您可能需要调整 FFmpeg 参数并提供正确的路径。
关于python - 在 django 中将视频编码为多种分辨率的最佳方法是什么?我们应该创建一个 celery 任务还是要编码多个任务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63869403/