LinuxSir.cn,穿越时空的Linuxsir!

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

flv转换刻录vcd,解决过程

[复制链接]
发表于 2009-5-10 11:52:44 | 显示全部楼层 |阅读模式
要刻一张VCD歌碟,只能找到质量很差的flv视频,amule也能搜到dat,mpg,只是源太少,速度为0,不知道何时能下载到,将就用flv转吧
还是惯性的觉得win下处理会方便些,于是找转换软件,结果试了一个又一个,差点没被气炸,数量是够多了,没一个好使的。要么就是有限制,当中间显示个广告,或是只能转一部分,找注册码,没有;要么就是只能转成avi,用nero刻录时又要进行一次编码,超慢,17首歌一张碟,加起来要近两个小时,快疯掉。

还需要再刻同一张碟,试着搜下linux怎么解决,才知道强悍的ffmpeg,支持格式众多,使用非常方便
  1. $ alias aptin aptsh aptse
  2. alias aptin='sudo /usr/bin/apt-get install --no-install-recommends'
  3. alias aptsh='apt-cache show'
  4. alias aptse='apt-cache search'
  5. $ aptin ffmpeg
  6. $ ffmpeg -i music.flv -target pal-vcd music.mpeg
复制代码
直接得到标准的vcd媒体格式,要ntsc制式当然也可以
写个简单的脚本批量转换
flv2vcd (脚本有点问题,看3楼)
  1. #!/bin/bash
  2. #转换当前目录下所有的.flv视频为pal-vcd格式.mpeg
  3. #已存在对应.mpeg的不再转换
  4. for filename in `ls *.flv`;do
  5.     if [ ! -f ./${filename%.flv}.mpeg ]; then
  6.         ffmpeg -i $filename -target pal-vcd ${filename%.flv}.mpeg
  7.     fi
  8. done
复制代码
转换17个flv不到25分钟
刻录呢,不想再回win了,没装桌面,没装k3b,那就用命令行的吧,虽然还没用过
  1. $ aptse vcd create
  2. gtkwave - a VCD (Value Change Dump) file waveform viewer
  3. vcdtools - Creates Video CD (VCD) filesystem images
  4. $ aptsh vcdtools
  5. Package: vcdtools
  6. Priority: optional
  7. Section: otherosfs
  8. Installed-Size: 108
  9. Maintainer: Chris Butler <chrisb@debian.org>
  10. Architecture: i386
  11. Version: 0.4-2
  12. Depends: libc6 (>= 2.3.1-1)
  13. Suggests: cdrdao
  14. Filename: pool/main/v/vcdtools/vcdtools_0.4-2_i386.deb
  15. Size: 29098
  16. MD5sum: fcc3960ec458b2f289959ac32ce97a49
  17. SHA1: f666b3335c31ce207ca181dc285f7b1de921bd80
  18. SHA256: 0191c7339a0de119f04198909c97e33e1bffc1fd9243af4a07efd739730262d9
  19. Description: Creates Video CD (VCD) filesystem images
  20. This package includes two utilities "mkvcdfs" and "vcdmplex". mkvcdfs
  21. creates filesystem images for video CDs, which can then be written to
  22. CD with the cdrdao program. vcdmplex is used to multiplex MPG audio and
  23. data streams into a format suitable for a video CD.
  24. Tag: hardware::storage, hardware::storage:cd, interface::commandline,
  25. role::program, scope::utility, use::storing, works-with::video
  26. $ aptin vcdtools
  27. $ man mkvcdfs
  28. 很简单mkvcdfs  mpg-file  [mpg-file]  [...]
  29. 生成vcd_image.bin数据文件用于刻录,vcd.toc作为cdrdao刻碟的参数
  30. $ aptin cdrdao
  31. $ cdrdao scanbus
  32. ATA:0,0,0            SONY    , DVD RW DRU-V200A, 1.60
  33. ATA:0,1,0            LITEON  , CD-ROM LTN526   , YH0X
  34. $ cdrdao write --speed 24 --device ATA:0,0,0 vcd.toc
