如何Linux将.OGV格式转换为.AVI视频格式

时间:2020-01-09 10:42:07  来源:igfitidea点击:

如何使用Linux或者Unix bash命令行选项将.ogv转换为.avi?
您可以使用以下任一命令将.ogv转换为.avi视频/音频格式。

  • " mencoder"(MPlayers电影编码器)是一种简单的电影编码器,旨在将MPlayer可播放的电影编码为其他MPlayer可播放的格式。
    它以1、2或者3遍编码为MPEG-4(DivX/Xvid),libavcodec编解码器之一和PCM/MP3/VBRMP3音频。
    此外,它还具有流复制功能,强大的滤镜系统(裁剪,扩展,翻转,后处理,旋转,缩放,噪点,RGB/YUV转换)等。

  • FFmpeg另一个适用于Linux和Unix操作系统的视频转换器命令行应用程序。

使用Mencoder命令将.ogv视频文件转换为.avi

执行以下命令:

mencoder input.ogv -ovc lavc -oac mp3lame -o output.avi

其中:

  • input.ogv:您的.ogv文件。
  • -ovc lavc:使用libavcodec编解码器进行编码。
  • -oac mp3lame:使用灯泡mp3音频编解码器进行编码。
  • -o output.avi:输出文件,即.avi文件。

验证文件类型,执行:

$ file my-demo-video.ogv

输出示例:

my-demo-video.ogv: Ogg data, Skeleton v3.0

使用Mencoder进行转换,执行:

$ mencoder my-demo-video.ogv -ovc lavc -oac mp3lame -o my-demo-video.avi

输出示例:

MPlayer SVN-r31918 (C) 2000-2010 MPlayer Team
success: format: 0  data: 0x0 - 0x3cd7b3
libavformat file format detected.
[ogg @ 0x2b6b100] max_analyze_duration reached
[lavf] stream 1: video (theora), -vid 0
VIDEO:  [theo]  1264x848  0bpp  15.000 fps    0.0 kbps ( 0.0 kbyte/s)
[V] filefmt:44  fourcc:0x6F656874  size:1264x848  fps:15.000  ftime:=0.0667
Opening video filter: [expand osd=1]
Expand: -1 x -1, -1 ; -1, osd: 1, aspect: 0.000000, round: 1
==========================================================================
Opening video decoder: [ffmpeg] FFmpeg's libavcodec codec family
Selected video codec: [fftheora] vfm: ffmpeg (FFmpeg Theora)
==========================================================================
Movie-Aspect is 1.49:1 - prescaling to correct movie aspect.
videocodec: libavcodec (1264x848 fourcc=34504d46 [FMP4])
Writing header...
ODML: Aspect information not (yet?) available or unspecified, not writing vprp header.
Writing header...
ODML: Aspect information not (yet?) available or unspecified, not writing vprp header.
Pos:   0.1s      2f (12%)  0.00fps Trem:   0min   0mb  A-V:0.000 [0:0]
[VD_FFMPEG] DRI failure.
Pos:  42.8s    642f (100%) 143.88fps Trem:   0min   2mb  A-V:0.000 [494:0]

Flushing video frames.
Writing index...
Writing header...
ODML: Aspect information not (yet?) available or unspecified, not writing vprp header.

Video stream:  494.277 kbit/s  (61784 B/s)  size: 2644380 bytes  42.800 secs  642 frames

使用ffmpeg命令将.ogv视频文件转换为.avi

执行以下命令:

$ ffmpeg -i my-demo-video.ogv -vcodec mpeg4 -sameq -acodec libmp3lame my-demo-video.avi

输出示例:

FFmpeg version SVN-r0.5.9-4:0.5.9-1, Copyright (c) 2000-2009 Fabrice Bellard, et al.
  configuration: --extra-version=4:0.5.9-1 --prefix=/usr --enable-avfilter --enable-avfilter-lavf --enable-vdpau --enable-bzlib --enable-libdirac --enable-libgsm --enable-libopenjpeg --enable-libschroedinger --enable-libspeex --enable-libtheora --enable-libvorbis --enable-pthreads --enable-zlib --disable-stripping --disable-vhook --enable-runtime-cpudetect --enable-gpl --enable-postproc --enable-swscale --enable-x11grab --enable-libfaad --enable-libdc1394 --enable-shared --disable-static
  libavutil     49.15. 0 / 49.15. 0
  libavcodec    52.20. 1 / 52.20. 1
  libavformat   52.31. 0 / 52.31. 0
  libavdevice   52. 1. 0 / 52. 1. 0
  libavfilter    0. 4. 0 /  0. 4. 0
  libswscale     0. 7. 1 /  0. 7. 1
  libpostproc   51. 2. 0 / 51. 2. 0
  built on Jun 10 2012 08:33:06, gcc: 4.4.5
Input #0, ogg, from 'my-demo-video.ogv':
  Duration: 00:01:01.00, start: 0.000000, bitrate: 522 kb/s
    Stream #0.0: Invalid Codec type -1
    Stream #0.1: Video: theora, yuv420p, 1264x848, PAR 1:1 DAR 79:53, 15 tbr, 15 tbn, 15 tbc
Output #0, avi, to 'my-demo-video.avi':
    Stream #0.0: Video: mpeg4, yuv420p, 1264x848 [PAR 1:1 DAR 79:53], q=2-31, 200 kb/s, 90k tbn, 15 tbc
Stream mapping:
  Stream #0.1 -> #0.0
[mpeg4 @ 0x25ee4c0]removing common factors from framerate
Press [q] to stop encoding
frame=  642 fps=171 q=0.0 Lsize=    2114kB time=60.00 bitrate= 288.6kbits/s    
video:2087kB audio:0kB global headers:0kB muxing overhead 1.294511%

转换许多文件

创建一个名为ovg2avi的shell脚本,如下所示:

#!/bin/bash
# ovg2avi - Covert ovg to avi
# Author:  <www.theitroad.local> Under GPL 2.0+
# ------------------------------------------------------
input=""
output="${input%%.ogv}.avi}"
 
die(){
   echo -e "$@"
   exit 1
}
 
[ $# -eq 0 ] && die "Usage: 
for o in *.ogv
do
   /path/to/ovg2avi "$o"
done
input.ovg\n\tI will convert .ovg file to .avi format." [ ! -f "$input" ] && die "Error $input file not found."   if [ -f "$output" ] then read -p "Warning output file $output exists. Overwrite (y/n)? " ans case $ans in y|Y|YES|Yes) mencoder "${input}" -ovc lavc -oac mp3lame -o "${output}";; esac fi

要隐藏许多文件,只需使用bash进行循环,如下所示:

##代码##