#python #ffmpeg #compression #video-compression
Вопрос:
я работаю над простым сценарием с использованием ffmpeg, чтобы уменьшить размер видео и добавить водяной знак к видео, а затем переместить окончательный вывод в сжатую папку… это мой сценарий.
сжатие работает, водяной знак работает, но проблема, с которой я сталкиваюсь, заключается в том, что конечный результат помещается в корневую папку, а не в сжатую папку… ниже я описываю структуру папок и свои сценарии
Структура Папок
rootfolder
|
|--media
|--vids
|--(video files, mov, mp4s)..
|--compressed
|--encode.py
Сценарий (encode.py) файл
import os
import subprocess
from pathlib import Path
dir_path = os.path.dirname(os.path.realpath(__file__))
vidfile = dir_path '/media/vids/mv1.mov'
watermark = dir_path '/media/watermark.png'
compressed = str(Path.cwd() / '/media/compressed/')
# 1. compress the video and store it in the media out folder
media_out = str(dir_path "/compressed_mv1s.mov").replace(" ", "\ ")
subprocess.run("ffmpeg -i " vidfile.replace(" ", "\ ")
" -vcodec libx264 -crf 22 " media_out, shell=True)
#2.add watermark to the video and move it to the compressed folder
media_watermarked = str(compressed '/w_mv1.mov').replace(" ", "\ ")
subprocess.run("ffmpeg -i " media_out " -i " watermark
" -filter_complex "overlay=main_w-(overlay_w 10) : main_h-(10 overlay_h)" " media_watermarked, shell=True)
таким образом, сжатие видео работает, добавление водяного знака работает, но последняя строка, ошибка от media_watermarked
переменной, я не уверен, что я делаю неправильно, но это неправильно решает папку, перемещая окончательный вывод в папку.. это ошибка, которую я получаю
Кроме того, как я могу одновременно запустить две команды ffmpeg, чтобы сжать видео и добавить водяной знак одновременно, не делая этого отдельно. Спасибо.
Комментарии:
1.
compressed = str(Path.cwd() / '/media/compressed/')
сжатый имеет » / «в конце, иmedia_watermarked = str(compressed '/w_mv1.mov')
здесь вы снова добавляете» / » после сжатой строки. Это, может быть, проблема здесь?2. Почему это делается в 2 командах ffmpeg вместо 1? Вы можете одновременно сжимать и наносить водяные знаки. Это будет быстрее, и вы избежите дополнительной потери генерации .
3. @llogan, вот почему я спросил… если у вас есть решение о том, как я мог бы объединить обе команды в одну.
4. @AndeCaleb Просто добавьте
-vcodec libx264 -crf 22
в свою команду водяных знаков.