首页 > 编程语言 > 详细

使用python编写shell脚本并运行

时间:2021-05-09 11:14:25      阅读:29      评论:0      收藏:0      [点我收藏+]

一、场景

使用爬虫爬取一些分段的MP4的文件的时候,需要使用到FFmpeg将MP4合并成一个文件,这里记录一下遇到的问题,方便以后的查询。

二、问题与解决方法

首先是编写shell文件,直接通过文件读写的方式就可以完成一系列指令的生成,这里举一个视频分割重组的shell脚本例子。

#! /bin/bash
# 将 mp4 文件封装为 ts 格式
ffmpeg -i 20210506113922.mp4 -vcodec copy -acodec copy -vbsf h264_mp4toannexb 1.ts
ffmpeg -i 20210506114000.mp4 -vcodec copy -acodec copy -vbsf h264_mp4toannexb 2.ts
ffmpeg -i 20210506114035.mp4 -vcodec copy -acodec copy -vbsf h264_mp4toannexb 3.ts
ffmpeg -i 20210506114154.mp4 -vcodec copy -acodec copy -vbsf h264_mp4toannexb 4.ts
# 拼接 ts 并导出最终 mp4 文件
ffmpeg -i "concat:1.ts|2.ts|3.ts|4.ts" -acodec copy -vcodec copy -absf aac_adtstoasc output.mp4
# 删除过程中生成的 ts 文件
rm *.ts

2.1 文件格式

编写完文件格式使用以下的命令执行shell的时候出现了Not Found的指令

# new_shell.sh文件就是上面的视频切割文件。
os.systeim("sh new_shell.sh")

# 报错信息
"""
not found *.ts ...
"""

看到上述问题,第一个反应就是shell的格式不正确,通过notepad++进行查看,可以得到他的换行符是CRLF,而shell执行的时候需要是LF,因此需要进行格式转换。

# 将shell文件变成unix的文件格式
# 使用的sed指令
sed -i s/\r//g [filename]
# 示例:
sed -i s/\r//g new_shell.sh

2.2 注意

python执行cmd指令的时候需要注意指令中的正则和工作区

# 工作区的转化
# 使用os.getcwd()获取当前的工作区
os.chdir([目标区域])

# 指令的正则
# 由于使用到了\r等需要和正则区分,避免系统错误识别

三、总结

3.1 Windows下的shell脚本转化

使用指令转化,或者notepad++转化

3.2 注意格式,工作区等

如正则、路径问题

参考

转换CRLF

视频合并

使用python编写shell脚本并运行

原文:https://www.cnblogs.com/future-dream/p/14747011.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!