40 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			40 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
# People's Video Editor: high quality, GPU accelerated mp4 editor
 | 
						|
# Copyright (C) 2025 Roz K <roz@rozk.net>
 | 
						|
#
 | 
						|
# This file is part of People's Video Editor.
 | 
						|
#
 | 
						|
# People's Video Editor is free software: you can redistribute it and/or modify it under the terms of the
 | 
						|
# GNU General Public License as published by the Free Software Foundation, either version 3 of the License,
 | 
						|
# or (at your option) any later version.
 | 
						|
#
 | 
						|
# People's Video Editor is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
 | 
						|
# without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
 | 
						|
# See the GNU General Public License for more details.
 | 
						|
#
 | 
						|
# You should have received a copy of the GNU General Public License along with People's Video Editor.
 | 
						|
# If not, see <https://www.gnu.org/licenses/>.
 | 
						|
 | 
						|
from mp4.demuxer import Demuxer
 | 
						|
from mp4.decoder import Decoder
 | 
						|
 | 
						|
demuxer = Demuxer('test.mp4')
 | 
						|
 | 
						|
print(f"nb_streams  = {demuxer.nb_streams}")
 | 
						|
print(f"video codec = {demuxer.video_stream.codec.name}")
 | 
						|
print(f"audio codec = {demuxer.audio_stream.codec.name}")
 | 
						|
 | 
						|
video_decoder = Decoder(demuxer.video_stream)
 | 
						|
audio_decoder = Decoder(demuxer.audio_stream)
 | 
						|
 | 
						|
while True:
 | 
						|
    packet = demuxer.read_packet()
 | 
						|
    eof = (packet is None)
 | 
						|
    if eof or demuxer.video_stream.contains(packet):
 | 
						|
        video_frames = video_decoder.decode(packet)
 | 
						|
        print(f"decoded {len(video_frames)} video frames")
 | 
						|
    if eof or demuxer.audio_stream.contains(packet):
 | 
						|
        audio_frames = audio_decoder.decode(packet)
 | 
						|
        print(f"decoded {len(audio_frames)} audio frames")
 | 
						|
    if eof:
 | 
						|
        break
 |