gemer cheung 4 lat temu
rodzic
commit
da5c86d756
3 zmienionych plików z 272 dodań i 3 usunięć
  1. 260 0
      4dage-ffmpeg-lite
  2. 3 0
      README.md
  3. 9 3
      cap/batch_video_cover.sh

+ 260 - 0
4dage-ffmpeg-lite

@@ -0,0 +1,260 @@
+#!/bin/bash
+
+version="0.1.5"
+videoFile=''
+audioFile=''
+outputName=''
+outputFolder=''
+allowCacheStay=0
+tempFolder=/tmp/4dage-ffmpeg
+time=$(date "+%Y%m%d-%H%M%S")
+tempFilePrefix="4dage-source-${time}"
+declare -a outputVideoList=('mp4 flv')
+red=$(tput setaf 1)
+green=$(tput setaf 2)
+reset=$(tput sgr0)
+
+command_exists() {
+    if ! [[ -x $(command -v "$1") ]]; then
+        return 1
+    fi
+
+    return 0
+}
+print_usage() {
+    echo -e "\033[43;34m $package - 4dage custom version for ffmpeg lite: \033[0m"
+    echo "${green}If have problem with this, please contact with gemer AKA: 张宇鹏<zhangyupeng@cgaii.com>"
+    echo "$package [options] application [arguments]"
+    echo " "
+    echo "${red}options:"
+    echo "-h, --help                show brief help"
+    echo "-s, --source=source file path       input the video source path"
+    echo "-a, --audio=audio file path       audio file path"
+    echo "-n, --name=output file name       output file name"
+    echo "-o, --output=DIR      specify a directory to store output in"
+    echo "-v, --version      output verison"
+    echo "--cahche   maintain the cahche file for tmp folder"
+    echo " "
+    echo -e "\033[0;33m"
+    cat <<EOF
+                                  _oo0oo_
+                                 088888880
+                                 88" . "88
+                                 (| -_- |)
+                                  0\ = /0
+                               ___/'---'\___
+                             .' \\\\|     |// '.
+                            / \\\\|||  :  |||// \\
+                           /_ ||||| -:- |||||- \\
+                          |   | \\\\\\  -  /// |   |
+                          | \_|  ''\---/''  |_/ |
+                          \  .-\__  '-'  __/-.  /
+                        ___'. .'  /--.--\  '. .'___
+                     ."" '<  '.___\_<|>_/___.' >'  "".
+                    | | : '-  \'.;'\ _ /';.'/ - ' : | |
+                    \  \ '_.   \_ __\ /__ _/   .-' /  /
+                ====='-.____'.___ \_____/___.-'____.-'=====
+                                  '=---='
+   
+   
+              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+                        佛祖保佑    TTT    万无一失
+EOF
+    echo -e "\033[m"
+}
+make_temp_dir() {
+    # # Make a temp folder
+    if [ ! -d $tempFolder ]; then
+        mkdir -p $tempFolder && chmod 776 $tempFolder
+    fi
+}
+make_temp_dir
+
+while test $# -gt 0; do
+    case "$1" in
+    -h | --help)
+        print_usage
+        exit 0
+        ;;
+    -s)
+        shift
+        if test $# -gt 0; then
+
+            export videoFile=$1
+        else
+            echo "{$red}no video path specified"
+            exit 1
+        fi
+        shift
+        ;;
+    --source*)
+        export videoFile=$(echo $1 | sed -e 's/^[^=]*=//g')
+        echo $1
+        shift
+        ;;
+    -a)
+        shift
+        if test $# -gt 0; then
+            export audioFile=$1
+        else
+
+            echo "{$red}no audioFile specified"
+            exit 1
+        fi
+        shift
+        ;;
+    --audio*)
+        export audioFile=$(echo $1 | sed -e 's/^[^=]*=//g')
+        shift
+        ;;
+    -o)
+        shift
+        if test $# -gt 0; then
+            export outputFolder=$1
+        else
+            echo "{$red}no output dir folder specified"
+            exit 1
+        fi
+        shift
+        ;;
+    --output*)
+        export outputFolder=$(echo $1 | sed -e 's/^[^=]*=//g')
+        shift
+        ;;
+    -n)
+        shift
+        if test $# -gt 0; then
+            export outputName=$1
+        else
+            echo "no output video name specified"
+            exit 1
+        fi
+        shift
+        ;;
+    --name*)
+        export outputName=$(echo $1 | sed -e 's/^[^=]*=//g')
+        shift
+        ;;
+    --cache)
+        shift
+        echo "allow cahche remain"
+        export allowCacheStay=1
+        shift
+        ;;
+    -v)
+        echo "$version"
+        shift
+        ;;
+    *)
+        print_usage
+        # echo "111"
+        break
+        ;;
+    esac
+done
+
+mkVerison() {
+    echo "4dage-ffmpeg:$version" >>"$outputFolder/version"
+}
+takeVideoCap() {
+    FFREPORT=file="$outputFolder/$outputName.cap.txt":level=32 ffmpeg -hide_banner -loglevel error -y -i $tempVideo -r 1 -ss 00:00:01 -vframes 1 -vf "transpose=1,scale=iw/5:ih/5,setsar=1:1" -f image2 "$outputFolder/$outputName.jpg"
+}
+covertVideoTask() {
+    videoFileType=${videoFile##*.}
+    audioFileType=${audioFile##*.}
+    tempbaseAudio="$tempFolder/$tempFilePrefix-base.$audioFileType"
+    tempAudio="$tempFolder/$tempFilePrefix.$audioFileType"
+    tempVideo="$tempFolder/$tempFilePrefix.$videoFileType"
+    # FFREPORT=file="$outputFolder/audio.log":level=32 ffmpeg -i $tempAudio -filter_complex 'lv2=plugin=https\\://github.com/lucianodato/speech-denoiser' $tempAudio -y
+    FFREPORT=file="$outputFolder/$outputName.audio.txt":level=32 ffmpeg -i $audioFile -af "lv2=p=https\\\\://github.com/lucianodato/speech-denoiser" -ac 1 $tempAudio -y
+    RC=$?
+    if [ "${RC}" -ne "0" ]; then
+        FFREPORT=file="$outputFolder/$outputName.audio.txt":level=32 ffmpeg -i $audioFile -af "highpass=f=200, lowpass=f=3000" $tempAudio -y
+    fi
+    # -vf "scale=iw/2:ih/2"
+    ffmpeg -i $videoFile -i $tempAudio -c:v copy -c:a aac -strict -2 $tempVideo -y
+    FFREPORT=file="$outputFolder/$outputName.$videoFileType.txt":level=32 ffmpeg -i $tempVideo -s 1056x792 -c:v libx264 -profile:v high -level:v 4.1 -vf "scale=iw/2:ih/2" -pix_fmt yuv420p -movflags +faststart -bf 2 -c:a copy "$outputFolder/$outputName.$videoFileType" -y
+    FFREPORT=file="$outputFolder/$outputName.flv.txt":level=32 ffmpeg -i $tempVideo -s 1056x792 -c:v libx264 -ar 44100 -profile:v high -level:v 4.1 -vf "scale=iw/2:ih/2" -pix_fmt yuv420p -movflags +faststart -bf 2 -c:a copy "$outputFolder/$outputName.flv" -y
+    takeVideoCap
+    mkVerison
+    # ffmpeg -i $tempVideo -s 1056x792 -c:v libx265 -movflags faststart -bf 2 -c:a copy "$outputFolder/$outputName.265.$videoFileType" -y
+    # export lastOutPutVideo=$outputFolder/$outputName.$videoFileType
+    # export lastOutPutVideoFlv="$outputFolder/$outputName.flv"
+    if test $allowCacheStay -eq 0; then
+        rm $tempAudio $tempVideo
+    fi
+
+}
+
+concatAllLogFile() {
+    cat $outputFolder/*.txt >>"$outputFolder/$outputName.full.log"
+    rm $outputFolder/*.txt
+    # rm "$outputFolder/$outputName.$videoFileType.log" "$outputFolder/$outputName.audio.log" "$outputFolder/$outputName.flv.log"
+}
+
+if [ ! -z $videoFile ] && [ ! -z $audioFile ] && [ ! -z $outputName ] && [ ! -z $outputFolder ]; then
+    # ffmpeg -i $audioFile -af "highpass=f=200, lowpass=f=3000" temp.mp3 -y
+    # ffmpeg -i $audioFile -filter_complex 'lv2=plugin=https\\://github.com/lucianodato/speech-denoiser' $tempAudio -y
+    # ffmpeg -i $videoFile -i $tempAudio -c:v copy -c:a aac $tempVideo -y
+    # ffmpeg -i $tempVideo -s 1056x792 -c:v libx264 -profile:v high -level:v 4.0 -movflags faststart -bf 2 -c:a copy $outputFolder/$outputName.$i -y
+    # for i in "${outputVideoList[@]}"; do
+    # done
+    # ffmpeg -i temp.mp4 -s 1056x792 -c:v libx264 -profile:v high -level:v 4.0 -movflags faststart -bf 2 -c:a copy temp1.mp4 -y
+    # ffmpeg -i temp1.mp4 -pix_fmt rgb24 -color_range 2 $output -y
+    # rm temp.mp4 temp1.mp4 temp.mp3
+    if [ ! -d $outputFolder ]; then
+        mkdir -p $outputFolder
+    fi
+    covertVideoTask
+    concatAllLogFile
+    if command_exists "mediainfo"; then
+        mediainfo --fullscan "$outputFolder/$outputName.$videoFileType" --Output=JSON >"$outputFolder/$outputName.json"
+        mediainfo --fullscan "$outputFolder/$outputName.flv" --Output=JSON >"$outputFolder/$outputName.flv.json"
+    fi
+
+    echo "\033[0;32m"
+    cat <<EOF
+                                  _oo0oo_
+                                 088888880
+                                 88" . "88
+                                 (| -_- |)
+                                  0\ = /0
+                               ___/'---'\___
+                             .' \\\\|     |// '.
+                            / \\\\|||  :  |||// \\
+                           /_ ||||| -:- |||||- \\
+                          |   | \\\\\\  -  /// |   |
+                          | \_|  ''\---/''  |_/ |
+                          \  .-\__  '-'  __/-.  /
+                        ___'. .'  /--.--\  '. .'___
+                     ."" '<  '.___\_<|>_/___.' >'  "".
+                    | | : '-  \'.;'\ _ /';.'/ - ' : | |
+                    \  \ '_.   \_ __\ /__ _/   .-' /  /
+                ====='-.____'.___ \_____/___.-'____.-'=====
+                                  '=---='
+   
+   
+              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+                        佛祖保佑    TTT    顺利转换
+EOF
+    echo "\033[m"
+    echo "covert done!"
+else
+    if [ ! -n "$1" ]; then
+        print_usage
+    else
+        if [ -z $videoFile ]; then
+            echo "${red}miss video file path: 缺视频文件路径"
+        fi
+        if [ -z $audioFile ]; then
+            echo "${red}miss audio file path : 缺音频少文件路径"
+        fi
+        if [ -z $outputName ]; then
+            echo "${red}miss file name : 缺音输出文件名称"
+        fi
+        if [ -z $outputFolder ]; then
+            echo "${red}miss output path : 缺音输出路径"
+        fi
+    fi
+
+fi

+ 3 - 0
README.md

@@ -46,6 +46,9 @@ $ sudo /bin/bash -c "$(curl -fsSL http://192.168.0.115:3000/zhangyupeng/4dage-ff
 ```bash
 $ sudo /bin/bash -c "$(curl -fsSL http://192.168.0.115:3000/zhangyupeng/4dage-ffmpeg/raw/master/install-4dage)"  
 ```
+```bash
+$ sudo /bin/bash -c "$(curl -fsSL http://git.nps.gemer.xyz/zhangyupeng/4dage-ffmpeg/raw/master/install-4dage-outsider)"  
+```
 
 ### Deb installation:
 

+ 9 - 3
cap/batch_video_cover.sh

@@ -4,11 +4,17 @@ paths=$(cat paths.txt)
 picName=''
 videoInput=''
 
-
 takeVideoCap() {
     ffmpeg -hide_banner -loglevel error -y -i $videoInput -r 1 -ss 00:00:01 -vframes 1 -vf "transpose=1,scale=iw/4:ih/4,setsar=1:1" -f image2 "$filePath/${picName}.jpg"
 }
 
+command_exists() {
+    if ! [[ -x $(command -v "$1") ]]; then
+        return 1
+    fi
+
+    return 0
+}
 # fileurl=$1
 # directory=$2
 # /opt/ossutil/ossutil64 cp oss://4dkankan/$fileurl \-rf $directory
@@ -19,7 +25,7 @@ for path in $paths; do
     filePath=${pathParam[0]}
     code=${pathParam[1]}
 
-    if [ -d $filePath ]; then
+    if [ -d $filePath ] && command_exists "ffmpeg"; then
         videoList=("$filePath/*.mp4")
         if [ ${#videoList[@]} -gt 0 ]; then
             for video in $videoList; do
@@ -32,7 +38,7 @@ for path in $paths; do
                 takeVideoCap
 
                 echo -e "upload: video/video${code}"
-                /opt/ossutil/ossutil64 cp -f $filePath/${picName}.jpg oss://4dkankan/video/video${code}/
+                /opt/ossutil/ossutil64 cp -rf $filePath/${picName}.jpg oss://4dkankan/video/video${code}/
                 # https://4dkk2.4dage.com/video/videot-tXj1F7V/8.mp4?imagesVersion=5
 
             done