-
Notifications
You must be signed in to change notification settings - Fork 416
Closed
Description
I am using the latest git repo code (cloned from this repo 2 weeks ago) on Ubuntu 16.04.
I am doing the demux and remux with the following code(no decode and encode at all):
output_file = av.open(mux_file, mode='w')
output_video_stream = output_file.add_stream(template=input_video_stream)
output_audio_stream = output_file.add_stream(template=input_audio_stream)
for packet_data in mux_tmp_buffer:
#print('before', packet_data.stream.type, packet_data.dts, packet_data.pts)
if packet_data.stream.type == b'video':
if packet_data.dts:
packet_data.dts = packet_data.dts - video_dts_start
packet_data.pts = packet_data.pts - video_dts_start
packet_data.stream = output_video_stream
mux_vpacket_c += 1
else:
if packet_data.dts:
packet_data.dts = packet_data.dts - audio_dts_start
packet_data.pts = packet_data.pts - audio_dts_start
packet_data.stream = output_audio_stream
#print('after', packet_data.stream.type, packet_data.dts, packet_data.pts)
output_file.mux(packet_data)
output_file.close()the mux_tmp_buffer is a packet list demuxed from input container.
But I got the following exceptions after run multiple times of above code.
Exception in thread Thread-1:
Traceback (most recent call last):
File "/usr/lib/python2.7/threading.py", line 801, in __bootstrap_inner
self.run()
File "/usr/lib/python2.7/threading.py", line 754, in run
self.__target(*self.__args, **self.__kwargs)
File "remux.py", line 482, in mux
mux_packet_c += muxer.extendRedisResult()
File "remux.py", line 399, in extendRedisResult
mux_packet_c += self.muxClip(self.ins[scene].name, l[0], l[-1], self.ins[scene].img_list)
File "remux.py", line 462, in muxClip
output_file.mux(packet_data)
File "av/container/output.pyx", line 199, in av.container.output.OutputContainer.mux
self.mux_one(packets)
File "av/container/output.pyx", line 213, in av.container.output.OutputContainer.mux_one
self.proxy.err_check(lib.av_interleaved_write_frame(self.proxy.ptr, &packet.struct))
File "av/container/core.pyx", line 183, in av.container.core.ContainerProxy.err_check
return err_check(value, filename=self.name)
File "av/utils.pyx", line 105, in av.utils.err_check
raise AVError(-res, message, filename, log)
AVError: [Errno 22] Invalid argument: '/home/gemfield/web/static/videos/xxxxxxxxxx.mp4' (16: mp4)
And another quesions, how to deal with the packet.dts value when doing the mux (what I am doing now is packet_data.pts = packet_data.pts - video_dts_start, which seems ugly...)?
Thanks very much.
Metadata
Metadata
Assignees
Labels
No labels