Python 调用 ffmpeg 的时候,中文名称报错

2019-05-29 10:32:30 +08:00
 ljq29

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-- 也不行

5331 次点击
所在节点    Python
10 条回复
ljq29
2019-05-29 10:35:30 +08:00
这样提示:
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
xiadong1994
2019-05-29 10:47:40 +08:00
编码问题。字符串是 utf-8 的(�?-18 ] 学习自动驾驶汽车的正确姿势),打出来变成 gbk 了,怀疑你在用 windows。
jifengg
2019-05-29 10:56:30 +08:00
1.调用 ffmpeg 的时候能否把编码换成 utf8 ;
2.文件名里面包含了空格,最好用双引号包起来;
7654
2019-05-29 10:59:09 +08:00
在 cmd 下简单处理视频,中文字符 ffmpeg 处理的时候也是乱码,但是不影响结果
ljq29
2019-05-29 11:07:22 +08:00
@xiadong1994 确实在用 Windows,然而这里: https://blog.csdn.net/jihengshan/article/details/44958315 说是编码的问题,python 不知道怎么处理。
现在是临时把文件改名,处理完了再改回去: https://blog.csdn.net/weixin_34417814/article/details/88261765
zhangzhi0123
2019-05-29 13:12:55 +08:00
前两天我写这个,使用的是 linux 系统,所以没遇到这个问题,有个包 ffmpy,你去试试,看看有没有对这个问题做处理。
krixaar
2019-05-29 14:40:38 +08:00
只是显示问题,因为 cmd 的默认代码页不是 Unicode (通常是 936 也就是 GBK ),所以为了正常显示,需要先 subprocess.call('chcp 65001', shell=True) 把 cmd 的代码页改成 unicode。问题是这种乱七八糟的文件名是不是得多加个引号才能正常执行?
nlysh007
2019-05-29 14:51:13 +08:00
跟 python 关系不大,把文件路径加上 ""
cnrting
2019-05-30 03:25:17 +08:00
同楼上,文件路径加上""应该就好了
smallgoogle
2019-05-30 05:12:44 +08:00
win 加引号即可。。linux 如果没有中文包。你就需要安装一下。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/568662

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX