staging.inyokaproject.org

Script via Doppelklick ausführen, nur Dateien wählen die im Verzeichnis des Scriptes sind

Status: Gelöst | Ubuntu-Version: Ubuntu 22.04 (Jammy Jellyfish)
Antworten |

Gloster

Anmeldungsdatum:
9. April 2020

Beiträge: 417

Script via Doppelklick :

1. Eine.Desktop Datei erstellt die auf das aufzurufende Script verweist :

[Desktop Entry]
Type=Application
Name=ToZeroCompareVideo.sh
Exec=/home/user/Videos/vivictpp/ToZeroCompareVideo.sh
Terminal=true

2. Teile des Scripts :

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#!/bin/bash

declare -a new_videos

while IFS= read -r -d $'\0' video
do
    filename=$(basename -- "$video")
    filename="${filename%.*}"  
    
#ffmpeg grep, s.: https://stackoverflow.com/questions/16931244/checking-if-output-of-a-command-contains-a-certain-string-in-a-shell-script
    if ffmpeg -i "$video" null - 2>&1 | grep -q "hevc"; 
    #if ffmpeg -i "$video" null - 2>&1 | grep -q "h264"; 
    then
    	ffmpeg -y -i "$video" -codec copy -muxpreload 0 -muxdelay 0 -t 00:10:00.000 "${filename}0.mp4" </dev/null
    	new_video="${filename}0.mp4"
    	new_videos+=("$new_video")
    else
    	ffmpeg -y -i "$video" -codec copy -muxpreload 0 -muxdelay 0 -t 00:10:00.000 "${filename}O0.mp4" </dev/null
    	new_video="${filename}O0.mp4"
    	new_videos+=("$new_video")
    fi    
   
done < <(find -iregex ".*\.\(m2ts\|webm\|ts\|mkv\|mp4\)" -print0)
...

Die .Desktop Datei wurde auf den Desktop kopiert und dort ausgeführt.

Leider findet es alle Video Dateien im Home-Verzeichnis, einschließlich aller Unterordner,

und nicht nur die im "Exec=/home/user/Videos/vivictpp/ToZeroCompareVideo.sh" - Verzeichnis.

Wie begrenzt man die "read" Operation auf das Verzeichnis : "/home/user/Videos/vivictpp/" ?

Nebenbei : Wenn ich ein Script (Video-Kontext) im "Nautilus-Verzeichnis Schreibtisch" ausführe, findet es keine Datei.

Wenn ich das Script auf dem Desktop ausführe, findet es alle Videos in /home.

CarstenHa

Avatar von CarstenHa

Anmeldungsdatum:
1. Mai 2020

Beiträge: 154

Versuch mal:

1
find /home/user/Videos/vivictpp/ -iregex ".*\.\(m2ts\|webm\|ts\|mkv\|mp4\)" -print0

Gruß

Carsten

Gloster

(Themenstarter)

Anmeldungsdatum:
9. April 2020

Beiträge: 417

@CarstenHa,

Danke.

Wenn die Welt doch immer so einfach wäre.

Marc_BlackJack_Rintsch Team-Icon

Ehemalige
Avatar von Marc_BlackJack_Rintsch

Anmeldungsdatum:
16. Juni 2006

Beiträge: 4735

Im then und else Zweig steht ja fast das gleiche.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
    ...
    filename=$(basename -- "$video")
    filename="${filename%.*}"  
    if ffmpeg -i "$video" null - 2>&1 </dev/null | grep -q "hevc"
    then
      filename="${filename}0.mp4"
    else
      filename="${filename}O0.mp4"
    fi
    ffmpeg -y -i "$video" -codec copy -muxpreload 0 -muxdelay 0 -t 00:10:00.000 "$filename" </dev/null
    new_videos+=("$filename")
    ...
Antworten |