- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 ffmpeg 构建一个应用程序。其中我需要减去两个文件的开始时间(只有两个文件作为输入)。以下是我的代码。
#!/bin/bash
mkvarray=()
mkvarray_name=()
for video_name in *.mkv; do
output=$(ffprobe -v error -show_entries format=start_time -of default=noprint_wrappers=1:nokey=1 "$video_name")
mkvarray+=($output)
mkvarray_name+=("$video_name")
done
arraylength=${#mkvarray[@]}
for (( i=0; i<${arraylength}; i++ ));
do
echo ${mkvarray_name[$i-1]} "------> " ${mkvarray[$i-1]}
done
max_number=0
if [[ ${mkvarray[0]} < ${mkvarray[1]} ]]; then
echo "first-------------"
max_number = ${mkvarray[0]} - ${mkvarray[1]}
echo "first " $max_number
else
echo "second-------------"
max_number = ${mkvarray[0]} - ${mkvarray[1]}
echo "second " $max_number
fi
echo $max_number
$ ./ffmpeg_updated.bash RTda01986c816052106c00f417387a83ff.mkv ------> 2.040000 cc.mkv ------> 2.040000 RT4bafb05e1b36885c75d7d67a16f5e3b2.mkv ------> 4.086000 first------------- ./ffmpeg_updated.bash: line 24: max_number: command not found first 0 0
最佳答案
更新
可以在以下链接中找到更好的答案
Merge Conference Video and Audio call output using hstack ffmpeg
如链接问题中所述。无法直接通过 bash 进行浮点运算。我们必须使用 bc。
更新的代码如下。
VIDEO MERGER
#!/bin/bash
echo "VIDEO MERGER"
echo "------------"
echo "VIDEO MERGER: started"
mkvarray=()
mkvarray_name=()
#ASSIGN VIDEO START TIME TO VARIBALES
for video_name in *.mkv; do
start_time=$(ffprobe -v error -show_entries format=start_time -of default=noprint_wrappers=1:nokey=1 "$video_name")
mkvarray+=($start_time)
mkvarray_name+=("$video_name")
done
#PRINT START TIME OF VIDEO FILES (FOR DEBUG)
#arraylength=${#mkvarray[@]}
#for (( i=0; i<${arraylength}; i++ ));
#do
# echo $i ${mkvarray_name[$i]} "------> " ${mkvarray[$i]}
#done
#echo "----->" ${mkvarray_name[0]} ${mkvarray[0]}
#echo "----->" ${mkvarray_name[1]} ${mkvarray[1]}
#GETTING THE START TIME
RESULT=$(echo "scale=5; (${mkvarray[0]} - ${mkvarray[1]})" | tr -d $'\r' | bc -l)
updated_result=0
#check which file is
if (( $(echo "$RESULT < 0" |bc -l) )); then
updated_result=$(echo "$RESULT * -1" |bc -l)
else
updated_result=$RESULT
fi
#IDENTIFY THE FIRST FILE AND SECOND FILE IN ORDER OF START TIME
if (( $(echo "(${mkvarray[0]} > ${mkvarray[1]})" | tr -d $'\r' |bc -l) )); then #do
second_file=${mkvarray_name[0]}
first_file=${mkvarray_name[1]}
echo "FIRST FILE : " ${mkvarray_name[1]} ", TIME :" ${mkvarray[1]}
echo "SECOND FILE : " ${mkvarray_name[0]} ", TIME :" ${mkvarray[0]}
else
second_file=${mkvarray_name[1]}
first_file=${mkvarray_name[0]}
echo "FIRST FILE : " ${mkvarray_name[0]} ", TIME :" ${mkvarray[0]}
echo "SECOND FILE : " ${mkvarray_name[1]} ", TIME :" ${mkvarray[1]}
fi
echo "TIME DIFERENCE :" $updated_result
ffmpeg -i $first_file -itsoffset $updated_result -i $second_file -filter_complex "[0]pad=iw*2:ih[int]; [int][1]overlay=W/2:0[vid]" -map [vid] -c:v libvpx -crf 23 -quality good -cpu-used 3 -an output_video.webm
echo "VIDEO MERGER: finished"
AUDIO MERGER
#!/bin/bash
echo "AUDIO MERGER"
echo "------------"
echo "AUDIO MERGER : started"
mkvarray=()
mkvarray_name=()
#ASSIGN VIDEO START TIME TO VARIBALES
for video_name in *.mka; do
start_time=$(ffprobe -v error -show_entries format=start_time -of default=noprint_wrappers=1:nokey=1 "$video_name")
mkvarray+=($start_time)
mkvarray_name+=("$video_name")
done
#PRINT START TIME OF VIDEO FILES (FOR DEBUG)
#arraylength=${#mkvarray[@]}
#for (( i=0; i<${arraylength}; i++ ));
#do
# echo $i ${mkvarray_name[$i]} "------> " ${mkvarray[$i]}
#done
#echo "----->" ${mkvarray_name[0]} ${mkvarray[0]}
#echo "----->" ${mkvarray_name[1]} ${mkvarray[1]}
#GETTING THE START TIME
RESULT=$(echo "scale=5; (${mkvarray[0]} - ${mkvarray[1]})" | tr -d $'\r' | bc -l)
updated_result=0
#check which file is
if (( $(echo "$RESULT < 0" |bc -l) )); then
updated_result=$(echo "$RESULT * -1 * 1000" |bc -l)
else
updated_result=$(echo "$RESULT * 1000" |bc -l)
fi
#IDENTIFY THE FIRST FILE AND SECOND FILE IN ORDER OF START TIME
if (( $(echo "(${mkvarray[0]} > ${mkvarray[1]})" | tr -d $'\r' |bc -l) )); then #do
second_file=${mkvarray_name[0]}
first_file=${mkvarray_name[1]}
echo "FIRST FILE : " ${mkvarray_name[1]} ", TIME :" ${mkvarray[1]}
echo "SECOND FILE : " ${mkvarray_name[0]} ", TIME :" ${mkvarray[0]}
else
second_file=${mkvarray_name[1]}
first_file=${mkvarray_name[0]}
echo "FIRST FILE : " ${mkvarray_name[0]} ", TIME :" ${mkvarray[0]}
echo "SECOND FILE : " ${mkvarray_name[1]} ", TIME :" ${mkvarray[1]}
fi
echo "TIME DIFERENCE :" $updated_result
ffmpeg -i $first_file -i $second_file -filter_complex "[1]adelay="$updated_result"|"$updated_result"[d];[0][d]amix=inputs=2" -strict -2 output_audio.webm
echo "AUDIO MERGER : finished"
MERGE AUDIO & VIDEO
#!/bin/bash
echo "AUDIO/VIDEO OUTPUT MERGER"
echo "-------------------------"
echo "AUDIO/VIDEO OUTPUT MERGER : started merging audio and video"
ffmpeg -i output_video.webm -i output_audio.webm -c:v copy -c:a copy full.webm
echo "AUDIO/VIDEO OUTPUT MERGER : finished merging audio and video"
关于Bash - 从 ffmpeg 获取时差 - 音频和视频合并,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46528298/
我正在尝试创建一个程序,该程序采用两个军事时间的差异并获取其时差。 示例: **上午到下午** 时间 1:0900 时间 2:1730 时差:8 小时 30 分钟 **下午到上午** 时间 1:120
我正在尝试计算两个时间字段之间的时间差异。由于这些字段只是没有日期的时间,因此我无法使用 timestampdiff,因此我使用 timediff() 或 subtime() 。唯一的问题是,当第二次
我试图简单地计算 5:30:00 - 2:30:00 的时差。显然这应该导致 3:00:00 但是当我在控制台中执行以下代码时 var a = new Date(0,0,0,5,30,0) var b
我试图在 C 中区分两个日期,但我收到这样的输出: future date: 18-11-2013 22:8 current date: 18-11-2013 22:8 这是我的代码: #includ
我正在尝试计算截至上午 00:00 的剩余分钟数。 DELIMITER // CREATE PROCEDURE midnightCountdown() BEGIN SELECT TIME_FORMAT
我正在尝试使用 postgresql 从表(login_history as t1)中检索以分钟为单位的时差。 当我尝试这段代码时 ((date_part('hour', timestamp '201
欢迎!我有问题想问你。我正在 Laravel 5.2 中为自己编写飞行日志。在公式中,我将有起飞时间和到达时间,但我不知道如何在 laravel 中计算时间差并将其自动传递到数据库。因此,最简单的方法
我已经查看了有关此主题的其他问答,但没有找到任何帮助。 我的应用记录比赛结果并保存到文件。 第一次点击它会写入当前时间,当运行者完成后,它会再次记录当前时间。 如何计算这两个时间以获得比赛时间? 这是
我有非常简单的代码来计算两次之间的差异: import java.text.SimpleDateFormat; import java.util.Date; import java.util.Greg
在 Python 中比较 2 次以加快测试一段代码的正确方法是什么?我尝试阅读 API 文档。我不确定我是否理解 timedelta。 到目前为止,我有这个代码: from datetime impo
这个问题非常类似于Best timestamp format for CSV/Excel? : 我正在写一个 CSV 文件。我需要编写至少精确到秒,最好精确到毫秒的时间跨度(又名时差)。 CSV 文件
我试图通过输入时间格式计算12小时内的java时差,当我输入开始时间11:58:10 pm和结束时间12:02时效果很好:15 点。但当我输入 12:00:00 am 和 12:00:00 pm 时,
因此,对于一项作业,我们必须编写一个程序,该程序需要两次军事时间,并显示它们之间的小时和分钟差异,假设第一次是两次时间中较早的一次。我们不允许使用 if 语句,因为它在技术上尚未被学习。这是运行时的示
我必须为分布在全局各地的所有人员制定 24 小时时间表。 例如,某人可以在 10:00 开始工作,并在 19:00 结束工作,因此获得时差非常简单,因为结束时间和开始时间在同一天。但是,如果我有人在
使用 ntp 时间时,(英国)返回的时间总是比实际时间少一小时。例如:现在时间是 13.35 但当我说日期时,它返回 12.35。有什么建议? try: c = ntplib.
我有一个应用程序,它在登录时记录时间,在退出时记录退出时间。 我的表有 IN_TIME 和 OUT_TIME 这些列中的数据示例: IN_TIME = 16:06:46 结束时间 = 16:08:07
我使用 $_POST 将变量从 ajax 表单发布到 php 服务器端我有两个变量,时间和金额。在服务器中,我有一个 MYSQL 数据库,其中包含 _end_time (数据类型:时间)和金额(数据类
我正在尝试计算在这里工作的人的轮类模式,从结束时间减去开始时间在大多数情况下都有效,但如果他们通宵工作则不行。例如,从 10pm 到 6am 工作的人将显示为: 22:00 - 06:00 我希望返回
任何人都可以提供一个 Excel 方程来计算两个 UTC 时间戳之间的差异。 UTC 时间戳的格式为 yyyymmddhhmmssZ(例如 20160127175049Z)。时间戳之间的差异最多为几个
我在大学学习一门名为“智能机器”的类(class)。我们向我们介绍了 3 种强化学习方法,并通过这些方法我们获得了何时使用它们的直觉,我引用: Q-Learning - 当 MDP 无法解决时最好。
我是一名优秀的程序员,十分优秀!