Я работаю над проектом потокового видео, где мне нужно применить динамические водяные знаки (например, имя пользователя и адрес электронной почты) в режиме реального времени в целях безопасности. Видео передается в формате DASH, а файлы сегментов — в формате .m4s, созданном с помощью FFmpeg. Задачи:
Можно ли напрямую применять динамические водяные знаки к файлам сегментов .m4s?
Сегменты видео генерируются с помощью FFmpeg с помощью следующей команды:
Что я пробовал:
Я пытался использовать FFmpeg для динамического применения водяного знака к файлам .m4s с помощью фильтра drawtext, но файлы .m4s не всегда распознаются как допустимые входные данные для операций FFmpeg.
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 подходящим форматом для динамических водяных знаков. Если нет, то какой подход будет правильным?
Я работаю над проектом потокового видео, где мне нужно применить динамические водяные знаки (например, имя пользователя и адрес электронной почты) в режиме реального времени в целях безопасности. Видео передается в формате DASH, а файлы сегментов — в формате .m4s, созданном с помощью FFmpeg. [b]Задачи:[/b] Можно ли напрямую применять динамические водяные знаки к файлам сегментов .m4s? Сегменты видео генерируются с помощью FFmpeg с помощью следующей команды: [code]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()
[/code] [b]Что я пробовал:[/b] Я пытался использовать FFmpeg для динамического применения водяного знака к файлам .m4s с помощью фильтра drawtext, но файлы .m4s не всегда распознаются как допустимые входные данные для операций FFmpeg. [code]# 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}")
[/code] [b]Ошибка, с которой я столкнулся:[/b] [code]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!
[/code] Эти ошибки заставили меня задуматься, является ли .m4s подходящим форматом для динамических водяных знаков. Если нет, то какой подход будет правильным?
WKWebView неправильно отображает файл .docx. Файл docx содержит логотипы в заголовке и водяной знак на заднем плане, который неправильно отображается пользователю.
Получение данных документа с сервера с использованием JSON, закодированного в...
поэтому я пытаюсь создать свою собственную схему окон, используя unkeyedprocessFunctions. Я использую источник и хочу использовать водяные знаки. Моя текущая реализация водяных знаков следующая:
this.watermarkStrategy = WatermarkStrategy...
Я работаю над проектом Java, который включает добавление текстовых водяных знаков в существующие большие файлы Excel (.xlsx, .xls) с использованием Apache POI .
Размер файлов, с которыми я имею дело, обычно составляет около 80 МБ.
Я пробовал...