LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1050|回复: 8

如何把avi格式的音频给抠出来呢?

[复制链接]
发表于 2010-2-25 08:49:30 | 显示全部楼层 |阅读模式
就是说一个电影,格式是avi的,

我想把里面的音频给抠出来,

然后弄成我的mp3播放器能播放的某一种格式,

记得以前讨论过,说avi就是一种封装格式,里面的音频可能就是mp3的,现在想把这个音频给单独拿出来。
发表于 2010-2-25 09:38:54 | 显示全部楼层
man mplayer, search dump
回复 支持 反对

使用道具 举报

 楼主| 发表于 2010-2-25 11:03:11 | 显示全部楼层
Haha, so funny!
  1. > ls
  2. 01.avi  01.srt
  3. > mplayer -dumpaudio -dumpfile 01.mp3 01.avi
  4. MPlayer SVN-r29796-4.3.4 (C) 2000-2009 MPlayer Team
  5. Playing 01.avi.
  6. AVI file format detected.
  7. [aviheader] Video stream found, -vid 0
  8. [aviheader] Audio stream found, -aid 1
  9. VIDEO:  [XVID]  608x256  24bpp  23.976 fps  943.7 kbps (115.2 kbyte/s)
  10. Core dumped ;)
  11. Exiting... (End of file)
  12. > ls
  13. 01.avi  01.mp3  01.srt
  14. > file *
  15. 01.avi: RIFF (little-endian) data, AVI, 608 x 256, 23.98 fps, video: XviD, audio: Dolby AC3 (5 channels, 48000 Hz)
  16. 01.mp3: ATSC A/52 aka AC-3 aka Dolby Digital stream, 48 kHz,, complete main (CM) 3 front/2 rear, LFE on,, 448 kbit/s reserved Dolby Surround mode
  17. 01.srt: ASCII English text, with CRLF, LF line terminators
  18. > mv 01.mp3 01.ac3
  19. > mplayer 01.ac3
  20. MPlayer SVN-r29796-4.3.4 (C) 2000-2009 MPlayer Team
  21. Playing 01.ac3.
  22. libavformat file format detected.
  23. [ac3 @ 0x26c7d70]max_analyze_duration reached
  24. [lavf] Audio stream found, -aid 0
  25. SUB: Added subtitle file (1): ./01.srt
  26. ==========================================================================
  27. Opening audio decoder: [liba52] AC3 decoding with liba52
  28. Using SSE optimized IMDCT transform
  29. Using MMX optimized resampler
  30. AUDIO: 48000 Hz, 2 ch, s16le, 448.0 kbit/29.17% (ratio: 56000->192000)
  31. Selected audio codec: [a52] afm: liba52 (AC3-liba52)
  32. ==========================================================================
  33. AO: [alsa] 48000Hz 2ch s16le (2 bytes per sample)
  34. Video: no video
  35. [color="Magenta"]Much that once was...[/color]
  36. A:  49.2 (49.1) of 4207.9 ( 1:10:07.9)  0.5%
复制代码

Mplayer can show the sub in gnome-terminal!

Directly play the 01.mp3 with mplayer cause error. :yun:
回复 支持 反对

使用道具 举报

 楼主| 发表于 2010-2-25 13:30:27 | 显示全部楼层
我没有找到太好的方法,使用mplayer直接dump出来的不是mp3,是ac3格式的音频文件,没有找到ac3=>mp3的有效方法,

于是只好用mplayer先转化成wav然后使用lame转化成mp3,

mplayer -vo null -ao pcm:file=test.wav test.avi

lame test.wav test.mp3

速度还可以,很快。
回复 支持 反对

使用道具 举报

发表于 2010-2-25 13:34:22 | 显示全部楼层
Post by fender010;2071631
我没有找到太好的方法,使用mplayer直接dump出来的不是mp3,是ac3格式的音频文件,没有找到ac3=>mp3的有效方法,

于是只好用mplayer先转化成wav然后使用lame转化成mp3,

mplayer -vo null -ao pcm:file=test.wav test.avi

lame test.wav test.mp3

速度还可以,很快。


好像可以用管道命令直接对流进行编码。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2010-2-25 16:03:21 | 显示全部楼层
记得以前有人讨论过avi的格式,提到过avi是一种封装方法,

而且没有严格定义封装的具体格式,所以可能有的avi是封装的mp3,而有的封装的是ac3的音频,

使用mplayer的dump功能可以很快的提取音频,我感觉就是提取疯涨的音频,

=============================================

而这样做应该是类似于播放并录制的过程,因为比较慢,需要一点时间:

mplayer -vo null -ao pcm:file=test.wav test.avi

===============

有一个问题,我这边的电影的体积是1g左右,70分钟,

使用mplayer的dump功能提取的ac3文件有200+M,是不是说声音文件还挺占地方的? :yun:

如果先转化成wav的话,生成的wav文件有800+M,最后压缩成mp3后有60+M,体积就很小了。
回复 支持 反对

使用道具 举报

发表于 2010-2-25 19:08:32 | 显示全部楼层
好像我也用过-vo null -ao pcm:file
我曾经把地道战电影里的歌曲“太阳出来闪金光……”给扣出来
现在做手机铃声
回复 支持 反对

使用道具 举报

发表于 2010-2-26 00:49:40 | 显示全部楼层
Post by fender010;2071669

=============================================

而这样做应该是类似于播放并录制的过程,因为比较慢,需要一点时间:

mplayer -vo null -ao pcm:file=test.wav test.avi

===============



现在想起来,以前用 mencoder 转过视频,音频应该差不多吧?一般取决于机器的速度,但比这样做快很多。
回复 支持 反对

使用道具 举报

发表于 2010-2-26 10:19:33 | 显示全部楼层
tcextract
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表