国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

python ffmpeg 使用 pyav 轉(zhuǎn)換 一組圖像 到 視頻

這篇具有很好參考價值的文章主要介紹了python ffmpeg 使用 pyav 轉(zhuǎn)換 一組圖像 到 視頻。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

2022/8/4 更新
支持加入水印
水印必須包含透明圖像,并且水印圖像大小要等于原圖像的大小

python convert_image_to_video.py -f 30 -m watermark.png im_dir out.mkv

2022/6/21 更新
讓命令行參數(shù)更加易用
新的命令行使用方法

python convert_image_to_video.py -f 30 im_dir out.mkv

FFMPEG 命令行轉(zhuǎn)換 一組JPG圖像 到視頻時,是將這組圖像視為 MJPG 流。
我需要轉(zhuǎn)換一組 PNG 圖像到視頻,F(xiàn)FMPEG 就不認了。

pyav內(nèi)置了ffmpeg庫,不需要系統(tǒng)帶有ffmpeg工具

因此我使用 ffmpeg 的python包裝 pyav寫一個命令行工具,可以轉(zhuǎn)換一組任意格式圖像到視頻,來解決這個問題。
視頻尺寸為第一張圖像的大小
編碼方式為 crf 18
編碼時間參考:i7-8750H 5分鐘1080P 30FPS 視頻,編碼時間約為 30 分鐘

requirement.txt

opencv-python
tqdm
av
click

使用方法
將以下代碼,復制粘貼到一個文件內(nèi),命名為 convert_image_to_video.py
使用命令
python convert_image_to_video.py im_dir --out_file out.mkv

python convert_image_to_video.py -f 30 im_dir out.mkv

可以看到進度條,可以看到輸出文件默認名字為 out.mkv
即使沒有完成,也可以立刻使用播放器播放 out.mkv 文件觀看成品質(zhì)量。文章來源地址http://www.zghlxwxcb.cn/news/detail-433579.html

import av
import numpy as np
import cv2
from glob import glob
from tqdm import tqdm
import click


support_im_exts = ('.png', '.bmp', '.webp', '.jpg', '.jp2', '.jpeg')


def blend(im, wm_color, wm_alpha):
    im = im * (1-wm_alpha) + wm_color * wm_alpha
    im = np.uint8(np.clip(np.round(im), 0, 255))
    return im


@click.command()
@click.argument('in-dir',   type=str)
@click.argument('out-file', type=str)
@click.option('-f', '--fps', type=click.IntRange(1), default=30, show_default=True, help='Video FPS.')
@click.option('-m', '--watermark', type=str, default=None, show_default=True, help='watermark file.')
def main(in_dir, out_file, fps=30, watermark=None):
    vcodec = 'libx264'

    if '*' not in in_dir:
        in_dir = f'{in_dir}/*.*'

    in_files = glob(in_dir, recursive=True)

    in_files = [f for f in in_files if f.endswith(support_im_exts)]
    in_files = sorted(in_files)

    if watermark is not None:
        buf = open(watermark, 'rb').read()
        buf = np.frombuffer(buf, dtype=np.uint8)
        wm = cv2.imdecode(buf, -1)
        assert wm is not None
        assert wm.ndim == 3 and wm.shape[-1] == 4
        wm = cv2.cvtColor(wm, cv2.COLOR_BGRA2RGBA)
    else:
        wm = None

    container = av.open(out_file, mode="w")

    stream = container.add_stream(vcodec, rate=fps)

    stream.pix_fmt = "yuv420p"
    # stream.bit_rate = 10000*1000
    stream.options["crf"] = "18"
    stream.options["profile"] = "high"
    stream.options["tune"] = "ssim"
    stream.options["preset"] = "7"
    stream.options["high-tier"] = "1"
    stream.options["level"] = "5"
    stream.options["tier"] = "high"

    wm_color = None
    wm_alpha = None

    for f_i, file in enumerate(tqdm(in_files)):

        im = cv2.imread(file, 1)
        assert im is not None
        im = cv2.cvtColor(im, cv2.COLOR_BGR2RGB)

        if f_i == 0:
            stream.width = im.shape[1]
            stream.height = im.shape[0]
            if wm is not None:
                wm = cv2.resize(wm, tuple(im.shape[:2][::-1]), interpolation=cv2.INTER_LINEAR)
                wm_color = wm[..., :3]
                wm_alpha = np.float32(wm[..., 3:4]) / 255.


        if wm is not None:
            im = blend(im, wm_color, wm_alpha)

        frame = av.VideoFrame.from_ndarray(im, format="rgb24")
        for packet in stream.encode(frame):
            container.mux(packet)

    # Flush stream
    for packet in stream.encode():
        container.mux(packet)

    # Close the file
    container.close()


