1 #[cfg(test)] 2 mod tests { 3 use crate::errors::MediaError; 4 use crate::flv2hls::Flv2HlsRemuxer; 5 use bytes::BytesMut; 6 use xflv::define::FlvData; 7 8 use xflv::demuxer::FlvDemuxer; 9 10 use std::fs::File; 11 use std::io::prelude::*; 12 use std::time::Instant; 13 14 #[allow(dead_code)] print(data: BytesMut)15 pub fn print(data: BytesMut) { 16 println!("==========={}", data.len()); 17 let mut idx = 0; 18 for i in data { 19 print!("{i:02X} "); 20 idx += 1; 21 if idx % 16 == 0 { 22 println!() 23 } 24 } 25 26 println!("===========") 27 } 28 #[allow(dead_code)] print_flv_data(data: FlvData)29 pub fn print_flv_data(data: FlvData) { 30 match data { 31 FlvData::Audio { timestamp, data } => { 32 println! {"==audio data begin=="}; 33 println! {"timestamp: {timestamp}"}; 34 println! {"data :"}; 35 print(data); 36 println! {"==audio data end=="}; 37 } 38 FlvData::Video { timestamp, data } => { 39 println! {"==video data begin=="}; 40 println! {"timestamp: {timestamp}"}; 41 println! {"data :"}; 42 print(data); 43 println! {"==video data end=="}; 44 } 45 _ => { 46 println!("not video or audio ") 47 } 48 } 49 } 50 51 //#[test] 52 #[allow(dead_code)] test_flv2hls() -> Result<(), MediaError>53 fn test_flv2hls() -> Result<(), MediaError> { 54 let mut file = 55 File::open("/Users/zexu/github/xiu/protocol/hls/src/xgplayer_demo.flv").unwrap(); 56 let mut contents = Vec::new(); 57 58 file.read_to_end(&mut contents)?; 59 60 let mut data = BytesMut::new(); 61 data.extend(contents); 62 63 let mut demuxer = FlvDemuxer::new(data); 64 demuxer.read_flv_header()?; 65 66 let start = Instant::now(); 67 let mut media_demuxer = 68 Flv2HlsRemuxer::new(5, String::from("live"), String::from("test"), false); 69 70 loop { 71 let data_ = demuxer.read_flv_tag(); 72 73 match data_ { 74 Ok(data) => { 75 if let Some(real_data) = data { 76 media_demuxer.process_flv_data(real_data)?; 77 } 78 } 79 80 Err(err) => { 81 media_demuxer.flush_remaining_data()?; 82 log::error!("readd err: {}", err); 83 break; 84 } 85 } 86 } 87 88 let elapsed = start.elapsed(); 89 println!("Debug: {elapsed:?}"); 90 91 Ok(()) 92 } 93 } 94