Added debugging extra data
This commit is contained in:
parent
6a40158e7b
commit
93e6c9992a
4 changed files with 157 additions and 28 deletions
|
|
@ -60,6 +60,22 @@ class avprobe(devedeng.avbase.avbase):
|
||||||
""" processes a file, refered by the FILE_MOVIE movie object, and fills its
|
""" processes a file, refered by the FILE_MOVIE movie object, and fills its
|
||||||
main data (resolution, FPS, length...) """
|
main data (resolution, FPS, length...) """
|
||||||
|
|
||||||
|
self.original_file_size = os.path.getsize(file_name)
|
||||||
|
|
||||||
|
command_line = ["avprobe",file_name,"-of","json","-show_streams", "-loglevel", "quiet"]
|
||||||
|
|
||||||
|
(stdout, stderr) = self.launch_process(command_line, False)
|
||||||
|
|
||||||
|
try:
|
||||||
|
stdout2 = stdout.decode("utf-8")
|
||||||
|
except:
|
||||||
|
stdout2 = stdout.decode("latin1")
|
||||||
|
self.config.append_log("AVProbe JSON data: "+str(stdout2))
|
||||||
|
return self.process_json(stdout2, file_name)
|
||||||
|
|
||||||
|
|
||||||
|
def process_json(self,stdout2,file_name):
|
||||||
|
|
||||||
self.audio_list=[]
|
self.audio_list=[]
|
||||||
self.audio_streams = 0
|
self.audio_streams = 0
|
||||||
self.video_list=[]
|
self.video_list=[]
|
||||||
|
|
@ -73,16 +89,6 @@ class avprobe(devedeng.avbase.avbase):
|
||||||
self.original_fps = 0
|
self.original_fps = 0
|
||||||
self.original_aspect_ratio = 0
|
self.original_aspect_ratio = 0
|
||||||
|
|
||||||
self.original_file_size = os.path.getsize(file_name)
|
|
||||||
|
|
||||||
command_line = ["avprobe",file_name,"-of","json","-show_streams", "-loglevel", "quiet"]
|
|
||||||
|
|
||||||
(stdout, stderr) = self.launch_process(command_line, False)
|
|
||||||
try:
|
|
||||||
stdout2 = stdout.decode("utf-8")
|
|
||||||
except:
|
|
||||||
stdout2 = stdout.decode("latin1")
|
|
||||||
|
|
||||||
try:
|
try:
|
||||||
video_data = json.loads(stdout2)
|
video_data = json.loads(stdout2)
|
||||||
except:
|
except:
|
||||||
|
|
@ -137,7 +143,7 @@ class avprobe(devedeng.avbase.avbase):
|
||||||
stdout2 = stdout.decode("utf-8") + "\n" + stderr.decode("utf-8")
|
stdout2 = stdout.decode("utf-8") + "\n" + stderr.decode("utf-8")
|
||||||
except:
|
except:
|
||||||
stdout2 = stdout.decode("latin1") + "\n" + stderr.decode("latin1")
|
stdout2 = stdout.decode("latin1") + "\n" + stderr.decode("latin1")
|
||||||
|
self.config.append_log("Using avprobe human readable format: "+str(stdout2))
|
||||||
for line in stdout2.split("\n"):
|
for line in stdout2.split("\n"):
|
||||||
line = line.strip()
|
line = line.strip()
|
||||||
if line.startswith("Duration: "):
|
if line.startswith("Duration: "):
|
||||||
|
|
|
||||||
|
|
@ -46,6 +46,7 @@ class configuration(GObject.GObject):
|
||||||
for line in proc_file:
|
for line in proc_file:
|
||||||
if (line.startswith("processor")):
|
if (line.startswith("processor")):
|
||||||
self.cores += 1
|
self.cores += 1
|
||||||
|
proc_file.close()
|
||||||
|
|
||||||
is_local = None
|
is_local = None
|
||||||
self.log = ""
|
self.log = ""
|
||||||
|
|
|
||||||
|
|
@ -60,6 +60,22 @@ class ffprobe(devedeng.executor.executor):
|
||||||
""" processes a file, refered by the FILE_MOVIE movie object, and fills its
|
""" processes a file, refered by the FILE_MOVIE movie object, and fills its
|
||||||
main data (resolution, FPS, length...) """
|
main data (resolution, FPS, length...) """
|
||||||
|
|
||||||
|
self.original_file_size = os.path.getsize(file_name)
|
||||||
|
|
||||||
|
command_line = ["ffprobe",file_name,"-of","json","-show_streams", "-loglevel", "quiet"]
|
||||||
|
|
||||||
|
(stdout, stderr) = self.launch_process(command_line, False)
|
||||||
|
try:
|
||||||
|
stdout2 = stdout.decode("utf-8")
|
||||||
|
except:
|
||||||
|
stdout2 = stdout.decode("latin1")
|
||||||
|
|
||||||
|
self.config.append_log("FFProbe JSON data: "+str(stdout2))
|
||||||
|
return self.process_json(file_name,stdout2)
|
||||||
|
|
||||||
|
|
||||||
|
def process_json(self,file_name,stdout2):
|
||||||
|
|
||||||
self.audio_list=[]
|
self.audio_list=[]
|
||||||
self.audio_streams = 0
|
self.audio_streams = 0
|
||||||
self.video_list=[]
|
self.video_list=[]
|
||||||
|
|
@ -73,16 +89,6 @@ class ffprobe(devedeng.executor.executor):
|
||||||
self.original_fps = 0
|
self.original_fps = 0
|
||||||
self.original_aspect_ratio = 0
|
self.original_aspect_ratio = 0
|
||||||
|
|
||||||
self.original_file_size = os.path.getsize(file_name)
|
|
||||||
|
|
||||||
command_line = ["ffprobe",file_name,"-of","json","-show_streams", "-loglevel", "quiet"]
|
|
||||||
|
|
||||||
(stdout, stderr) = self.launch_process(command_line, False)
|
|
||||||
try:
|
|
||||||
stdout2 = stdout.decode("utf-8")
|
|
||||||
except:
|
|
||||||
stdout2 = stdout.decode("latin1")
|
|
||||||
|
|
||||||
try:
|
try:
|
||||||
video_data = json.loads(stdout2)
|
video_data = json.loads(stdout2)
|
||||||
except:
|
except:
|
||||||
|
|
@ -137,7 +143,7 @@ class ffprobe(devedeng.executor.executor):
|
||||||
stdout2 = stdout.decode("utf-8") + "\n" + stderr.decode("utf-8")
|
stdout2 = stdout.decode("utf-8") + "\n" + stderr.decode("utf-8")
|
||||||
except:
|
except:
|
||||||
stdout2 = stdout.decode("latin1") + "\n" + stderr.decode("latin1")
|
stdout2 = stdout.decode("latin1") + "\n" + stderr.decode("latin1")
|
||||||
|
self.config.append_log("Using ffprobe human readable format: "+str(stdout2))
|
||||||
for line in stdout2.split("\n"):
|
for line in stdout2.split("\n"):
|
||||||
line = line.strip()
|
line = line.strip()
|
||||||
if line.startswith("Duration: "):
|
if line.startswith("Duration: "):
|
||||||
|
|
|
||||||
|
|
@ -1,11 +1,12 @@
|
||||||
import unittest
|
import unittest
|
||||||
import devedeng.avbase
|
import devedeng.avbase
|
||||||
|
import devedeng.avprobe
|
||||||
|
|
||||||
class TestAVConv(unittest.TestCase):
|
class TestAVConv(unittest.TestCase):
|
||||||
|
|
||||||
def test_ubuntu_14_04(self):
|
def test_ubuntu_14_04(self):
|
||||||
c = devedeng.avbase.avbase()
|
c = devedeng.avbase.avbase()
|
||||||
c.check_version_txt("""avconv version 9.18-6:9.18-0ubuntu0.14.04.1, Copyright (c) 2000-2014 the Libav developers
|
text = """avconv version 9.18-6:9.18-0ubuntu0.14.04.1, Copyright (c) 2000-2014 the Libav developers
|
||||||
built on Mar 16 2015 13:19:10 with gcc 4.8 (Ubuntu 4.8.2-19ubuntu1)
|
built on Mar 16 2015 13:19:10 with gcc 4.8 (Ubuntu 4.8.2-19ubuntu1)
|
||||||
avconv 9.18-6:9.18-0ubuntu0.14.04.1
|
avconv 9.18-6:9.18-0ubuntu0.14.04.1
|
||||||
libavutil 52. 3. 0 / 52. 3. 0
|
libavutil 52. 3. 0 / 52. 3. 0
|
||||||
|
|
@ -14,7 +15,9 @@ libavformat 54. 20. 4 / 54. 20. 4
|
||||||
libavdevice 53. 2. 0 / 53. 2. 0
|
libavdevice 53. 2. 0 / 53. 2. 0
|
||||||
libavfilter 3. 3. 0 / 3. 3. 0
|
libavfilter 3. 3. 0 / 3. 3. 0
|
||||||
libavresample 1. 0. 1 / 1. 0. 1
|
libavresample 1. 0. 1 / 1. 0. 1
|
||||||
libswscale 2. 1. 1 / 2. 1. 1""".split("\n"))
|
libswscale 2. 1. 1 / 2. 1. 1""".split("\n")
|
||||||
|
text.append(9)
|
||||||
|
c.check_version_txt(text)
|
||||||
|
|
||||||
self.assertEqual(c.major_version, 9, "Detecting major version for Ubuntu 14.04's AVConv version")
|
self.assertEqual(c.major_version, 9, "Detecting major version for Ubuntu 14.04's AVConv version")
|
||||||
self.assertEqual(c.minor_version, 18, "Detecting minor version for Ubuntu 14.04's AVConv version")
|
self.assertEqual(c.minor_version, 18, "Detecting minor version for Ubuntu 14.04's AVConv version")
|
||||||
|
|
@ -22,7 +25,7 @@ libswscale 2. 1. 1 / 2. 1. 1""".split("\n"))
|
||||||
|
|
||||||
def test_ubuntu_14_10(self):
|
def test_ubuntu_14_10(self):
|
||||||
c = devedeng.avbase.avbase()
|
c = devedeng.avbase.avbase()
|
||||||
c.check_version_txt("""avconv version 11-6:11-1, Copyright (c) 2000-2014 the Libav developers
|
text = """avconv version 11-6:11-1, Copyright (c) 2000-2014 the Libav developers
|
||||||
built on Sep 26 2014 14:36:31 with gcc 4.9.1 (Ubuntu 4.9.1-15ubuntu1)
|
built on Sep 26 2014 14:36:31 with gcc 4.9.1 (Ubuntu 4.9.1-15ubuntu1)
|
||||||
avconv 11-6:11-1
|
avconv 11-6:11-1
|
||||||
libavutil 54. 3. 0 / 54. 3. 0
|
libavutil 54. 3. 0 / 54. 3. 0
|
||||||
|
|
@ -31,7 +34,9 @@ libavformat 56. 1. 0 / 56. 1. 0
|
||||||
libavdevice 55. 0. 0 / 55. 0. 0
|
libavdevice 55. 0. 0 / 55. 0. 0
|
||||||
libavfilter 5. 0. 0 / 5. 0. 0
|
libavfilter 5. 0. 0 / 5. 0. 0
|
||||||
libavresample 2. 1. 0 / 2. 1. 0
|
libavresample 2. 1. 0 / 2. 1. 0
|
||||||
libswscale 3. 0. 0 / 3. 0. 0""".split("\n"))
|
libswscale 3. 0. 0 / 3. 0. 0""".split("\n")
|
||||||
|
text.append(9)
|
||||||
|
c.check_version_txt(text)
|
||||||
|
|
||||||
self.assertEqual(c.major_version, 11, "Detecting major version for Ubuntu 14.10's AVConv version")
|
self.assertEqual(c.major_version, 11, "Detecting major version for Ubuntu 14.10's AVConv version")
|
||||||
self.assertEqual(c.minor_version, 0, "Detecting minor version for Ubuntu 14.10's AVConv version")
|
self.assertEqual(c.minor_version, 0, "Detecting minor version for Ubuntu 14.10's AVConv version")
|
||||||
|
|
@ -39,7 +44,7 @@ libswscale 3. 0. 0 / 3. 0. 0""".split("\n"))
|
||||||
|
|
||||||
def test_ubuntu_15_04(self):
|
def test_ubuntu_15_04(self):
|
||||||
c = devedeng.avbase.avbase()
|
c = devedeng.avbase.avbase()
|
||||||
c.check_version_txt("""avconv version 11.2-6:11.2-1, Copyright (c) 2000-2014 the Libav developers
|
text = """avconv version 11.2-6:11.2-1, Copyright (c) 2000-2014 the Libav developers
|
||||||
built on Jan 18 2015 05:12:33 with gcc 4.9.2 (Ubuntu 4.9.2-10ubuntu2)
|
built on Jan 18 2015 05:12:33 with gcc 4.9.2 (Ubuntu 4.9.2-10ubuntu2)
|
||||||
avconv 11.2-6:11.2-1
|
avconv 11.2-6:11.2-1
|
||||||
libavutil 54. 3. 0 / 54. 3. 0
|
libavutil 54. 3. 0 / 54. 3. 0
|
||||||
|
|
@ -48,11 +53,122 @@ libavformat 56. 1. 0 / 56. 1. 0
|
||||||
libavdevice 55. 0. 0 / 55. 0. 0
|
libavdevice 55. 0. 0 / 55. 0. 0
|
||||||
libavfilter 5. 0. 0 / 5. 0. 0
|
libavfilter 5. 0. 0 / 5. 0. 0
|
||||||
libavresample 2. 1. 0 / 2. 1. 0
|
libavresample 2. 1. 0 / 2. 1. 0
|
||||||
libswscale 3. 0. 0 / 3. 0. 0""".split("\n"))
|
libswscale 3. 0. 0 / 3. 0. 0""".split("\n")
|
||||||
|
text.append(9)
|
||||||
|
c.check_version_txt(text)
|
||||||
|
|
||||||
self.assertEqual(c.major_version, 11, "Detecting major version for Ubuntu 15.04's AVConv version")
|
self.assertEqual(c.major_version, 11, "Detecting major version for Ubuntu 15.04's AVConv version")
|
||||||
self.assertEqual(c.minor_version, 2, "Detecting minor version for Ubuntu 15.04's AVConv version")
|
self.assertEqual(c.minor_version, 2, "Detecting minor version for Ubuntu 15.04's AVConv version")
|
||||||
|
|
||||||
|
|
||||||
|
def test_mkv1(self):
|
||||||
|
|
||||||
|
|
||||||
|
c = devedeng.avprobe.avprobe()
|
||||||
|
json_test = """{
|
||||||
|
"streams": [
|
||||||
|
{
|
||||||
|
"index": 0,
|
||||||
|
"codec_name": "aac",
|
||||||
|
"codec_long_name": "AAC (Advanced Audio Coding)",
|
||||||
|
"profile": "LC",
|
||||||
|
"codec_type": "audio",
|
||||||
|
"codec_time_base": "1/44100",
|
||||||
|
"codec_tag_string": "mp4a",
|
||||||
|
"codec_tag": "0x6134706d",
|
||||||
|
"sample_fmt": "fltp",
|
||||||
|
"sample_rate": "44100",
|
||||||
|
"channels": 2,
|
||||||
|
"channel_layout": "stereo",
|
||||||
|
"bits_per_sample": 0,
|
||||||
|
"r_frame_rate": "0/0",
|
||||||
|
"avg_frame_rate": "0/0",
|
||||||
|
"time_base": "1/44100",
|
||||||
|
"start_pts": 0,
|
||||||
|
"start_time": "0.000000",
|
||||||
|
"duration_ts": 3771392,
|
||||||
|
"duration": "85.519093",
|
||||||
|
"bit_rate": "115596",
|
||||||
|
"nb_frames": "3683",
|
||||||
|
"disposition": {
|
||||||
|
"default": 1,
|
||||||
|
"dub": 0,
|
||||||
|
"original": 0,
|
||||||
|
"comment": 0,
|
||||||
|
"lyrics": 0,
|
||||||
|
"karaoke": 0,
|
||||||
|
"forced": 0,
|
||||||
|
"hearing_impaired": 0,
|
||||||
|
"visual_impaired": 0,
|
||||||
|
"clean_effects": 0,
|
||||||
|
"attached_pic": 0
|
||||||
|
},
|
||||||
|
"tags": {
|
||||||
|
"creation_time": "2005-12-20 20:20:15",
|
||||||
|
"language": "eng",
|
||||||
|
"handler_name": "Apple Sound Media Handler"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"index": 1,
|
||||||
|
"codec_name": "h264",
|
||||||
|
"codec_long_name": "H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10",
|
||||||
|
"profile": "Constrained Baseline",
|
||||||
|
"codec_type": "video",
|
||||||
|
"codec_time_base": "1/2000",
|
||||||
|
"codec_tag_string": "avc1",
|
||||||
|
"codec_tag": "0x31637661",
|
||||||
|
"width": 320,
|
||||||
|
"height": 240,
|
||||||
|
"has_b_frames": 0,
|
||||||
|
"sample_aspect_ratio": "0:1",
|
||||||
|
"display_aspect_ratio": "0:1",
|
||||||
|
"pix_fmt": "yuv420p",
|
||||||
|
"level": 13,
|
||||||
|
"color_range": "tv",
|
||||||
|
"color_space": "smpte170m",
|
||||||
|
"color_transfer": "bt709",
|
||||||
|
"color_primaries": "smpte170m",
|
||||||
|
"chroma_location": "topleft",
|
||||||
|
"is_avc": "1",
|
||||||
|
"nal_length_size": "4",
|
||||||
|
"r_frame_rate": "10/1",
|
||||||
|
"avg_frame_rate": "10/1",
|
||||||
|
"time_base": "1/1000",
|
||||||
|
"start_pts": 0,
|
||||||
|
"start_time": "0.000000",
|
||||||
|
"duration_ts": 85500,
|
||||||
|
"duration": "85.500000",
|
||||||
|
"bit_rate": "90795",
|
||||||
|
"bits_per_raw_sample": "8",
|
||||||
|
"nb_frames": "855",
|
||||||
|
"disposition": {
|
||||||
|
"default": 1,
|
||||||
|
"dub": 0,
|
||||||
|
"original": 0,
|
||||||
|
"comment": 0,
|
||||||
|
"lyrics": 0,
|
||||||
|
"karaoke": 0,
|
||||||
|
"forced": 0,
|
||||||
|
"hearing_impaired": 0,
|
||||||
|
"visual_impaired": 0,
|
||||||
|
"clean_effects": 0,
|
||||||
|
"attached_pic": 0
|
||||||
|
},
|
||||||
|
"tags": {
|
||||||
|
"creation_time": "2005-12-20 20:20:15",
|
||||||
|
"language": "eng",
|
||||||
|
"handler_name": "Apple Video Media Handler"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}"""
|
||||||
|
retval = c.process_json(json_test,"filename.mkv")
|
||||||
|
self.assertFalse(retval)
|
||||||
|
self.assertEqual(c.audio_streams, 1, "Checking number of audio streams")
|
||||||
|
self.assertEqual(c.audio_list[0], 0, "Checking audio stream 1")
|
||||||
|
self.assertEqual(c.video_streams, 1, "Checking number of video streams")
|
||||||
|
self.assertEqual(c.video_list[0], 1, "Checking video stream 1")
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
unittest.main()
|
unittest.main()
|
||||||
Loading…
Add table
Add a link
Reference in a new issue