我有一个django应用程序,并使用subprocess.call调用('avconv -i'+ fileName +''+ fileNew,shell = True)。输入文件是.3gp文件,只有aac单声道音频流转换为.ogg文件。转换成功,但新文件似乎已损坏,音频无法播放。
以下是我尝试获取其中一个输入文件的信息后得到的结果:
xxx:/workspace/build$ avconv -i audio.3gp
avconv version 0.8.10-4:0.8.10-0ubuntu0.12.04.1, Copyright (c) 2000-2013 the Libav developers
built on Feb 6 2014 20:56:59 with gcc 4.6.3
audio.3gp: Invalid data found when processing input
以下是成功转换:
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '/workspace/multi-device-audio-project/webapp/../static/data/matpat.3gp':
Metadata:
major_brand : 3gp4
minor_version : 0
compatible_brands: isom3gp4
creation_time : 2014-02-17 10:53:36
Duration: 00:00:20.60, start: 0.000000, bitrate: 13 kb/s
Stream #0.0(eng): Audio: aac, 8000 Hz, mono, s16, 12 kb/s
Metadata:
creation_time : 2014-02-17 10:53:36
Output #0, ogg, to '/workspace/multi-device-audio-project/webapp/../static/data/matpat.ogg':
Metadata:
major_brand : 3gp4
minor_version : 0
compatible_brands: isom3gp4
creation_time : 2014-02-17 10:53:36
encoder : Lavf53.21.1
Stream #0.0(eng): Audio: flac, 8000 Hz, mono, s16, 200 kb/s
Metadata:
creation_time : 2014-02-17 10:53:36
Stream mapping:
Stream #0:0 -> #0:0 (aac -> flac)
Press ctrl-c to stop encoding
size= 216kB time=20.66 bitrate= 85.5kbits/s
video:0kB audio:214kB global headers:0kB muxing overhead 0.612994%
以下是其中一个示例文件:link
以下用法字符串也会返回错误:audio.3gp:处理输入时发现的数据无效::
avconv -i audio.3gp -vn -acodec libvorbis -aq 50 audio.ogg
avconv -i audio.3gp -acodec vorbis audio.ogg
输入文件是否会被破坏,我认为它们是在Nexus 7上录制的?
答案 0 :(得分:0)
最后,我能够发现问题的根源。正如我所料,.3gp文件没有正确创建,因为它们只包含音频信息,导致avconv无法识别和转换它们。更改应用程序以使用.aac解决了问题。