ffmpeg - 最好的服务器端视频处理库或软件

标签 ffmpeg video-streaming html5-video video-processing

我需要您关于选择正确命令行工具的建议 这将使我能够处理用户上传的视频。

我所说的处理是指:

  • 转换为 flv、mp4、ogg 等格式
  • 修改质量、比特率、帧速率等
  • 控制文件大小和其他属性
  • 可能需要以批处理模式处理视频

此处理将通过一些预定的进程来完成,该进程将抓取文件然后进行处理。该工具必须具有命令行实用程序。

我只知道免费的 FFMPEG 库。 是否有其他(如果花钱那就好)工具可以让我做到这些?

youtube 使用什么,如果你知道的话?

谢谢

最佳答案

ffmpeg是一个非常好的库,拥有非常好的开源资源。

我在 java(jax-rs) REST api 中的服务器端使用它,其中实际的 ffmpeg 在此过程中调用:

@Path("/ffmpeg")
public class FfmpegResource {


    @GET
        @Produces("text/plain")

        public String getFfmpeg(@QueryParam("infil1") String infil1, 
                @QueryParam("infil2") String infil2, @QueryParam("otfil") String otfil,
                @QueryParam("t") String time) {         
        String outfil = "dummy.mp4";

          List<String> command = new ArrayList<String>();
            command.add("vendor/bin/pars_submit");

            command.add(infil1);     

            command.add(infil2);
            command.add(otfil);
            command.add(time);

System.out.println("Starting process " +command.toString());
            ProcessBuilder builder = new ProcessBuilder(command);
            Map<String, String> environ = builder.environment();
            Process process = null;
            try {
                process = builder.start();

            InputStream is = process.getInputStream();

            InputStreamReader isr = new InputStreamReader(is);
            BufferedReader br = new BufferedReader(isr);
            String line;
            while ((line = br.readLine()) != null) {  

                outfil=line;
            }

            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }  
            finally {
                  if (process != null) {
                    process.destroy();
                    process = null;    //           int exitVal = process.waitFor();
 //           System.out.println("Process exitValue: " + exitVal);
                  }                                 
                }                                           
            return outfil;                              
                }
}

调用此脚本(pars_submit)来执行 ffmpeg 工作:

#!/bin/bash
shopt -s globstar
uri=$1
filnam="${uri##*/}"
uri2=$2
filnam2="${uri2##*/}"
otfil=$3
time=$4
curl -#LO  $uri
curl -#LO  $uri2
ffmpeg -y -loop 1 -i "$filnam" -i "$filnam2" -t "$time" -r 1/2 -pass 1 -vcodec libx264 -b:v 200k -bt 50k  -an -f mp4 -strict -2 -passlogfile mydummy /dev/null
# echo "ffmpegP1 Exit status" $?
ffmpeg -y -loop 1 -i "$filnam" -i "$filnam2" -t "$time" -r 1/2 -pass 2 -vcodec libx264 -b:v 200k -bt 50k  -f mp4 -strict -2 -passlogfile mydummy -ar 44100 "$otfil" 
# echo "ffmpegp2 Exit status" $?
# last test
json=$(curl  -X POST  -H "X-Parse-Application-Id: 3KxPBTPSTe8f0iexGanSagCztLp6wSPzJkyMLAbR" -H "X-Parse-REST-API-Key: kVl5Z0CXmBSCoQRmE8XSLIDFuLGHMCIkLXXjkuI9"  -H "Content-Type: video/mp4"  --data-binary @"$otfil" https://api.parse.com/1/files/"$otfil")
# echo "parse POST Exit status" $?
echo $json

关于ffmpeg - 最好的服务器端视频处理库或软件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16594787/

相关文章:

javascript - WebRTC 视频限制不起作用

ffmpeg - 如何使用 ffmpeg ( 或 xuggle ) 使用实时流创建马赛克

macos - FFmpeg 灰度屏幕录制以减小文件大小?

java - 开发WEB视频 session 应用需要的技术栈?

c - 如何使用 C 程序直播视频。 HTTP 回复应该是什么?如果可能,如何使用分块编码?

vue.js - 将大视频上传到 GCS 使用签名网址,但视频已损坏

html - .ogg 视频无法在 Firefox 中播放

javascript - onPlay(或 onClick?)在 iPad 上触发全屏视频

FFmpeg -c copy 删除视频几秒钟

android - 配置android以编程方式运行ffmpeg命令