2014-02-23 87 views
0

我有一個django應用程序,並使用調用subprocess.call('avconv -i'+ fileName +''+ fileNew,shell = True)。輸入文件是一個.3gp文件,它只有一個單聲道音頻流轉換爲.ogg文件。轉換成功,但新文件似乎已損壞,音頻無法播放。3gp音頻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

最後我能夠發現問題的根源。正如我所料,.3gp文件沒有正確創建,因爲它們只包含音頻信息,導致avconv無法識別和轉換它們。更改應用程序以使用.aac解決了問題。