Squashed 'core/' content from commit 4957443
git-subtree-dir: core git-subtree-split: 4957443184ae0eb6323635a90a19acffb3e01d07
This commit is contained in:
50
artdag/nodes/encoding.py
Normal file
50
artdag/nodes/encoding.py
Normal file
@@ -0,0 +1,50 @@
|
||||
# artdag/nodes/encoding.py
|
||||
"""
|
||||
Web-optimized video encoding settings.
|
||||
|
||||
Provides common FFmpeg arguments for producing videos that:
|
||||
- Stream efficiently (faststart)
|
||||
- Play on all browsers (H.264 High profile)
|
||||
- Support seeking (regular keyframes)
|
||||
"""
|
||||
|
||||
from typing import List
|
||||
|
||||
# Standard web-optimized video encoding arguments
|
||||
WEB_VIDEO_ARGS: List[str] = [
|
||||
"-c:v", "libx264",
|
||||
"-preset", "fast",
|
||||
"-crf", "18",
|
||||
"-profile:v", "high",
|
||||
"-level", "4.1",
|
||||
"-pix_fmt", "yuv420p", # Ensure broad compatibility
|
||||
"-movflags", "+faststart", # Enable streaming before full download
|
||||
"-g", "48", # Keyframe every ~2 seconds at 24fps (for seeking)
|
||||
]
|
||||
|
||||
# Standard audio encoding arguments
|
||||
WEB_AUDIO_ARGS: List[str] = [
|
||||
"-c:a", "aac",
|
||||
"-b:a", "192k",
|
||||
]
|
||||
|
||||
|
||||
def get_web_encoding_args() -> List[str]:
|
||||
"""Get FFmpeg args for web-optimized video+audio encoding."""
|
||||
return WEB_VIDEO_ARGS + WEB_AUDIO_ARGS
|
||||
|
||||
|
||||
def get_web_video_args() -> List[str]:
|
||||
"""Get FFmpeg args for web-optimized video encoding only."""
|
||||
return WEB_VIDEO_ARGS.copy()
|
||||
|
||||
|
||||
def get_web_audio_args() -> List[str]:
|
||||
"""Get FFmpeg args for web-optimized audio encoding only."""
|
||||
return WEB_AUDIO_ARGS.copy()
|
||||
|
||||
|
||||
# For shell commands (string format)
|
||||
WEB_VIDEO_ARGS_STR = " ".join(WEB_VIDEO_ARGS)
|
||||
WEB_AUDIO_ARGS_STR = " ".join(WEB_AUDIO_ARGS)
|
||||
WEB_ENCODING_ARGS_STR = f"{WEB_VIDEO_ARGS_STR} {WEB_AUDIO_ARGS_STR}"
|
||||
Reference in New Issue
Block a user