rtrt,现在用 python 命令调用 ffmpeg 提取视频里面的音频,英文文件名没用问题,中文文件名会报错。 命令行是这样的
command = "ffmpeg -i " + name_movie + " -ab 160k -ac 2 -ar 8000 -vn " + name_sound subprocess.call(command, shell=True)
其中文件名是 类似 [ 5-18 ] 学习 1 我是谁.mp4 这样的
头部用了 #--coding=utf-8-- 也不行
1
ljq29 OP 这样提示:
ffmpeg version N-93933-geae251ead9 Copyright (c) 2000-2019 the FFmpeg developers built with gcc 8.3.1 (GCC) 20190414 configuration: --enable-gpl --enable-version3 --enable-sdl2 --enable-fontconfig --enable-gnutls --enable-iconv --enable-libass --enable-libdav1d --enable-libbluray --enable-libfreetype --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libtheora --enable-libtwolame --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxml2 --enable-libzimg --enable-lzma --enable-zlib --enable-gmp --enable-libvidstab --enable-libvorbis --enable-libvo-amrwbenc --enable-libmysofa --enable-libspeex --enable-libxvid --enable-libaom --enable-libmfx --enable-amf --enable-ffnvcodec --enable-cuvid --enable-d3d11va --enable-nvenc --enable-nvdec --enable-dxva2 --enable-avisynth --enable-libopenmpt libavutil 56. 28.100 / 56. 28.100 libavcodec 58. 52.102 / 58. 52.102 libavformat 58. 27.103 / 58. 27.103 libavdevice 58. 7.100 / 58. 7.100 libavfilter 7. 54.101 / 7. 54.101 libswscale 5. 4.101 / 5. 4.101 libswresample 3. 4.100 / 3. 4.100 libpostproc 55. 4.100 / 55. 4.100 銆?-18 銆戝涔犺嚜鍔ㄩ┚椹舵苯杞︾殑姝g‘濮垮娍: Invalid argument |
2
xiadong1994 2019-05-29 10:47:40 +08:00
编码问题。字符串是 utf-8 的(�?-18 ] 学习自动驾驶汽车的正确姿势),打出来变成 gbk 了,怀疑你在用 windows。
|
3
jifengg 2019-05-29 10:56:30 +08:00
1.调用 ffmpeg 的时候能否把编码换成 utf8 ;
2.文件名里面包含了空格,最好用双引号包起来; |
4
7654 2019-05-29 10:59:09 +08:00
在 cmd 下简单处理视频,中文字符 ffmpeg 处理的时候也是乱码,但是不影响结果
|
5
ljq29 OP @xiadong1994 确实在用 Windows,然而这里: https://blog.csdn.net/jihengshan/article/details/44958315 说是编码的问题,python 不知道怎么处理。
现在是临时把文件改名,处理完了再改回去: https://blog.csdn.net/weixin_34417814/article/details/88261765 |
6
zhangzhi0123 2019-05-29 13:12:55 +08:00
前两天我写这个,使用的是 linux 系统,所以没遇到这个问题,有个包 ffmpy,你去试试,看看有没有对这个问题做处理。
|
7
krixaar 2019-05-29 14:40:38 +08:00
只是显示问题,因为 cmd 的默认代码页不是 Unicode (通常是 936 也就是 GBK ),所以为了正常显示,需要先 subprocess.call('chcp 65001', shell=True) 把 cmd 的代码页改成 unicode。问题是这种乱七八糟的文件名是不是得多加个引号才能正常执行?
|
8
nlysh007 2019-05-29 14:51:13 +08:00
跟 python 关系不大,把文件路径加上 ""
|
9
cnrting 2019-05-30 03:25:17 +08:00 via iPhone
同楼上,文件路径加上""应该就好了
|
10
smallgoogle 2019-05-30 05:12:44 +08:00
win 加引号即可。。linux 如果没有中文包。你就需要安装一下。
|