@@ -2,13 +2,7 @@ use eframe::egui;
22use image:: RgbaImage ;
33use std:: { path:: PathBuf , sync:: Arc , time:: Duration } ;
44use video_editor:: {
5- filters:: {
6- subtitle:: style:: {
7- colors:: PrimaryColorFilter , font_path:: FontPathFilter , font_size:: FontSizeFilter ,
8- } ,
9- traits:: OverlayFilterWrapper ,
10- } ,
11- metadata:: { create_text_overlay_metadata, get_metadata} ,
5+ metadata:: get_metadata,
126 tracks:: {
137 manager:: Manager ,
148 overlay_track:: OverlayTrack ,
@@ -35,7 +29,7 @@ impl VideoViewerApp {
3529 fn new ( ) -> Self {
3630 let mut manager = Manager :: new ( ) ;
3731
38- // ===== 添加 Overlay 轨道 1 : 图片 overlay (最上层) =====
32+ // ===== 添加 Overlay 轨道: 图片 overlay (最上层) =====
3933 let overlay_image_path = PathBuf :: from ( "data" ) . join ( "test.png" ) ;
4034 if !overlay_image_path. exists ( ) {
4135 log:: warn!(
@@ -61,64 +55,10 @@ impl VideoViewerApp {
6155
6256 manager. add_track ( Track :: Overlay ( Arc :: new ( overlay_image_track) ) ) ;
6357 log:: info!(
64- "Added image overlay track: 'test.png' (0.5-3.5s) - semi-transparent red [Layer 0 - Top]"
65- ) ;
66-
67- // ===== 添加 Overlay 轨道 2: 文字 overlay (第二层) =====
68- let overlay_text_duration = Duration :: from_secs ( 3 ) ;
69- let overlay_text_metadata = Arc :: new ( create_text_overlay_metadata (
70- "Overlay Text - SECOND LAYER" ,
71- overlay_text_duration,
72- ) ) ;
73-
74- // 添加字体路径滤镜
75- let font_path = PathBuf :: from ( "../../wayshot/ui/fonts/SourceHanSansCN.otf" ) ;
76- let mut overlay_text_segment = Segment :: new (
77- Duration :: ZERO , // 从 0 秒开始
78- overlay_text_duration,
79- overlay_text_metadata. clone ( ) ,
58+ "Added image overlay track: 'test.png' (0.5-3.5s) [Layer 0 - Top]"
8059 ) ;
8160
82- if font_path. exists ( ) {
83- // 作为 overlay filter 添加字体路径、大小和颜色
84- overlay_text_segment. add_overlay_filter ( OverlayFilterWrapper :: new_overlay_text (
85- true ,
86- Box :: new ( FontPathFilter :: new ( font_path. clone ( ) ) ) ,
87- ) ) ;
88- overlay_text_segment. add_overlay_filter (
89- OverlayFilterWrapper :: new_overlay_text ( true , Box :: new ( FontSizeFilter :: new ( 120 ) ) ) , // 大字体
90- ) ;
91- overlay_text_segment. add_overlay_filter (
92- OverlayFilterWrapper :: new_overlay_text (
93- true ,
94- Box :: new ( PrimaryColorFilter :: new ( Some ( image:: Rgba ( [
95- 255 , 255 , 0 , 255 ,
96- ] ) ) ) ) ,
97- ) , // 黄色文字
98- ) ;
99- log:: info!( "Added font path filter: {}" , font_path. display( ) ) ;
100- } else {
101- log:: warn!(
102- "Font file not found: {}, text overlay may not render correctly" ,
103- font_path. display( )
104- ) ;
105- }
106-
107- let overlay_text_segment = Arc :: new ( overlay_text_segment) ;
108-
109- let overlay_text_inner_track = InnerTrack :: new ( overlay_text_metadata, overlay_text_duration, vec ! [ overlay_text_segment] ) ;
110-
111- let overlay_text_track = OverlayTrack {
112- name : "Text Overlay" . to_string ( ) ,
113- hiding : false ,
114- locked : false ,
115- track : overlay_text_inner_track,
116- } ;
117-
118- manager. add_track ( Track :: Overlay ( Arc :: new ( overlay_text_track) ) ) ;
119- log:: info!( "Added text overlay track: 'Overlay Text - SECOND LAYER' (0-3s) [Layer 1]" ) ;
120-
121- // ===== 添加第一个视频轨道: test.mkv (第三层) =====
61+ // ===== 添加第一个视频轨道: test.mkv (第二层) =====
12262 let mkv_path = PathBuf :: from ( "data" ) . join ( "test.mkv" ) ;
12363 log:: info!( "Loading MKV video from: {}" , mkv_path. display( ) ) ;
12464
@@ -161,7 +101,7 @@ impl VideoViewerApp {
161101 } ;
162102
163103 manager. add_track ( Track :: Video ( Arc :: new ( mkv_video_track) ) ) ;
164- log:: info!( "Added MKV video track: test.mkv [Layer 2 ]" ) ;
104+ log:: info!( "Added MKV video track: test.mkv [Layer 1 ]" ) ;
165105
166106 // ===== 添加第二个视频轨道: test.mp4 (最底层) =====
167107 let file_path = PathBuf :: from ( "data" ) . join ( "test.mp4" ) ;
@@ -205,7 +145,7 @@ impl VideoViewerApp {
205145 } ;
206146
207147 manager. add_track ( Track :: Video ( Arc :: new ( video_track) ) ) ;
208- log:: info!( "Added MP4 video track: test.mp4 [Layer 3 - Bottom]" ) ;
148+ log:: info!( "Added MP4 video track: test.mp4 [Layer 2 - Bottom]" ) ;
209149
210150 let output_width = video_meta. width ;
211151 let output_height = video_meta. height ;
@@ -455,4 +395,4 @@ fn main() -> Result<(), eframe::Error> {
455395 Ok ( Box :: new ( VideoViewerApp :: new ( ) ) )
456396 } ) ,
457397 )
458- }
398+ }
0 commit comments