36 lines
		
	
	
		
			956 B
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			36 lines
		
	
	
		
			956 B
		
	
	
	
		
			Python
		
	
	
	
	
	
# RozK
 | 
						|
 | 
						|
from mp4.demuxer import Demuxer
 | 
						|
from mp4.decoder import Decoder
 | 
						|
 | 
						|
demuxer = Demuxer('test.mp4')
 | 
						|
 | 
						|
print(demuxer.video_stream.codec.name)
 | 
						|
print(demuxer.audio_stream.codec.name)
 | 
						|
 | 
						|
video_decoder = Decoder(demuxer.video_stream)
 | 
						|
audio_decoder = Decoder(demuxer.audio_stream)
 | 
						|
 | 
						|
while True:
 | 
						|
    packet = demuxer.read_packet()
 | 
						|
    if packet is None:
 | 
						|
        break
 | 
						|
    if demuxer.video_stream.contains(packet):
 | 
						|
        video_frames = video_decoder.decode(packet)
 | 
						|
        print(f"decoded {len(video_frames)} video frames")
 | 
						|
        continue
 | 
						|
    elif demuxer.audio_stream.contains(packet):
 | 
						|
        audio_frames = audio_decoder.decode(packet)
 | 
						|
        print(f"decoded {len(audio_frames)} audio frames")
 | 
						|
        continue
 | 
						|
    else:
 | 
						|
        print("unkown packet")
 | 
						|
 | 
						|
video_frames = video_decoder.decode(None)
 | 
						|
print(f"flushed {len(video_frames)} video frames")
 | 
						|
 | 
						|
audio_frames = audio_decoder.decode(None)
 | 
						|
print(f"flushed {len(audio_frames)} audio frames")
 | 
						|
 | 
						|
demuxer.close()
 |