gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 22:48:45 25 4
gpt4 key购买 nike

就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the help center寻求指导。




9年前关闭。




我需要您对选择正确的命令行工具的建议
这将允许我处理用户上传的视频。

通过处理我的意思是:

  • 转换成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;
    }
    }

    调用执行 ffmpeg 工作的此脚本(pars_submit):
    #!/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/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com