FFmpeg生成渐进式图像 | 含Go、Kotlin、Python调用

安装FFmpeg

ffmpeg的安装是很简单的,配置好环境变量即可调用,理论上支持任何可以调用命令的语言。

ffmpeg安装:安装FFmpeg_ffmpeg 安装-CSDN博客

命令行调用

以下是一个示例命令,演示如何使用 FFmpeg 将一张 JPEG 图像转换为渐进式的 WebP 图像:

ffmpeg -i input.jpg -c:v libwebp -pix_fmt yuv420p -lossless 0 -quality 85 -qmin 0 -qmax 100 -an -f webp -pass 1 -progressive output.webp

Go语言调用

package main

import (
    "os"
    "os/exec"
)

func main() {
    input := "input.jpg"
    output := "output.webp"

    cmd := exec.Command("ffmpeg",
        "-i", input,
        "-c:v", "libwebp",
        "-pix_fmt", "yuv420p",
        "-lossless", "0",
        "-quality", "85",
        "-qmin", "0",
        "-qmax", "100",
        "-an",
        "-f", "webp",
        "-pass", "1",
        "-progressive",
        output,
    )

    cmd.Stdout = os.Stdout
    cmd.Stderr = os.Stderr

    if err := cmd.Run(); err != nil {
        panic(err)
    }
}

Kotlin调用

import java.io.File

fun main() {
    val input = "input.jpg"
    val output = "output.webp"

    val cmd = "ffmpeg -i $input -c:v libwebp -pix_fmt yuv420p -lossless 0 -quality 85 -qmin 0 -qmax 100 -an -f webp -pass 1 -progressive $output"
    
    val process = Runtime.getRuntime().exec(cmd)
    
    val errorStream = process.errorStream
    val inputStream = process.inputStream
    
    val errorOutput = errorStream.bufferedReader().readText()
    val standardOutput = inputStream.bufferedReader().readText()
    
    process.waitFor()
    
    println("Error Output: $errorOutput")
    println("Standard Output: $standardOutput")
}

python调用

import subprocess

input_file = "input.jpg"
output_file = "output.webp"

command = [
    "ffmpeg",
    "-i", input_file,
    "-c:v", "libwebp",
    "-pix_fmt", "yuv420p",
    "-lossless", "0",
    "-quality", "85",
    "-qmin", "0",
    "-qmax", "100",
    "-an",
    "-f", "webp",
    "-pass", "1",
    "-progressive",
    output_file
]

process = subprocess.Popen(command, stdout=subprocess.PIPE, stderr=subprocess.PIPE)

stdout, stderr = process.communicate()

print("Standard Output:")
print(stdout.decode())
print("Error Output:")
print(stderr.decode())

  • 11
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

“陈序员”

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值