mirror of
https://github.com/MeexReay/Youtube2Maker.git
synced 2025-05-05 23:58:02 +03:00
many script encoding updates
This commit is contained in:
parent
bc13706ebd
commit
f74c112f7c
3
.gitignore
vendored
3
.gitignore
vendored
@ -1,3 +1,4 @@
|
||||
/build
|
||||
/videos/*
|
||||
!/videos/video-example.json
|
||||
!/videos/video-example.json
|
||||
/test
|
@ -3,6 +3,8 @@
|
||||
Это лишь попытка создать чтото похожее на [оригинальный ютуб 2 от Влада Кунякина](https://www.youtube.com/watch?v=Ywywiqissfg) \
|
||||
Если вы хотите получить оригинальный ютуб 2, то [покупайте флешку тут](https://t.me/kunyakin/16)
|
||||
|
||||

|
||||
|
||||
## Как собрать
|
||||
|
||||
1. Добавьте все видео в папку `videos/` (смотреть Добавление видео)
|
||||
|
@ -7,7 +7,7 @@ fi
|
||||
|
||||
VIDEO_URL=$1
|
||||
shift
|
||||
ADDITIONAL_ARGS="$@"
|
||||
ADDITIONAL_ARGS="$@"
|
||||
|
||||
VIDEO_ID=$(echo -n "$VIDEO_URL" | md5sum | awk '{print $1}')
|
||||
|
||||
@ -22,8 +22,8 @@ yt-dlp --skip-download --write-thumbnail -o "videos/${VIDEO_ID}_preview" "$VIDEO
|
||||
PREVIEW_FILENAME=$(find videos -type f -iname "${VIDEO_ID}_preview*")
|
||||
yt-dlp -f "bestvideo[ext=mp4]+bestaudio[ext=m4a]/best[ext=mp4]/best" -o "videos/${VIDEO_ID}_video" "$VIDEO_URL" $ADDITIONAL_ARGS
|
||||
VIDEO_FILENAME=$(find videos -type f -iname "${VIDEO_ID}_video*")
|
||||
|
||||
ffmpeg -i $VIDEO_FILENAME -c:v libsvtav1 -crf 15 -preset 4 -c:a copy "videos/${VIDEO_ID}.mkv"
|
||||
|
||||
ffmpeg -i $VIDEO_FILENAME -c:v libsvtav1 -c:a copy "videos/${VIDEO_ID}_video.mkv"
|
||||
|
||||
# ffmpeg -i "$VIDEO_FILENAME" \
|
||||
# -vf "scale='min(1920,iw)':'min(1080,ih)':force_original_aspect_ratio=decrease" \
|
||||
|
2
build.sh
2
build.sh
@ -13,4 +13,4 @@ for i in build/iso/www/videos/*.json; do
|
||||
done
|
||||
echo "]" >> build/iso/www/videos.js
|
||||
rm build/iso/www/videos/*.json
|
||||
mkisofs -r -J -o build/youtube2.iso -V "Youtube2" build/iso
|
||||
mkisofs -iso-level 3 -r -J -o build/youtube2.iso -V "Youtube2" build/iso
|
||||
|
@ -11,6 +11,10 @@ ADDITIONAL_ARGS="$@"
|
||||
|
||||
VIDEO_ID=$(echo -n "$VIDEO_URL" | md5sum | awk '{print $1}')
|
||||
|
||||
if [ -f "videos/${VIDEO_ID}.json" ]; then
|
||||
exit 0
|
||||
fi
|
||||
|
||||
mkdir -p "videos"
|
||||
|
||||
yt-dlp --skip-download --write-info-json -o "videos/${VIDEO_ID}" "$VIDEO_URL" $ADDITIONAL_ARGS
|
||||
@ -58,4 +62,4 @@ jq --arg id "$VIDEO_ID" \
|
||||
|
||||
rm "videos/${VIDEO_ID}.info.json"
|
||||
|
||||
echo "Видео успешно скачано"
|
||||
echo "Видео успешно скачано"
|
||||
|
@ -1,14 +1,9 @@
|
||||
#!/bin/bash
|
||||
|
||||
function compress_video {
|
||||
ffmpeg -i videos/$1 -c:v hevc_nvenc -preset p4 -rc vbr -cq 28 -b:v 0 -c:a aac -b:a 96k videos/tmp_$1
|
||||
mv videos/tmp_$1 videos/$1
|
||||
}
|
||||
|
||||
for video_file in videos/*.mp4; do
|
||||
base_name=$(basename "$video_file")
|
||||
|
||||
compress_video $base_name &
|
||||
./nvenc-compress.sh $base_name &
|
||||
done
|
||||
|
||||
wait
|
@ -6,7 +6,7 @@ if [ -z "$1" ]; then
|
||||
fi
|
||||
|
||||
function compress_video {
|
||||
ffmpeg -i videos/$1 -c:v hevc_nvenc -preset p4 -rc vbr -cq 28 -b:v 0 -c:a aac -b:a 96k videos/tmp_$1
|
||||
ffmpeg -i videos/$1 -c:v hevc_nvenc -tune ll -crf 26 -preset p7 videos/tmp_$1
|
||||
mv videos/tmp_$1 videos/$1
|
||||
}
|
||||
|
||||
|
20
nvenc-dl-playlist.sh
Normal file
20
nvenc-dl-playlist.sh
Normal file
@ -0,0 +1,20 @@
|
||||
#!/bin/bash
|
||||
|
||||
if [ -z "$1" ]; then
|
||||
echo "Ошибка: укажите ссылку на плейлист."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
PLAYLIST_URL=$1
|
||||
shift
|
||||
|
||||
VIDEO_URLS=$(yt-dlp --flat-playlist --print webpage_url "$PLAYLIST_URL")
|
||||
|
||||
echo "$VIDEO_URLS" | wc -l
|
||||
|
||||
for VIDEO_URL in $VIDEO_URLS; do
|
||||
echo "Загружаем видео: $VIDEO_URL"
|
||||
./nvenc-dl-video.sh "$VIDEO_URL" "$@"
|
||||
done
|
||||
|
||||
echo "Плейлист успешно скачан"
|
68
nvenc-dl-video.sh
Normal file
68
nvenc-dl-video.sh
Normal file
@ -0,0 +1,68 @@
|
||||
#!/bin/bash
|
||||
|
||||
if [ -z "$1" ]; then
|
||||
echo "Ошибка: укажите ссылку на видео."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
VIDEO_URL=$1
|
||||
shift
|
||||
ADDITIONAL_ARGS="$@"
|
||||
|
||||
VIDEO_ID=$(echo -n "$VIDEO_URL" | md5sum | awk '{print $1}')
|
||||
|
||||
mkdir -p "videos"
|
||||
|
||||
if [ -f "videos/${VIDEO_ID}.json" ]; then
|
||||
exit 0
|
||||
fi
|
||||
|
||||
yt-dlp --skip-download --write-info-json -o "videos/${VIDEO_ID}" "$VIDEO_URL" $ADDITIONAL_ARGS
|
||||
yt-dlp --skip-download --write-thumbnail -o "videos/${VIDEO_ID}_preview" "$VIDEO_URL" $ADDITIONAL_ARGS
|
||||
PREVIEW_FILENAME=$(find videos -type f -iname "${VIDEO_ID}_preview*")
|
||||
yt-dlp -f "bestvideo[ext=mp4]+bestaudio[ext=m4a]/best[ext=mp4]/best" -o "videos/${VIDEO_ID}_video" "$VIDEO_URL" $ADDITIONAL_ARGS
|
||||
VIDEO_FILENAME=$(find videos -type f -iname "${VIDEO_ID}_video*")
|
||||
mv $VIDEO_FILENAME "videos/${VIDEO_ID}_video.mp4"
|
||||
VIDEO_FILENAME="videos/${VIDEO_ID}_video.mp4"
|
||||
|
||||
ffmpeg -i videos/${VIDEO_ID}_video.mp4 -c:v hevc_nvenc -tune ll -crf 26 -preset p7 videos/${VIDEO_ID}_video_compressed.mp4
|
||||
VIDEO_FILENAME="videos/${VIDEO_ID}_video_compressed.mp4"
|
||||
|
||||
# ffmpeg -i "$VIDEO_FILENAME" \
|
||||
# -vf "scale='min(1920,iw)':'min(1080,ih)':force_original_aspect_ratio=decrease" \
|
||||
# -c:v libx264 -preset slow -crf 23 \
|
||||
# -c:a copy \
|
||||
# "videos/${VIDEO_ID}_video_compressed.mp4"
|
||||
|
||||
|
||||
NAME=$(jq -r '.fulltitle' "videos/${VIDEO_ID}.info.json")
|
||||
DESCRIPTION=$(jq -r '.description' "videos/${VIDEO_ID}.info.json")
|
||||
CHANNEL_NAME=$(jq -r '.uploader' "videos/${VIDEO_ID}.info.json")
|
||||
CHANNEL_ID=$(jq -r '.channel_id' "videos/${VIDEO_ID}.info.json")
|
||||
CHANNEL_URL=$(jq -r '.uploader_url' "videos/${VIDEO_ID}.info.json")
|
||||
|
||||
yt-dlp --write-thumbnail --skip-download \
|
||||
--playlist-items 0 -o "videos/${CHANNEL_ID}_avatar" "$CHANNEL_URL" $ADDITIONAL_ARGS
|
||||
AVATAR_FILENAME=$(find videos -type f -iname "${CHANNEL_ID}_avatar*")
|
||||
|
||||
jq --arg id "$VIDEO_ID" \
|
||||
--arg name "$NAME" \
|
||||
--arg description "$DESCRIPTION" \
|
||||
--arg video_file "${VIDEO_FILENAME}" \
|
||||
--arg image_file "${PREVIEW_FILENAME}" \
|
||||
--arg channel_name "$CHANNEL_NAME" \
|
||||
--arg channel_avatar_file "${AVATAR_FILENAME}" \
|
||||
'{
|
||||
id: $id,
|
||||
name: $name,
|
||||
description: $description,
|
||||
"video-file": $video_file,
|
||||
"image-file": $image_file,
|
||||
"channel-name": $channel_name,
|
||||
"channel-avatar-file": $channel_avatar_file
|
||||
}' \
|
||||
"videos/${VIDEO_ID}.info.json" > "videos/${VIDEO_ID}.json"
|
||||
|
||||
rm "videos/${VIDEO_ID}.info.json"
|
||||
|
||||
echo "Видео успешно скачано"
|
46
test-compressing.sh
Normal file
46
test-compressing.sh
Normal file
@ -0,0 +1,46 @@
|
||||
#!/bin/bash
|
||||
|
||||
mkdir -p test
|
||||
|
||||
echo "download test video"
|
||||
yt-dlp -o test/video -f "bestvideo[ext=mp4]+bestaudio[ext=m4a]/best[ext=mp4]/best" https://www.youtube.com/watch?v=G3C-VevI36s
|
||||
|
||||
# echo "av1 test 1"
|
||||
# ffmpeg -i "test/video.mp4" -c:v libsvtav1 -crf 23 -b:v 0 -cpu-used 4 -g 240 -strict -2 "test/video.av1.1.mp4" &
|
||||
# echo "av1 test 2"
|
||||
# ffmpeg -i "test/video.mp4" -c:v libsvtav1 -crf 23 "test/video.av1.2.mp4" &
|
||||
# echo "av1 test 3"
|
||||
# ffmpeg -i "test/video.mp4" -c:v libsvtav1 -crf 30 "test/video.av1.3.mp4" &
|
||||
# echo "av1 test 4"
|
||||
# ffmpeg -i "test/video.mp4" -c:v libsvtav1 "test/video.av1.4.mp4" &
|
||||
# wait
|
||||
# echo "libaom-av1 test 1"
|
||||
# ffmpeg -i "test/video.mp4" -c:v libaom-av1 -crf 23 -b:v 0 -cpu-used 4 -g 240 -strict -2 "test/video.libaom-av1.1.mp4" &
|
||||
# echo "libaom-av1 test 2"
|
||||
# ffmpeg -i "test/video.mp4" -c:v libaom-av1 -crf 23 "test/video.libaom-av1.2.mp4" &
|
||||
# echo "libaom-av1 test 3"
|
||||
# ffmpeg -i "test/video.mp4" -c:v libaom-av1 -crf 30 "test/video.libaom-av1.3.mp4" &
|
||||
# echo "libaom-av1 test 4"
|
||||
# ffmpeg -i "test/video.mp4" -c:v libaom-av1 "test/video.libaom-av1.4.mp4" &
|
||||
# wait
|
||||
# echo "nvenc test 1"
|
||||
# ffmpeg -i "test/video.mp4" -c:v hevc_nvenc -tune ll -crf 26 -preset p7 "test/video.nvenc.1.mp4" &
|
||||
# echo "nvenc test 2"
|
||||
# ffmpeg -i "test/video.mp4" -c:v hevc_nvenc -crf 26 -preset p7 "test/video.nvenc.2.mp4" &
|
||||
# wait
|
||||
# echo "nvenc test 3"
|
||||
# ffmpeg -i "test/video.mp4" -c:v hevc_nvenc -crf 30 -preset p7 "test/video.nvenc.3.mp4" &
|
||||
# echo "nvenc test 4"
|
||||
# fmpeg -i "test/video.mp4" -c:v hevc_nvenc -crf 30 "test/video.nvenc.4.mp4" &
|
||||
# wait
|
||||
# echo "nvenc test 5"
|
||||
# ffmpeg -i "test/video.mp4" -c:v hevc_nvenc -preset p7 "test/video.nvenc.5.mp4" &
|
||||
# echo "nvenc test 6"
|
||||
# ffmpeg -i "test/video.mp4" -c:v hevc_nvenc "test/video.nvenc.6.mp4" &
|
||||
# wait
|
||||
ffmpeg -i "test/video.mp4" \
|
||||
-c:v h264_nvenc \
|
||||
-preset p7 \
|
||||
-tune hq \
|
||||
-cq 50 \
|
||||
-profile main "test/video.nvenc.7.mp4"
|
Loading…
Reference in New Issue
Block a user