if __name__ == '__main__':
    main()

到了這里,關(guān)于python ffmpeg 使用 pyav 轉(zhuǎn)換 一組圖像 到 視頻的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務器費用

相關(guān)文章

  • 基于Python的pyAV讀取H265(HEVC)編碼的視頻文件

    基于Python的pyAV讀取H265(HEVC)編碼的視頻文件

    ????????利用海康威視相機拍出來的視頻是H265格式的,相比于常規(guī)的H264編碼,壓縮率更高,但因此如果直接用之前的方法讀取,會出現(xiàn)無法讀取的情況,如下。 ????????可以看到,對于幀間沒有改變的部分,H265編碼就只保存一份,因此直接解析出來就都是空白的,只

    2024年02月22日
    瀏覽(28)
  • Java工程使用ffmpeg進行音視頻格式轉(zhuǎn)換(ws.schild)

    JAVE (Java Audio Video Encoder)是一個純Java的音視頻編碼器和解碼器庫,它是基于FFmpeg。JAVE庫提供了一些簡單易用的API,用于音頻和視頻格式的轉(zhuǎn)換、編碼、解碼等操作。它對于一些基本的音視頻處理任務來說是一個不錯的選擇。 這些庫都是基于FFmpeg的,并允許在Java中處理音頻和

    2024年02月14日
    瀏覽(337)
  • 【FFmpeg】ffmpeg 命令行參數(shù) ⑧ ( 使用 ffmpeg 轉(zhuǎn)換封裝格式 | 音視頻編解碼器參數(shù)設置 | 視頻 幀率 / 碼率 / 分辨率 設置 | 音頻 碼率 / 采樣率 設置 )

    【FFmpeg】ffmpeg 命令行參數(shù) ⑧ ( 使用 ffmpeg 轉(zhuǎn)換封裝格式 | 音視頻編解碼器參數(shù)設置 | 視頻 幀率 / 碼率 / 分辨率 設置 | 音頻 碼率 / 采樣率 設置 )

    音視頻 文件 從 采樣 - 處理 - 得到原始數(shù)據(jù)幀隊列 - 音視頻編碼 - 音視頻包隊列 - 格式封裝 的過程如下 : 封裝格式 參考 【音視頻原理】音視頻 “ 采樣 - 編碼 - 封裝 過程 “ 和 “ 解封裝 - 解碼 - 播放 過程 “ 分析 ( 視頻采集處理流程 | 音頻采集處理流程 | 音視頻文件解封裝

    2024年04月17日
    瀏覽(100)
  • python使用ffmpeg來制作音頻格式轉(zhuǎn)換工具(優(yōu)化版)

    python使用ffmpeg來制作音頻格式轉(zhuǎn)換工具(優(yōu)化版)

    簡介:一個使用python加上ffmpeg模塊來進行音頻格式轉(zhuǎn)換的工具。 日志: 20231030:第一版,設置了簡單的UI布局和配色,實現(xiàn)音頻轉(zhuǎn)為Mp3、AAC、wav、flac四種格式。可解析音頻并顯示信息,可設置轉(zhuǎn)換后的保存路徑 UI界面: 編程平臺:visual studio code 編程語言:python 3.12.0 模塊:

    2024年02月06日
    瀏覽(37)
  • FFMPEG視頻壓縮與Python使用方法

    FFMPEG視頻壓縮與Python使用方法

    FFMPEG ?是一個完整的,跨平臺的解決方案,記錄,轉(zhuǎn)換和流音頻和視頻。 官網(wǎng):https://ffmpeg.org/ 1、Linux: 2、Mac: 3、Windows: ?下載文件: ?解壓縮: ?配置環(huán)境變量: ? 出現(xiàn)上圖所示response即可說明成功安裝。 1、指定視頻壓縮大小: -fs 10 : 表示文件大小最大值為 100MB 2、設置

    2024年02月07日
    瀏覽(19)
  • python使用ffmpeg合并多張圖片成視頻

    注意: 需要在本地有ffmpeg,并且配置環(huán)境變量 下載鏈接如下:https://download.csdn.net/download/qq_30273575/87898080 # FFmpeg 將多張圖片合成視頻 # 可以使用 FFmpeg 庫來將多張圖片合成視頻,下面是一個簡單的示例: # 在代碼中,需要提供存儲圖片的文件夾路徑 images_path 和最終生成的視頻

    2024年02月11日
    瀏覽(31)
  • 【FFmpeg】視頻與圖片互相轉(zhuǎn)換 ( 視頻與 JPG 靜態(tài)圖片互相轉(zhuǎn)換 | 視頻與 GIF 動態(tài)圖片互相轉(zhuǎn)換 )

    【FFmpeg】視頻與圖片互相轉(zhuǎn)換 ( 視頻與 JPG 靜態(tài)圖片互相轉(zhuǎn)換 | 視頻與 GIF 動態(tài)圖片互相轉(zhuǎn)換 )

    執(zhí)行 命令 , 將 輸入文件 input.mp4 中的 第 2 秒 開始的 1 幀數(shù)據(jù) 轉(zhuǎn)為一張 848x480 像素的圖片 , 輸出到 output.jpg 文件中 ; 上述命令解析 : -i input.mp4 : 指定輸入文件為 input.mp4 , -i 參數(shù)用于設置輸入文件 ; -y : 設置 如果輸出文件已存在 , 直接覆蓋 , 如果不設置該選項 , 會中斷執(zhí)行

    2024年04月23日
    瀏覽(31)
  • ffmpeg 將視頻幀轉(zhuǎn)換成jpg、png等圖片

    有時播放實時流的時候有截圖的需求,需要將解碼出來的圖片保存本地或上傳服務器,這時就需要將avframe中的數(shù)據(jù)編碼成png、jpg等格式的圖片,我們使用ffmpeg的相關(guān)編碼器就可以實現(xiàn)功能。 首先需要查找圖片編碼器,比如jpg為AV_CODEC_ID_MJPEG,png為AV_CODEC_ID_PNG 示例代碼: 有了

    2024年02月02日
    瀏覽(22)
  • 使用 ffmpeg-python+命名管道進行圖片轉(zhuǎn)視頻或推流

    命名管道(Named Pipe),也被稱為FIFO,是一種在UNIX、Linux和類Unix系統(tǒng)中用于實現(xiàn)進程間通信(IPC)的機制。在Python中,我們可以使用 os 模塊來創(chuàng)建和操作命名管道。 命名管道實際上是個特殊的文件,需要先創(chuàng)建 讀寫前后需要打開關(guān)閉 ffmpeg從命名管道輸入源的方法與普通文件

    2024年04月16日
    瀏覽(21)
  • Python視頻編輯神器:全面分析ffmpeg-python庫的安裝與使用方法

    Python視頻編輯神器:全面分析ffmpeg-python庫的安裝與使用方法 在Python中進行視頻編輯是一件令人興奮的事情,它能夠讓你深入了解和控制你想要的任何一幀視頻。而在Python視頻編輯工具中,ffmpeg-python庫可以說是至關(guān)重要的一員。它能夠讓你輕松地處理視頻、音頻等多媒體數(shù)據(jù)

    2024年02月10日
    瀏覽(94)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包