currunt code
This commit is contained in:
parent
972dfdf561
commit
7f90e50ecc
|
|
@ -1,16 +1,18 @@
|
|||
apt update;
|
||||
apt upgrade -y;
|
||||
apt install php ffmpeg apache2 php-gd samba python3-pip -y
|
||||
apt install php ffmpeg apache2 php-gd jq samba python3-pip -y
|
||||
|
||||
rm -rf /var/www/html/*
|
||||
mkdir -p /var/www/html/download /var/www/html/downloader /var/www/html/download/queue /var/www/html/download/ready
|
||||
mkdir -p /var/www/html/download /var/www/html/downloader /var/www/html/download/queue /var/www/html/download/ready /var/www/html/settings
|
||||
|
||||
cp -r downloader/* /var/www/html/downloader
|
||||
cp -r settings/* /var/www/html/settings
|
||||
cp index.php /var/www/html/
|
||||
|
||||
# Create system user if it doesn't exist
|
||||
sudo useradd -m -s /bin/bash shreebhattji
|
||||
sudo smbpasswd -a shreebhattji
|
||||
echo "foreverstreamingpartner" | sudo smbpasswd -s -a shreebhattji
|
||||
printf "foreverstreamingpartner\nforeverstreamingpartner\n" | sudo smbpasswd -s -a shreebhattji
|
||||
sudo chmod 755 /var/www/html
|
||||
|
||||
# Add shreebhattji to www-data group to avoid read/write conflicts
|
||||
|
|
@ -54,4 +56,10 @@ StandardError=journal
|
|||
WantedBy=multi-user.target
|
||||
EOF
|
||||
|
||||
systemctl enable transcode
|
||||
systemctl restart transcode
|
||||
|
||||
chown -R www-data:www-data /var/www/
|
||||
chmod 777 -R /var/www/html/download
|
||||
|
||||
pip install yt-dlp --break-system-packages
|
||||
202
transcode.sh
202
transcode.sh
|
|
@ -1,11 +1,12 @@
|
|||
#!/bin/bash
|
||||
echo "Transcoding service started..."
|
||||
|
||||
# Configuration
|
||||
QUEUE_DIR="/var/www/download/queue"
|
||||
READY_DIR="/var/www/download/ready"
|
||||
SETTINGS_FILE="/path/to/settings/settings.json"
|
||||
QUEUE_DIR="/var/www/html/download/queue"
|
||||
READY_DIR="/var/www/html/download/ready"
|
||||
SETTINGS_FILE="/var/www/html/settings/settings.json"
|
||||
LOG_FILE="/var/log/convert.log"
|
||||
LOGO_FILE="/var/www/settings/logo.png"
|
||||
LOGO_FILE="/var/www/html/settings/logo.png"
|
||||
|
||||
# Create directories if they don't exist
|
||||
mkdir -p "$QUEUE_DIR"
|
||||
|
|
@ -99,18 +100,109 @@ while true; do
|
|||
# Calculate logo size
|
||||
logo_size=$(calculate_logo_size "$video_width" "$video_height")
|
||||
|
||||
# Convert file with ffmpeg using settings from JSON and logo overlay
|
||||
if ffmpeg -i "$file" \
|
||||
-c:v "$VIDEO_FORMAT" \
|
||||
# STB compatible encoding based on video format
|
||||
if [ "$VIDEO_FORMAT" = "mpeg2video" ]; then
|
||||
# MPEG2 settings for STB compatibility
|
||||
ffmpeg \
|
||||
-i "$file" \
|
||||
-i "$LOGO_FILE" \
|
||||
-filter_complex "\
|
||||
[0:v]scale=${RESOLUTION}[v];\
|
||||
[1:v]scale=${logo_size}[logo];\
|
||||
[v][logo]overlay=W-w-20:20" \
|
||||
-c:v mpeg2video \
|
||||
-b:v "$VIDEO_BITRATE" \
|
||||
-bt "$VIDEO_BITRATE" \
|
||||
-maxrate "$VIDEO_BITRATE" \
|
||||
-bufsize "$VIDEO_BITRATE" \
|
||||
-flags +global_header \
|
||||
-profile:v 2 \
|
||||
-level:v 4 \
|
||||
-c:a "$AUDIO_FORMAT" \
|
||||
-b:a "$AUDIO_BITRATE" \
|
||||
-s "$RESOLUTION" \
|
||||
-ab "$AUDIO_BITRATE" \
|
||||
-r "$FRAME_RATE" \
|
||||
-g "$GOP" \
|
||||
-vf "scale=iw:ih,overlay=W-w-10:10" \
|
||||
"$output_file" 2>>"$LOG_FILE"; then
|
||||
# If conversion successful, remove original file
|
||||
-f mpegts "$output_file" \
|
||||
2>>"$LOG_FILE"
|
||||
elif [ "$VIDEO_FORMAT" = "libx264" ]; then
|
||||
# H.264 settings for STB compatibility
|
||||
ffmpeg \
|
||||
-i "$file" \
|
||||
-i "$LOGO_FILE" \
|
||||
-filter_complex "\
|
||||
[0:v]scale=${RESOLUTION}[v];\
|
||||
[1:v]scale=${logo_size}[logo];\
|
||||
[v][logo]overlay=W-w-20:20" \
|
||||
-c:v libx264 \
|
||||
-b:v "$VIDEO_BITRATE" \
|
||||
-bt "$VIDEO_BITRATE" \
|
||||
-maxrate "$VIDEO_BITRATE" \
|
||||
-bufsize "$VIDEO_BITRATE" \
|
||||
-preset fast \
|
||||
-profile:v baseline \
|
||||
-level 3.0 \
|
||||
-flags +global_header \
|
||||
-c:a "$AUDIO_FORMAT" \
|
||||
-b:a "$AUDIO_BITRATE" \
|
||||
-ab "$AUDIO_BITRATE" \
|
||||
-r "$FRAME_RATE" \
|
||||
-g "$GOP" \
|
||||
-f mpegts "$output_file" \
|
||||
2>>"$LOG_FILE"
|
||||
elif [ "$VIDEO_FORMAT" = "libx265" ]; then
|
||||
# H.265 settings for STB compatibility
|
||||
ffmpeg \
|
||||
-i "$file" \
|
||||
-i "$LOGO_FILE" \
|
||||
-filter_complex "\
|
||||
[0:v]scale=${RESOLUTION}[v];\
|
||||
[1:v]scale=${logo_size}[logo];\
|
||||
[v][logo]overlay=W-w-20:20" \
|
||||
-c:v libx265 \
|
||||
-b:v "$VIDEO_BITRATE" \
|
||||
-bt "$VIDEO_BITRATE" \
|
||||
-maxrate "$VIDEO_BITRATE" \
|
||||
-bufsize "$VIDEO_BITRATE" \
|
||||
-preset fast \
|
||||
-profile:v main \
|
||||
-level 3.0 \
|
||||
-flags +global_header \
|
||||
-c:a "$AUDIO_FORMAT" \
|
||||
-b:a "$AUDIO_BITRATE" \
|
||||
-ab "$AUDIO_BITRATE" \
|
||||
-r "$FRAME_RATE" \
|
||||
-g "$GOP" \
|
||||
-f mpegts "$output_file" \
|
||||
2>>"$LOG_FILE"
|
||||
else
|
||||
# Default fallback to MPEG2
|
||||
ffmpeg \
|
||||
-i "$file" \
|
||||
-i "$LOGO_FILE" \
|
||||
-filter_complex "\
|
||||
[0:v]scale=${RESOLUTION}[v];\
|
||||
[1:v]scale=${logo_size}[logo];\
|
||||
[v][logo]overlay=W-w-20:20" \
|
||||
-c:v mpeg2video \
|
||||
-b:v "$VIDEO_BITRATE" \
|
||||
-bt "$VIDEO_BITRATE" \
|
||||
-maxrate "$VIDEO_BITRATE" \
|
||||
-bufsize "$VIDEO_BITRATE" \
|
||||
-flags +global_header \
|
||||
-profile:v 2 \
|
||||
-level:v 4 \
|
||||
-c:a "$AUDIO_FORMAT" \
|
||||
-b:a "$AUDIO_BITRATE" \
|
||||
-ab "$AUDIO_BITRATE" \
|
||||
-r "$FRAME_RATE" \
|
||||
-g "$GOP" \
|
||||
-f mpegts "$output_file" \
|
||||
2>>"$LOG_FILE"
|
||||
fi
|
||||
|
||||
# Check if conversion was successful
|
||||
if [ $? -eq 0 ]; then
|
||||
rm "$file"
|
||||
echo "$(date): Successfully converted $original_name to $sanitized_name" >> "$LOG_FILE"
|
||||
else
|
||||
|
|
@ -118,17 +210,93 @@ while true; do
|
|||
echo "$(date): Failed to convert $original_name" >> "$LOG_FILE"
|
||||
fi
|
||||
else
|
||||
# Convert file without logo if logo file doesn't exist
|
||||
if ffmpeg -i "$file" \
|
||||
-c:v "$VIDEO_FORMAT" \
|
||||
# STB compatible encoding without logo
|
||||
if [ "$VIDEO_FORMAT" = "mpeg2video" ]; then
|
||||
# MPEG2 settings for STB compatibility
|
||||
ffmpeg \
|
||||
-i "$file" \
|
||||
-c:v mpeg2video \
|
||||
-b:v "$VIDEO_BITRATE" \
|
||||
-bt "$VIDEO_BITRATE" \
|
||||
-maxrate "$VIDEO_BITRATE" \
|
||||
-bufsize "$VIDEO_BITRATE" \
|
||||
-flags +global_header \
|
||||
-profile:v 2 \
|
||||
-level:v 4 \
|
||||
-c:a "$AUDIO_FORMAT" \
|
||||
-b:a "$AUDIO_BITRATE" \
|
||||
-ab "$AUDIO_BITRATE" \
|
||||
-s "$RESOLUTION" \
|
||||
-r "$FRAME_RATE" \
|
||||
-g "$GOP" \
|
||||
"$output_file" 2>>"$LOG_FILE"; then
|
||||
# If conversion successful, remove original file
|
||||
-f mpegts "$output_file" \
|
||||
2>>"$LOG_FILE"
|
||||
elif [ "$VIDEO_FORMAT" = "libx264" ]; then
|
||||
# H.264 settings for STB compatibility
|
||||
ffmpeg \
|
||||
-i "$file" \
|
||||
-c:v libx264 \
|
||||
-b:v "$VIDEO_BITRATE" \
|
||||
-bt "$VIDEO_BITRATE" \
|
||||
-maxrate "$VIDEO_BITRATE" \
|
||||
-bufsize "$VIDEO_BITRATE" \
|
||||
-preset fast \
|
||||
-profile:v baseline \
|
||||
-level 3.0 \
|
||||
-flags +global_header \
|
||||
-c:a "$AUDIO_FORMAT" \
|
||||
-b:a "$AUDIO_BITRATE" \
|
||||
-ab "$AUDIO_BITRATE" \
|
||||
-s "$RESOLUTION" \
|
||||
-r "$FRAME_RATE" \
|
||||
-g "$GOP" \
|
||||
-f mpegts "$output_file" \
|
||||
2>>"$LOG_FILE"
|
||||
elif [ "$VIDEO_FORMAT" = "libx265" ]; then
|
||||
# H.265 settings for STB compatibility
|
||||
ffmpeg \
|
||||
-i "$file" \
|
||||
-c:v libx265 \
|
||||
-b:v "$VIDEO_BITRATE" \
|
||||
-bt "$VIDEO_BITRATE" \
|
||||
-maxrate "$VIDEO_BITRATE" \
|
||||
-bufsize "$VIDEO_BITRATE" \
|
||||
-preset fast \
|
||||
-profile:v main \
|
||||
-level 3.0 \
|
||||
-flags +global_header \
|
||||
-c:a "$AUDIO_FORMAT" \
|
||||
-b:a "$AUDIO_BITRATE" \
|
||||
-ab "$AUDIO_BITRATE" \
|
||||
-s "$RESOLUTION" \
|
||||
-r "$FRAME_RATE" \
|
||||
-g "$GOP" \
|
||||
-f mpegts "$output_file" \
|
||||
2>>"$LOG_FILE"
|
||||
else
|
||||
# Default fallback to MPEG2
|
||||
ffmpeg \
|
||||
-i "$file" \
|
||||
-c:v mpeg2video \
|
||||
-b:v "$VIDEO_BITRATE" \
|
||||
-bt "$VIDEO_BITRATE" \
|
||||
-maxrate "$VIDEO_BITRATE" \
|
||||
-bufsize "$VIDEO_BITRATE" \
|
||||
-flags +global_header \
|
||||
-profile:v 2 \
|
||||
-level:v 4 \
|
||||
-c:a "$AUDIO_FORMAT" \
|
||||
-b:a "$AUDIO_BITRATE" \
|
||||
-ab "$AUDIO_BITRATE" \
|
||||
-s "$RESOLUTION" \
|
||||
-r "$FRAME_RATE" \
|
||||
-g "$GOP" \
|
||||
-f mpegts "$output_file" \
|
||||
2>>"$LOG_FILE"
|
||||
fi
|
||||
|
||||
# Check if conversion was successful
|
||||
if [ $? -eq 0 ]; then
|
||||
rm "$file"
|
||||
echo "$(date): Successfully converted $original_name to $sanitized_name" >> "$LOG_FILE"
|
||||
else
|
||||
|
|
@ -139,5 +307,5 @@ while true; do
|
|||
done
|
||||
|
||||
# Wait before checking for new files
|
||||
sleep 5
|
||||
sleep 60
|
||||
done
|
||||
Loading…
Reference in New Issue