mencoder转换的flv不能用flvplayer播放

简介:
用mencoder转换成.flv后用一般的播放器是可以播放的, 可是使用flvplayer无法播放...
问题方向比较明确.是命令的问题...
正确的转换命令如下, 测试--可以用flvplayer播放.
 
   /** 
    * 使用mencoder转码 
    * @param videoPath 源路径 -- 要转换的视频文件 
    * @param targetPath 目标路径 -- 转换后的视频flv 
    * @return 返回目标路径 
    */
 
   public    String mencoderTransVideo() { 
     
    List<String> commend =  new java.util.ArrayList<String>(); 
    commend.add( "d:\\flv\\MediaCoder\\codecs\\mencoder.exe");    
    commend.add(videoPath); 
     
    commend.add( "-of"); 
    commend.add( "lavf"); 
    commend.add( "-oac"); 
    commend.add( "mp3lame"); 
    commend.add( "-lameopts"); 
    commend.add( "abr:br=56"); 
    commend.add( "-ovc"); 
    commend.add( "lavc"); 
    commend.add( "-lavcopts"); 
    commend.add( "vcodec=flv:vbitrate=500:mbd=2:mv0:trell:v4mv:cbp:last_pred=3:dia=4:cmp=6:vb_strategy=1"); 
    commend.add( "-vf"); 
    commend.add( "scale=512:-3"); 
    commend.add( "-ofps"); 
    commend.add( "12"); 
    commend.add( "-srate"); 
    commend.add( "22050"); 
     
    commend.add( "-o"); 
    commend.add(ChineseSpelling.getInstance().getSelling(targetPath)); 

     try { 
      ProcessBuilder builder =  new ProcessBuilder(); 
      builder.command(commend); 
      Process process = builder.start(); 
       /** 
        * 同时清空mencoder的错误流缓冲区和输出缓冲区(防止线程阻塞--停掉tomcat才能转码) 
        */
 
       final InputStream is1 = process.getInputStream(); 
       new Thread( new Runnable() { 
              public  void run() { 
                     BufferedReader br =  new BufferedReader( new InputStreamReader(is1));    
             try { 
               while(br.readLine() !=  null) ; 
            }  catch (IOException e) { 
              e.printStackTrace(); 
            } 
             } 
      }).start();  // 启动单独的线程来清空process.getInputStream()的缓冲区 
      InputStream is2 = process.getErrorStream(); 
      BufferedReader br2 =  new BufferedReader( new InputStreamReader(is2));    
      StringBuilder buf =  new StringBuilder();  // 保存输出结果流 
      String line =  null
       while((line = br2.readLine()) !=  null) buf.append(line);    
       return targetPath; 
    }  catch (Exception e) { 
      e.printStackTrace(); 
       return  null
    } 
  }
 
 本文转自chainli 51CTO博客,原文链接:http://blog.51cto.com/lichen/163836,如需转载请自行联系原作者
相关文章
从rtsp视频流中截取图片
从rtsp视频流中截取图片
1839 0
|
流计算 计算机视觉 索引
使用ffmpeg将视频转成HLS(m3u8)格式
HLS (HTTP Live Streaming)是苹果推出的视频流协议,HLS格式的视频包含一个m3u8文本文件,以及众多的.ts的视频片段,而m3u8文本文件的作用就是将这些ts片段索引起来。 因为HLS协议是将视频切分成很多小的ts片段,这些小片段很适合放到cdn上,有很多视频文章都使用了hls格式传输视频。今天我在这里教大家如何用ffmpeg将mp4格式的视频转为HLS(m3u8)格式。
759 0
|
8月前
|
存储 编解码 自然语言处理
常见的音频与视频格式
常见的音频格式有 WAV、MP3、FLAC、APE、AAC、OGG 等,常见的视频格式有 MP4、AVI、MOV、WMV、MKV、FLV、3GP、MPEG 等,它们在兼容性、文件大小、画质等方面各有特点。
|
存储 网络协议 Linux
视频文件的封装格式
MP4是一套用于音频、视频信息的压缩编码标准,由国际标准化组织(ISO)和国际电工委员会(IEC)下属的“动态图像专家组”(Moving Picture Experts Group,即MPEG)制定
|
移动开发 JavaScript
JS指定音频audio在某个时间点进行播放,获取当前音频audio的长度,音频时长格式转化
JS指定音频audio在某个时间点进行播放,获取当前音频audio的长度,音频时长格式转化
779 0
JS指定音频audio在某个时间点进行播放,获取当前音频audio的长度,音频时长格式转化
|
数据采集 Android开发 索引
【Android RTMP】音频数据采集编码 ( AAC 音频格式解析 | FLV 音频数据标签解析 | AAC 音频数据标签头 | 音频解码配置信息 )(二)
【Android RTMP】音频数据采集编码 ( AAC 音频格式解析 | FLV 音频数据标签解析 | AAC 音频数据标签头 | 音频解码配置信息 )(二)
564 0
【Android RTMP】音频数据采集编码 ( AAC 音频格式解析 | FLV 音频数据标签解析 | AAC 音频数据标签头 | 音频解码配置信息 )(二)
|
数据采集 存储 传感器
【Android RTMP】音频数据采集编码 ( AAC 音频格式解析 | FLV 音频数据标签解析 | AAC 音频数据标签头 | 音频解码配置信息 )(一)
【Android RTMP】音频数据采集编码 ( AAC 音频格式解析 | FLV 音频数据标签解析 | AAC 音频数据标签头 | 音频解码配置信息 )(一)
281 0
【Android RTMP】音频数据采集编码 ( AAC 音频格式解析 | FLV 音频数据标签解析 | AAC 音频数据标签头 | 音频解码配置信息 )(一)
|
存储 编解码 数据安全/隐私保护
FLV 封装格式解析
FLV (Flash Video) 是由 Adobe 公司推出的一种封装格式,主要用于流媒体系统。FLV 封装的媒体文件具有体积轻巧、封装播放简单等特点,很适合网络应用。目前各浏览器普遍使用 Flash Player 作为网页播放器,使得安装有浏览器的计算机终端不需要另外安装播放器,这也是 FLV 格式广为流行的原因之一。
407 0
FLV 封装格式解析