Python 使用FFmpeg操作mp4

本文最后更新于:2023年4月15日 下午

使用FFmpeg

首先得了解FFmpeg的用法。

1
ffmpeg -i red.mkv -f flac -vn red.flac

如果音频(视频)比字幕快(或慢),则在裁剪的时候统一加上或减去一个时间差。

FFmpeg

PyCharm 报错 ‘ffmpeg’ 不是内部或外部命令,也不是可运行的程序

虚拟环境中需要找到FFmpeg的绝对路径

1
ffmpeg_bin = 'E:/ffmpeg-20191019-31aafda-win64-static/bin/ffmpeg'
1
subprocess.call(get_mp3_cmd, shell=True)

Python

python 读取文件时报错 UnicodeDecodeError: 'gbk' codec can't decode

错误UnicodeEncodeError: ‘gbk' codec can't encode character ‘\xa0' in position

在网上一查,发现是 Windows 的控制台的问题。控制台的编码是 GBK,Python 是 UTF-8,造成了冲突。

第一种方法:直接替换出错的内容

1
2
3
import requests 
url = 'https://blog.csdn.net/jianhong1990/article/details/17349537'
print(requests.get(url).text.replace('\xa0', ' '))

第二种方法:再解码

先用 GBK 编码,加个 ignore 丢弃错误的字符,然后再解码。

1
2
3
import requests
url = 'https://blog.csdn.net/jianhong1990/article/details/17349537'
print(requests.get(url).text.encode('gbk', 'ignore').decode('gbk')

int与string之间的转化

str转成数字

1
ms = int(ms)

数字转成str

补零

1
'{:0>2d}'.format(1)  # output 01

获取当前时间

1
2
3
4
5
6
7
import time

time.time() # 格式化时间戳为标准格式
print(time.strftime('%Y%m%d-%H%M%S', time.localtime(time.time())))

# 获取30天前的时间(通过加减秒数来获取现在或者未来某个时间点)
print time.strftime('%Y.%m.%d',time.localtime(time.time()-2592000))

参考


Python 使用FFmpeg操作mp4
https://blog.rustfisher.com/2019/10/09/Python/Python-FFmpeg-extraction-mp4_tool/
作者
Rust Fisher
发布于
2019年10月9日
许可协议