सवाल Ffmpeg के साथ trimming के लिए स्क्रिप्ट


मैं डीवीबी-सी और gnutv के माध्यम से रेडियो प्रसारण रिकॉर्ड कर रहा हूँ। रिकॉर्डिंग को ट्रिम करने के लिए मैं ffmpeg का उपयोग करता हूं।

Synthax टर्मिनल में प्रवेश करने के लिए लंबे समय तक rahter लेता है। इसलिए मैं इसे अनुकूलित करने के लिए एक स्क्रिप्ट पर काम कर रहा हूं। Hiere यह है:

#!/bin/bash
#Getting the input file:
read -e -p "Enter the absolute path for the .mpg-file: " PATH
# Start time of trimming:
read -p "Where should the trimming start? (Please enter in this format hh:mm:ss): " START
# End time of trimming:
read -p "When should the trimming end? (Please enter in this format hh:mm:ss): " END
# Informations about the song:
read -p "What song is it? " TITLE
read -p "Who sang it? " ARTIST
read -p "Which album?" ALBUM
# Determine the duration of trimming (given in seconds).
START2=$(echo $START | awk -F: '{ print ($1 * 3600) + ($2 * 60) + $3 }')
END2=$(echo $END | awk -F: '{ print ($1 * 3600) + ($2 * 60) + $3 }')
DURATION=$(expr $END2 - $START2)
ffmpeg -ss $ANFANG -i $PATH -t $DURATION -acodec copy -vcodec copy -metadata title=$TITLE -metadata author=$ARTIST $TITLE' · '$ARTIST'.mpg'

जब मैं "जॉन पारर" द्वारा "सेंट एल्मोस फायर" के लिए इस स्क्रिप्ट को चलाता हूं, तो मुझे मिलता है:

Unable to find a suitable output format for 'Elmo's'

मुझे लगता है कि यह $ TITLE और $ ARTIST में सफेद जगहों का कारण है। मैंने पहले ही \ और '' के साथ-साथ पढ़ने के लिए विकल्प भी आजमाया है। लेकिन यह एक समान त्रुटि संदेश उत्पन्न करता है। मैं क्या गलत कर रहा हूं?

अग्रिम में धन्यवाद का सबसे अच्छा संबंध है, मार्कस


1
2018-01-20 10:13


मूल




जवाब:


सबसे पहले, और सबसे महत्वपूर्ण बात यह है कि अपरकेस परिवर्तनीय नामों का उपयोग न करें। आप पर्यावरण चर और विशेष खोल चर को ओवरराइड करने का जोखिम लेते हैं, और इस मामले में आपने इसे ओवरराइट करके ही किया है PATH चर।

दूसरा। शेल स्क्रिप्टिंग में उद्धरण बहुत महत्वपूर्ण हैं; परिवर्तनीय विस्तार उद्धरण परिणाम को पथनाम विस्तार और शब्द विभाजन के अधीन होने से बचाता है।

उदाहरण के लिए, अगर var="St. Elmo's Fire.mpg", फिर $var तीन शब्द बन जाएगा St., Elmo's तथा Fire.mpg, जबकि "$var" एक शब्द बन जाएगा St. Elmo's Fire.mpg। तो हमेशा परिवर्तनीय विस्तार उद्धरण। "$var", नहीं $var

ऐसा कुछ और सही होना चाहिए:

#!/bin/bash
read -ep "Enter path for the .mpg-file: " file
IFS=: read -rp "Where should the trimming start? (HH:MM:SS): " shour smin ssec
IFS=: read -rp "When should the trimming end? (HH:MM:SS): " ehour emin esec
read -rp "What song is it? " title
read -rp "Who sang it? " artist
read -rp "Which album?" album

start=$(( shour*3600 + smin*60 + ssec ))
end=$(( ehour*3600 + emin*60 + esec ))
duration=$(( end - start ))

ffmpeg -i "$file" -t "$duration" -acodec copy -vcodec copy -metadata "title=$title" \
       -metadata "author=$artist" "$title · $artist.mpg"

आपका ffmpeg कमांड था -ss "$ANFANG", परंतु ANFANG आपकी स्क्रिप्ट में कभी सेट नहीं किया गया था, इसलिए मैंने इसे छोड़ दिया।


2
2018-01-20 10:36



बहुत बहुत धन्यवाद। यह अब पूरी तरह से काम करता है। मूल लिपि जर्मन है। मैं "एएनएफएएनजी" = शुरू करने के लिए चूक गया। मुझे लगता है, यही कारण है कि पाथ कोई समस्या नहीं थी, क्योंकि मेरी जर्मन लिपि में यह पीएफएडी थी। - Markus