(工具ffmpeg)视频转换为flv格式,视频截取图片

 
/// <summary>
        
/// 视频(avi,mov等等格式)转换为flv格式视频
        
/// </summary>
        
/// <param name="FromName">被转换的视频文件</param>
        
/// <param name="ExportName">转换flv后的文件名</param>
        
/// <param name="ExportName">视频大小的尺寸</param>
        
/// <returns></returns>

         public   string  VideoConvertFlv( string  FromName, string  ExportName, string  WidthAndHeight)
        
{
            
string ffmpeg=@"C:Inetpubwwwrootdemopic fmpeg.exe";
            System.Diagnostics.ProcessStartInfo startInfo 
= new System.Diagnostics.ProcessStartInfo(ffmpeg);
            startInfo.WindowStyle 
= System.Diagnostics.ProcessWindowStyle.Hidden;
            startInfo.Arguments 
= " -i " + Server.MapPath(FromName) + " -ab 56 -ar 22050 -b 500 -r 15 -s "+WidthAndHeight+" "+Server.MapPath(ExportName);
            
try 
            
{
                System.Diagnostics.Process.Start(startInfo);
                
return ExportName;
            }

            
catch(Exception err)
            
{
                
return err.Message;
            }


        }

 

 

/// <summary>
        
/// 从视频画面中截取一帧画面为图片
        
/// </summary>
        
/// <param name="VideoName">视频文件pic/guiyu.mov</param>
        
/// <param name="WidthAndHeight">图片的尺寸如:240*180</param>
        
/// <param name="CutTimeFrame">开始截取的时间如:"1"</param>
        
/// <returns></returns>

         public   string  GetPicFromVideo( string  VideoName, string  WidthAndHeight, string  CutTimeFrame)
        
{
            
            
string ffmpeg=@"C:Inetpubwwwrootdemopic fmpeg.exe";
            
string PicName =Server.MapPath(Guid.NewGuid().ToString().Replace("-","")+".jpg");
            System.Diagnostics.ProcessStartInfo startInfo 
= new System.Diagnostics.ProcessStartInfo(ffmpeg);
            startInfo.WindowStyle 
= System.Diagnostics.ProcessWindowStyle.Hidden; 
            startInfo.Arguments 
= " -i " + Server.MapPath(VideoName) + " -y -f image2 -ss "+CutTimeFrame+" -t 0.001 -s " + WidthAndHeight + " " + PicName ;
            
try 
            
{
                System.Diagnostics.Process.Start(startInfo);
                
return PicName;
            }

            
catch(Exception err)
            
{
                
return err.Message;
            }
        
        }

 

 

ffmpeg参数使用说明


ffmpeg.exe 
- i F:闪客之家闪客之歌.mp3  - ab  56   - ar  22050   - 500   - 15   - s 32 0x240  f: 11 .flv
ffmpeg 
- i F: 1 .wmv  - ab  56   - ar  22050   - 500   - 15   - s 32 0x240  f:test.flv
使用
- ss参数 作用(time_off  set  the start time offset),可以从指定时间点开始转换任务。如:
转换文件格式的同时抓缩微图:
ffmpeg 
- " test.avi "   - - f image2  - ss  8   - 0.001   - s 35 0x240   ' test.jpg '
对已有flv抓图:
ffmpeg 
- " test.flv "   - - f image2  - ss  8   - 0.001   - s 35 0x240   ' test.jpg '
- ss后跟的时间单位为秒
Ffmpeg转换命令
ffmpeg 
- - i test.mpeg  - bitexact  - vcodec h263  - 128   - 15   - s 176x144  - acodec aac  - ac  2   - ar  22500  
- ab  24   - f 3gp test.3gp
或者
ffmpeg 
- - i test.mpeg  - ac  1   - acodec amr_nb  - ar  8000   - s 176x144  - 128   - 15  test.3gp


ffmpeg参数设定解说 
- bitexact 使用标准比特率 
- vcodec xvid 使用xvid压缩 
- s 32 0x240  指定分辨率 
- 29.97  桢速率(可以改,确认非标准桢率会导致音画不同步,所以只能设定为15或者29. 97 ) 
画面部分,选其一 
- < 比特率 >  指定压缩比特率,似乎ffmpeg是自动VBR的,指定了就大概是平均比特率,比如768,1500这样的
就是原来默认项目中有的 
- qscale  < 数值 >  以 < 数值 > 质量为基础的VBR,取值0. 01 - 255 ,约小质量越好 
- qmin  < 数值 >  设定最小质量,与 - qmax(设定最大质量)共用,比如 - qmin  10   - qmax  31  
- sameq 使用和源同样的质量 
声音部分 
- acodec aac 设定声音编码 
- ac  < 数值 >  设定声道数,1就是单声道,2就是立体声,转换单声道的TVrip可以用1(节省一半容量),高品质
的DVDrip就可以用2 
- ar  < 采样率 >  设定声音采样率,PSP只认24000 
- ab  < 比特率 >  设定声音比特率,前面 - ac设为立体声时要以一半比特率来设置,比如192kbps的就设成96,转换
君默认比特率都较小,要听到较高品质声音的话建议设到160kbps(
80 )以上 
- vol  < 百分比 >  设定音量,某些DVDrip的AC3轨音量极小,转换时可以用这个提高音量,比如200就是原来的2倍 
这样,要得到一个高画质音质低容量的MP4的话,首先画面最好不要用固定比特率,而用VBR参数让程序自己去
判断,而音质参数可以在原来的基础上提升一点,听起来要舒服很多,也不会太大(看情况调整


例子:ffmpeg 
- - " 1.avi "   - title  " Test "   - vcodec xvid  - s 368x208  - 29.97   - 1500   - acodec aac  - ac  2   - ar  24000   - ab  128   - vol  200   - f psp  - muxvb  768   " 1.*** "

解释:以上命令可以在Dos命令行中输入,也可以创建到批处理文件中运行。不过,前提是:要在ffmpeg所在的目录中执行(转换君所在目录下面的cores子目录)。
参数:
- y(覆盖输出文件,即如果1. *** 文件已经存在的话,不经提示就覆盖掉了)
- " 1.avi " (输入文件是和ffmpeg在同一目录下的1.avi文件,可以自己加路径,改名字)
- title  " Test " (在PSP中显示的影片的标题)
- vcodec xvid(使用XVID编码压缩视频,不能改的)
- s 368x208(输出的分辨率为368x208,注意片源一定要是16:9的不然会变形)
- 29.97 (帧数,一般就用这个吧)
- 1500 (视频数据流量,用 - b xxxx的指令则使用固定码率,数字随便改,1500以上没效果;还可以用动态码率如: - qscale 4和 - qscale  6 ,4的质量比6高)
- acodec aac(音频编码用AAC)
- ac  2 (声道数1或2)
- ar  24000 (声音的采样频率,好像PSP只能支持24000Hz)
- ab  128 (音频数据流量,一般选择32、 64 96 128
- vol  200 200 % 的音量,自己改)
- f psp(输出psp专用格式)
- muxvb  768 (好像是给PSP机器识别的码率,一般选择384、512和768,我改成1500,PSP就说文件损坏了)
" 1.*** " (输出文件名,也可以加路径改文件名)

P.S. 版主机器强劲的话,可以多开几个批处理文件,让它们并行处理。 
E:ffmpeg.exe 
- i I: 1 .wmv  - 360   - 25   - s 32 0x240   - hq  - deinterlace  - ab  56   - ar  22050   - ac  1  D: 2 .flv 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值