Как применить динамические водяные знаки для пользователей, просматривающих видео в режиме реального времени? [закрыто]Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Как применить динамические водяные знаки для пользователей, просматривающих видео в режиме реального времени? [закрыто]

Сообщение Anonymous »

Я работаю над проектом потокового видео, где мне нужно применить динамические водяные знаки (например, имя пользователя и адрес электронной почты) в режиме реального времени в целях безопасности. Видео передается в формате DASH, а файлы сегментов — в формате .m4s, созданном с помощью FFmpeg.
Задачи:
Можно ли напрямую применять динамические водяные знаки к файлам сегментов .m4s?
Сегменты видео генерируются с помощью FFmpeg с помощью следующей команды:

Код: Выделить всё

ffmpeg
.input(video_path)
.output(mpd_path,
format='dash',
map='0',
video_bitrate='2400k',
video_size='1920x1080',
vcodec='libx264',
seg_duration='4',  # Sets segment duration to 4 seconds
acodec='copy')
.run()

Что я пробовал:
Я пытался использовать FFmpeg для динамического применения водяного знака к файлам .m4s с помощью фильтра drawtext, но файлы .m4s не всегда распознаются как допустимые входные данные для операций FFmpeg.

Код: Выделить всё

# FFmpeg command to add watermark to m4s file
try:
# FFmpeg processing
out, err = (
ffmpeg
.input(m4s_file_path)  # Input the segment file
.filter(
"drawtext",
text=user_info,
fontfile="font/dejavu-sans/DejaVuSans-Bold.ttf",
fontsize=24,
fontcolor="white",
x=10,
y=10
)
.output(
"pipe:",  # Stream output as a byte stream
format="mp4",  # Output format as MP4 (compatible with MPEG-DASH)
vcodec="libx264",
acodec="copy",
movflags="frag_keyframe+empty_moov"
)
.run(capture_stdout=True, capture_stderr=True)
)

logger.info(f"FFmpeg process completed. stdout length: {len(out)}, stderr: {err.decode('utf-8')}")
logger.error(f"FFmpeg stderr: {err.decode('utf-8')}")
return out  # Return the processed video stream data

except ffmpeg.Error as e:
stderr_output = e.stderr.decode('utf-8') if e.stderr else "No stderr available"
logger.error(f"FFmpeg error: {stderr_output}")

raise RuntimeError(f"Error processing video: {stderr_output}")

Ошибка, с которой я столкнулся:

Код: Выделить всё

video-streaming-backend  | [mov,mp4,m4a,3gp,3g2,mj2 @ 0x7f1bf99cc640] Could not find codec parameters for stream 0 (Video: h264 (avc1 / 0x31637661), none(tv, bt709), 1920x1012): unspecified pixel format
video-streaming-backend  | Consider increasing the value for the 'analyzeduration' (10000000) and 'probesize' (5000000) options
video-streaming-backend  | Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'http://web:8000/media/stream_video/chunks/ec1db006-b488-47ad-8220-79a05bcaae39/segments/init-stream0.m4s':
video-streaming-backend  |   Metadata:
video-streaming-backend  |     major_brand     : iso5
video-streaming-backend  |     minor_version   : 512
video-streaming-backend  |     compatible_brands: iso5iso6mp41
video-streaming-backend  |     encoder         : Lavf60.16.100
video-streaming-backend  |   Duration: N/A, bitrate: N/A
video-streaming-backend  |   Stream #0:0[0x1](und): Video: h264 (avc1 / 0x31637661), none(tv, bt709), 1920x1012, SAR 1:1 DAR 480:253, 12288 tbr, 12288 tbn (default)
video-streaming-backend  |     Metadata:
video-streaming-backend  |       handler_name    : VideoHandler
video-streaming-backend  |       vendor_id       : [0][0][0][0]
video-streaming-backend  | Stream mapping:
video-streaming-backend  |   Stream #0:0 (h264) -> drawtext:default
video-streaming-backend  |   drawtext:default -> Stream #0:0 (libx264)
video-streaming-backend  | Press [q] to stop, [?] for help
video-streaming-backend  | Cannot determine format of input stream 0:0 after EOF
video-streaming-backend  | Error marking filters as finished
video-streaming-backend  | Error while filtering: Invalid data found when processing input
video-streaming-backend  | [out#0/mp4 @ 0x7f1bf8e73100] Nothing was written into output file, because at least one of its streams received no packets.
video-streaming-backend  | frame=    0 fps=0.0 q=0.0 Lsize=       0kB time=N/A bitrate=N/A speed=N/A
video-streaming-backend  | Conversion failed!

Эти ошибки заставили меня задуматься, является ли .m4s подходящим форматом для динамических водяных знаков. Если нет, то какой подход будет правильным?

Подробнее здесь: https://stackoverflow.com/questions/793 ... -real-time
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • C# – iText7 – водяные знаки (штамп) HTML поверх PDF
    Гость » » в форуме C#
    0 Ответы
    65 Просмотры
    Последнее сообщение Гость
  • C# – iText7 – водяные знаки (штамп) HTML поверх PDF
    Гость » » в форуме C#
    0 Ответы
    88 Просмотры
    Последнее сообщение Гость
  • WKWebview неправильно отображает файл .docx, документ содержит логотипы в заголовке и водяные знаки, которые не отобража
    Гость » » в форуме IOS
    0 Ответы
    75 Просмотры
    Последнее сообщение Гость
  • Водяные знаки не увеличиваются при мигании
    Anonymous » » в форуме JAVA
    0 Ответы
    40 Просмотры
    Последнее сообщение Anonymous
  • Как добавить текстовые водяные знаки в существующие файлы Excel размером 80 МБ с помощью Apache POI?
    Anonymous » » в форуме JAVA
    0 Ответы
    23 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Python»