我有一堆.png文件
sc = SparkContext.getOrCreate()
spark = SparkSession.builder.appName("test_Terminal").config("spark.sql.broadcastTimeout", "36000").getOrCreate()
flag_finish = False
flag_fail=False
while (!flag_finish) :
if flag_fail : #kill current erroneous session
sc.stop()
conf = pyspark.SparkConf().setAll([('spark.executor.memory', '60g'),
('spark.driver.memory','30g'),('spark.executor.cores', '16'),
('spark.driver.cores', '24'),('spark.cores.max', '32')])
sc = pyspark.SparkContext(conf=conf)
spark = SparkSession(sc)
df = ...#read back from checkpoint or disk
#process with current df or df picked up
while .. :#this is where server tend to fail my job due after some time
try :
##df processing and update
...
df.checkpoint()
df.count() #activate checkpoint
if complete :
flag_finished = True
exception Exception as e:
flag_fail=True
continue
我正在使用继承的ffmpeg脚本将.png文件缝合到.mp4文件中。我不了解所有标志,但是过去我已经成功使用了此脚本
file_000.png
file_005.png
file_010.png
使用命令
## images_to_movie.sh
set -o noglob
in_files=$1
out_file=$2
ffmpeg \
-framerate 10 \
-loglevel warning \
-pattern_type glob -i $in_files \
-pix_fmt yuv420p \
-vf 'crop=trunc(iw/2)*2:trunc(ih/2)*2:0:0' \
-y \
$out_file
我现在收到错误
编解码器'png'的像素格式'yuv420p'不兼容,自动选择 格式为“ rgb24”
一些搜索显示
./images_to_movie file_*.png files.mp4
已弃用,我应该改用
-pix_fmt yuv420p
但错误仍然存在。我尝试使用
-pix_fmt yuv420p -color_range 2
错误消失了,但我没有创建.mp4文件。
如何修改此脚本以创建.mp4?
答案 0 :(得分:2)
file_*.png
根本没有传递给您的程序-files.mp4
也没有传递。
相反,当您运行./images_to_movie file_*.png files.mp4
时,shell 实际调用的是./images_to_movie file_000.png file_005.png file_010.png files.mp4
。
因此,file_000.png
被视为唯一的输入文件,file_005.png
被视为要使用的输出文件。多余的参数(file_010.png
和files.mp4
放在位置$3
和$4
中;从未读过;因此被完全忽略。
原始代码假设./images_to_movie file_*.png files.mp4
将file_*.png
放在$1
中,而files.mp4
放在$2
中。除非file_*.png
没有匹配项,否则该假设为假。
set -o noglob
防止在脚本启动后 发生全局扩展,但是脚本内容中的任何内容都不能阻止调用脚本提前扩展全局。因此,您想要一个调用带有引号的,类似于:
./images_to_movie 'file_*.png' files.mp4
...以及脚本内容类似于:
#!/usr/bin/env bash
in_files=$1
out_file=$2
ffmpeg \
-framerate 10 \
-loglevel warning \
-pattern_type glob -i "$in_files" \
-pix_fmt rgb24 \
-vf 'crop=trunc(iw/2)*2:trunc(ih/2)*2:0:0' \
-y \
"$out_file"
请注意,我们取出了noglob
,并引用了所有扩展名;这不仅可以防止乱序,而且还可以防止字符串拆分-因此,即使没有File *.png
这样的模式也不会被拆分成一个单词File
和第二个单词*.png
滚滚。