media-toolkit 0.2.11.dev0__tar.gz → 0.2.13__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {media_toolkit-0.2.11.dev0 → media_toolkit-0.2.13}/PKG-INFO +1 -1
- {media_toolkit-0.2.11.dev0 → media_toolkit-0.2.13}/media_toolkit/core/content_detectors/puremagic_content_detector.py +3 -1
- {media_toolkit-0.2.11.dev0 → media_toolkit-0.2.13}/media_toolkit/core/video/video_file.py +3 -2
- {media_toolkit-0.2.11.dev0 → media_toolkit-0.2.13}/media_toolkit/core/video/video_file_info.py +6 -6
- {media_toolkit-0.2.11.dev0 → media_toolkit-0.2.13}/media_toolkit/core/video/video_utils.py +3 -2
- {media_toolkit-0.2.11.dev0 → media_toolkit-0.2.13}/media_toolkit.egg-info/PKG-INFO +1 -1
- {media_toolkit-0.2.11.dev0 → media_toolkit-0.2.13}/pyproject.toml +1 -1
- {media_toolkit-0.2.11.dev0 → media_toolkit-0.2.13}/LICENSE +0 -0
- {media_toolkit-0.2.11.dev0 → media_toolkit-0.2.13}/README.md +0 -0
- {media_toolkit-0.2.11.dev0 → media_toolkit-0.2.13}/media_toolkit/__init__.py +0 -0
- {media_toolkit-0.2.11.dev0 → media_toolkit-0.2.13}/media_toolkit/core/IMediaFile.py +0 -0
- {media_toolkit-0.2.11.dev0 → media_toolkit-0.2.13}/media_toolkit/core/MediaDict.py +0 -0
- {media_toolkit-0.2.11.dev0 → media_toolkit-0.2.13}/media_toolkit/core/MediaList.py +0 -0
- {media_toolkit-0.2.11.dev0 → media_toolkit-0.2.13}/media_toolkit/core/__init__.py +0 -0
- {media_toolkit-0.2.11.dev0 → media_toolkit-0.2.13}/media_toolkit/core/audio_file.py +0 -0
- {media_toolkit-0.2.11.dev0 → media_toolkit-0.2.13}/media_toolkit/core/content_detectors/__init__.py +0 -0
- {media_toolkit-0.2.11.dev0 → media_toolkit-0.2.13}/media_toolkit/core/content_detectors/numpy_content_detector.py +0 -0
- {media_toolkit-0.2.11.dev0 → media_toolkit-0.2.13}/media_toolkit/core/file_content_buffer.py +0 -0
- {media_toolkit-0.2.11.dev0 → media_toolkit-0.2.13}/media_toolkit/core/file_conversion.py +0 -0
- {media_toolkit-0.2.11.dev0 → media_toolkit-0.2.13}/media_toolkit/core/image_file.py +0 -0
- {media_toolkit-0.2.11.dev0 → media_toolkit-0.2.13}/media_toolkit/core/media_file.py +0 -0
- {media_toolkit-0.2.11.dev0 → media_toolkit-0.2.13}/media_toolkit/core/universal_file.py +0 -0
- {media_toolkit-0.2.11.dev0 → media_toolkit-0.2.13}/media_toolkit/core/video/__init__.py +0 -0
- {media_toolkit-0.2.11.dev0 → media_toolkit-0.2.13}/media_toolkit/utils/auto_async.py +0 -0
- {media_toolkit-0.2.11.dev0 → media_toolkit-0.2.13}/media_toolkit/utils/data_type_utils.py +0 -0
- {media_toolkit-0.2.11.dev0 → media_toolkit-0.2.13}/media_toolkit/utils/dependency_requirements.py +0 -0
- {media_toolkit-0.2.11.dev0 → media_toolkit-0.2.13}/media_toolkit/utils/download_helper.py +0 -0
- {media_toolkit-0.2.11.dev0 → media_toolkit-0.2.13}/media_toolkit/utils/generator_wrapper.py +0 -0
- {media_toolkit-0.2.11.dev0 → media_toolkit-0.2.13}/media_toolkit.egg-info/SOURCES.txt +0 -0
- {media_toolkit-0.2.11.dev0 → media_toolkit-0.2.13}/media_toolkit.egg-info/dependency_links.txt +0 -0
- {media_toolkit-0.2.11.dev0 → media_toolkit-0.2.13}/media_toolkit.egg-info/requires.txt +0 -0
- {media_toolkit-0.2.11.dev0 → media_toolkit-0.2.13}/media_toolkit.egg-info/top_level.txt +0 -0
- {media_toolkit-0.2.11.dev0 → media_toolkit-0.2.13}/setup.cfg +0 -0
- {media_toolkit-0.2.11.dev0 → media_toolkit-0.2.13}/test/test_media_toolkit.py +0 -0
|
@@ -24,8 +24,9 @@ class PureMagicContentDetector:
|
|
|
24
24
|
'bmp': 'ImageFile',
|
|
25
25
|
'tiff': 'ImageFile',
|
|
26
26
|
'tif': 'ImageFile',
|
|
27
|
+
'jfif': 'ImageFile',
|
|
27
28
|
|
|
28
|
-
# Image formats - limited support (use MediaFile).
|
|
29
|
+
# Image formats - limited support (use MediaFile).
|
|
29
30
|
# Consider install of pillow
|
|
30
31
|
'ico': 'MediaFile',
|
|
31
32
|
'webp': 'MediaFile', # Not fully supported in ImageFile yet
|
|
@@ -187,6 +188,7 @@ class PureMagicContentDetector:
|
|
|
187
188
|
'avif': 'image/avif',
|
|
188
189
|
'heic': 'image/heic',
|
|
189
190
|
'heif': 'image/heif',
|
|
191
|
+
'jfif': 'image/jpeg',
|
|
190
192
|
|
|
191
193
|
# Audio
|
|
192
194
|
'wav': 'audio/wav',
|
|
@@ -310,6 +310,7 @@ class VideoFile(MediaFile):
|
|
|
310
310
|
container = None
|
|
311
311
|
audio = None
|
|
312
312
|
stream_video = None
|
|
313
|
+
frame_count = 0 # Initialize frame_count before any potential exceptions
|
|
313
314
|
|
|
314
315
|
try:
|
|
315
316
|
container = av.open(temp_video_file_path)
|
|
@@ -318,6 +319,7 @@ class VideoFile(MediaFile):
|
|
|
318
319
|
if stream.type == 'video' and stream_video is None:
|
|
319
320
|
stream_video = stream
|
|
320
321
|
# We will extract audio separately using pydub for simplicity
|
|
322
|
+
audio_per_frame_duration = 0 # Initialize to prevent UnboundLocalError
|
|
321
323
|
if include_audio:
|
|
322
324
|
try:
|
|
323
325
|
audio = AudioSegment.from_file(temp_video_file_path)
|
|
@@ -333,7 +335,6 @@ class VideoFile(MediaFile):
|
|
|
333
335
|
include_audio = False
|
|
334
336
|
print("Could not extract audio_file from video file. Audio will not be included in the video stream.")
|
|
335
337
|
|
|
336
|
-
frame_count = 0
|
|
337
338
|
audio_shape = None
|
|
338
339
|
|
|
339
340
|
for frame in container.decode(video=0):
|
|
@@ -351,7 +352,7 @@ class VideoFile(MediaFile):
|
|
|
351
352
|
audio_shape = audio_data.shape
|
|
352
353
|
|
|
353
354
|
if audio_data is None:
|
|
354
|
-
audio_data = np.zeros(audio_shape)
|
|
355
|
+
audio_data = np.zeros(audio_shape if audio_shape is not None else (0,))
|
|
355
356
|
|
|
356
357
|
if audio_shape is not None:
|
|
357
358
|
if len(audio_data) < audio_shape[0]:
|
{media_toolkit-0.2.11.dev0 → media_toolkit-0.2.13}/media_toolkit/core/video/video_file_info.py
RENAMED
|
@@ -6,12 +6,12 @@ from fractions import Fraction
|
|
|
6
6
|
@dataclass
|
|
7
7
|
class VideoInfo:
|
|
8
8
|
"""Video metadata container with validation and derived properties."""
|
|
9
|
-
frame_rate:
|
|
10
|
-
frame_count:
|
|
11
|
-
duration:
|
|
12
|
-
width:
|
|
13
|
-
height:
|
|
14
|
-
audio_sample_rate:
|
|
9
|
+
frame_rate: float = None
|
|
10
|
+
frame_count: int = None
|
|
11
|
+
duration: float = None
|
|
12
|
+
width: int = None
|
|
13
|
+
height: int = None
|
|
14
|
+
audio_sample_rate: int = None
|
|
15
15
|
|
|
16
16
|
def __post_init__(self):
|
|
17
17
|
self._derive_missing()
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import tempfile
|
|
2
2
|
import tqdm
|
|
3
|
-
from typing import Union
|
|
4
3
|
from fractions import Fraction
|
|
5
4
|
|
|
6
5
|
from media_toolkit.utils.dependency_requirements import requires
|
|
@@ -33,7 +32,7 @@ except ImportError:
|
|
|
33
32
|
@requires('pydub', 'numpy')
|
|
34
33
|
def add_audio_to_video_file(
|
|
35
34
|
video_file: str,
|
|
36
|
-
audio_file:
|
|
35
|
+
audio_file: str,
|
|
37
36
|
save_path: str = None
|
|
38
37
|
):
|
|
39
38
|
"""
|
|
@@ -172,6 +171,8 @@ def video_from_image_generator(
|
|
|
172
171
|
if stream is not None:
|
|
173
172
|
for packet in stream.encode():
|
|
174
173
|
container.mux(packet)
|
|
174
|
+
else:
|
|
175
|
+
print("Warning: No valid frames were processed. Video file may be empty or corrupted.")
|
|
175
176
|
|
|
176
177
|
except Exception as e:
|
|
177
178
|
print(f"Error writing video: {e}")
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "media-toolkit"
|
|
7
|
-
version = "00.02.
|
|
7
|
+
version = "00.02.13"
|
|
8
8
|
description = "Web-ready standardized file processing and serialization. Read, load and convert to standard file types with a common interface."
|
|
9
9
|
requires-python = ">=3.8"
|
|
10
10
|
authors = [
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{media_toolkit-0.2.11.dev0 → media_toolkit-0.2.13}/media_toolkit/core/content_detectors/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{media_toolkit-0.2.11.dev0 → media_toolkit-0.2.13}/media_toolkit/core/file_content_buffer.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{media_toolkit-0.2.11.dev0 → media_toolkit-0.2.13}/media_toolkit/utils/dependency_requirements.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{media_toolkit-0.2.11.dev0 → media_toolkit-0.2.13}/media_toolkit.egg-info/dependency_links.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|