Dil*_*een 4 linux ffmpeg bash-scripting
我正在使用“while read”循环浏览文本文件。我从每一行读取三个变量 - 两个文件名和一个十进制数。我知道这适用于普通设置(循环、读取行、回显行、提取变量,仅此而已),因为我已经在输入文件上对其进行了测试。
但是,一旦我添加了例程的内容,我就会得到一个奇怪的结果 - 这是对 ffmpeg 的调用以合并由文件名表示的音频和视频流。连续的“读取”操作会忽略行中的前导字符。我在这里读到在“while read”循环中调用“read”输入可能会导致问题,并想知道 ffmpeg 调用是否正在做一些混淆 bash 的事情,但这似乎不太可能而且很奇怪!注意:我不太了解 ffmpeg 调用 - 我是从另一个问题的答案中得到的。
任何帮助,将不胜感激!
第一个“读取”按预期工作(并且 ffmpeg 命令完成):
LINE 1
vidsNeedingSound/448£generic@06_10_16-09_30_47.mp4 soundToAdd/448£generic@06_10_16-12_11_54.wav 6.988354
V: vidsNeedingSound/448£generic@06_10_16-09_30_47.mp4 A: soundToAdd/448£generic@06_10_16-12_11_54.wav D: 6.988354
Run Code Online (Sandbox Code Playgroud)
第二个“读取”从行首丢失 36 个字符(并且 ffmpeg 命令失败,因为由变量 V 表示的文件不指向文件,该文件取行的第一项):
LINE 2
6-09_30_47.mp4 soundToAdd/452£generic@06_10_16-12_11_54.wav 9.64663
V: 6-09_30_47.mp4 A: soundToAdd/452...
Run Code Online (Sandbox Code Playgroud)
第三个“读取”按预期工作(并且 ffmpeg 命令完成):
LINE 3
vidsNeedingSound/452£left@06_10_16-09_30_47.mp4 soundToAdd/452£left@06_10_16-12_11_54.wav 9.862118
V: vidsNeedingSound/452£left@06_10_16-09_30_47.mp4 A: soundToAdd/452...
Run Code Online (Sandbox Code Playgroud)
第四个“读取”从行首丢失 37 个字符(比最后一个失败多一个)(并且 ffmpeg 命令失败):
LINE 4
09_30_47.mp4 soundToAdd/452£right@06_10_16-12_11_54.wav 9.431392
V: 09_30_47.mp4 A: soundToAdd/452....
Run Code Online (Sandbox Code Playgroud)
这就是模式。如果之前没有成功调用 ffmpeg,则“读取”按预期工作。在每次连续成功的 ffmpeg 调用之后,从行首开始省略字符:以 36 个字符开头,然后是 37、38、39...
关键在于,当 ffmpeg 在“成功”读取后失败(由于另一个问题)时,以下“读取”会按预期工作。
结论:成功的 ffmpeg 调用会导致在循环的下一次迭代中读取失败。
为什么会发生这种情况,我该如何阻止它?
这是我的代码:...
# Loop through lines in the merge file
IT_COUNT=1
while read MERGE_LINE
do
echo "LINE " $IT_COUNT
((IT_COUNT+=1))
echo $MERGE_LINE # testing use
read VID_FILE AUD_FILE DURATION <<< "$MERGE_LINE" # Get the data from each line
echo "V: $VID_FILE A: $AUD_FILE D: $DURATION" # testing use
....
# add audio to video
ffmpeg -i $VID_FILE -i $AUD_FILE -filter_complex "aevalsrc=0:d=$AUD_SHIFT[s1];[s1][1:a]concat=n=2:v=0:a=1[aout]" -c:v copy -map 0:v -map [aout] $FILE_OUT -hide_banner
done <$MERGE_FILE
Run Code Online (Sandbox Code Playgroud)
感谢您的关注!
| 归档时间: |
|
| 查看次数: |
1623 次 |
| 最近记录: |