File size: 2,997 Bytes
40e52db
 
 
88e4b1c
 
 
 
 
a87a1d9
 
 
 
88e4b1c
 
 
 
 
6d9b79c
88e4b1c
6d9b79c
88e4b1c
6d9b79c
 
 
88e4b1c
 
 
6d9b79c
 
88e4b1c
 
 
a87a1d9
 
 
 
 
 
 
 
 
 
 
 
a6626fd
88e4b1c
a6626fd
6e83c08
88e4b1c
8b40206
b024c7c
40e52db
 
 
6477da7
88e4b1c
a87a1d9
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
99053e9
a87a1d9
40e52db
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
import gradio as gr
import os

css = """
p {
    font-size: 120%;
}

li {
    font-size: 110%;
}

.container {
    height: initial;
}

video {
    max-height: 400px;
}

.image-container {
    width: 200px; 
    max-height: 300px;
    margin: auto;
}

img {
    width: auto;
    height: auto;
}
"""

# Optional CSS stuff for the header example image:
#example {
#    width: 80%;
#    height: 60%
#}

#example img {
#    width: 80%;
#    height: 80%
#}


a = os.path.join(os.path.dirname(__file__), "files/barkley_balloon.mp4")
b = os.path.join(os.path.dirname(__file__), "files/eiffel_tower.mp4")
w1 = os.path.join(os.path.dirname(__file__), "files/AI_generated.png")
w2 = os.path.join(os.path.dirname(__file__), "files/hf-logo.png")
w3 = os.path.join(os.path.dirname(__file__), "files/forest_qr_watermarking.png")
w4 = os.path.join(os.path.dirname(__file__), "files/cheetah1.jpg")

def generate_video(original_video, watermark):
    return gr.Video(original_video, watermark=watermark)

# Use RGBA image mode to preserve transparency for png images.
with gr.Blocks(css=css) as demo:
    with gr.Row():
        with gr.Column():
            gr.Markdown("# 🤗 Watermarking with Gradio: Example")
            gr.Markdown("Watermarks can be **visible** or **invisible**.")
            gr.Markdown("""They can provide information directly, or provide a link for more information.  
                           - Visible watermarks can help to disclose when content is AI-generated, so viewers know it's synthetic.  
                           - Invisible watermarks can help to mark content as authentic.""")
            gr.Markdown()
            gr.Markdown()
            gr.Markdown("""For more information on watermarking -- what watermarking is, why it's important,  
        and the tools available on Hugging Face -- please check out [our blogpost on AI watermarking](https://huggingface.co/blog/watermarking).""")
            gr.Markdown()
            gr.Markdown("## Try it out below!")
        with gr.Column():
            with gr.Column():
                gr.Image('files/watermark_example.png', visible=False)
            with gr.Column():
                gr.Image('files/watermark_example.png', show_label=False, show_download_button=False, elem_id='example', container=False, interactive=False)
                gr.Markdown('**Code:**')
                gr.Code('import gradio as gr\n\nwatermarked_video = gr.Video(original_video_file, watermark=watermark_file)', lines=3)
            with gr.Column():
                gr.Image('files/watermark_example.png', visible=False)
    with gr.Row():
        with gr.Column():
            gr.Markdown("**Inputs**: Video and watermark file")
        with gr.Column():
            gr.Markdown("**Output**: Watermarked video")
    gr.Interface(generate_video, [gr.Video(), gr.Image(type='filepath', image_mode=None)], gr.Video(),
                            examples=[[a, w1], [b, w2], [a, w3], [b, w4]])

if __name__ == "__main__":
    demo.launch()