复制代码
cdrom组用户可以刻盘,不过提示不是root不能提高优先级
速度不用太快,稳点好。设备好像不对,又自动扫描了一次,弄不清,现在是用/dev/hda,还是怎样
  1. #cdrdao scanbus
  2. ATAPI:1,0,0          SONY    , DVD RW DRU-V200A, 1.60
  3. ATAPI:1,1,0          LITEON  , CD-ROM LTN526   , YH0X
  4. root又不一样
  5. $ aptin wodim dvd+rw-tools cdrkit-doc
  6. 其它刻录工具也装上
  7. $ wodim -scanbus
  8. scsibus1000:
  9.     1000,0,0 100000) 'SONY    ' 'DVD RW DRU-V200A' '1.60' Removable CD-ROM
  10.     1000,1,0 100001) 'LITEON  ' 'CD-ROM LTN526   ' 'YH0X' Removable CD-ROM
  11. 这个又不一样
  12. $ aptin xcdroast
  13. 装个图形界面的,这个要先用root设置
  14. #xcdroast
复制代码
扫描设备很久,它认的刻录机
SONY DVD RW DRU-V200A [1000,0,0]
SONY DVD RW DRU-V200A [OLDATAPI:0,0,0]
这个和wodim的结果一样,[OLDATAPI:0,0,0]是旧方式
xcdroast界面不知道怎么说,感觉还是用熟命令行好些

PS:网上说得很多的cdrecord,在debian里有,但只是指向wodim的符号连接,真正使用的是wodim
还有,mplayer可以直接播放那个vcd_image.bin,甚至nero的nrg镜像,只是不能跳到下一首歌
nrg据说可以用选项-o loop,offset=307200挂载,试了vcd的nrg挂载没有成功
vcd碟特殊,据说做成iso再刻录是无法在影碟机里放的,只能用nero做成nrg
vcd_image.bin在win里可以用DAEMON Tools虚拟光驱加载
发表于 2009-5-10 17:39:05 | 显示全部楼层
顶了。。。。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-5-10 19:48:03 | 显示全部楼层
批量转换脚本有些问题,如果.flv文件名含空格,文件名会被拆开处理,造成出错,需要改进
我也是搜出来类似的批量文件处理脚本改写的

还应该检查下目录写权限

继续改进,这个应该差不多了
file命令检查文件类型,其它系统应该一样的吧,不用file命令检查文件类型也没关系
要批量转换其它格式也很容易,ffmpeg支持格式众多,简单改改就行
  1. #!/bin/bash
  2. #转换当前目录下所有的.flv视频为pal-vcd格式.mpeg
  3. #已存在对应.mpeg的不再转换
  4. if [ -z "`which ffmpeg`" ]; then
  5.     exec echo Can not execute ffmpeg. Have you installed it?
  6. fi
  7. if [ ! -w "`pwd`" ]; then
  8.     exec echo Current directory is not writeable!
  9. fi
  10. for inputfile in *.flv; do
  11.     outputfile=${inputfile%.flv}.mpeg
  12.     filetype=`file -Lb "$inputfile"`
  13.     if [ "$filetype" = "Macromedia Flash Video" ]; then
  14.         if [ ! -e "$outputfile" ]; then
  15.             ffmpeg -i "$inputfile" -target pal-vcd "$outputfile"
  16.         fi  
  17.     else
  18.         echo \'$inputfile\': $filetype. Not convert.
  19.     fi  
  20. done
复制代码
回复 支持 反对

使用道具 举报

发表于 2009-5-13 16:06:59 | 显示全部楼层
楼主强的,向你学习,
回复 支持 反对

使用道具 举报

发表于 2010-9-21 12:01:32 | 显示全部楼层
amazing!!!!!!!!!!!!
回复 支持 反对

使用道具 举报

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

本版积分规则

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