MaixII-Dock(v831)学习笔记——播放视频


前言

  MaixII-Dock可以通过ffmpeg + pyav来播放视频,但是v831性能一般,可能最高就播放到软解 h264 30fps 了,可以硬解,但是硬解资源不被 FFmpeg 所提供。目前通过测试的视频格式有有 mp4 和 avi,其他格式还没有进行测试,

转换视频格式

  可以通过ffmpeg 转换命令来转换视频格式,为了节约时间,在线转换也可以。点击这里转换视频格式。
  上传自己的视频,选择格式为MP4或者AVI
在这里插入图片描述
  在设置里将编码器改为H.264,调整视频大小为240×240,帧率为30帧,转换完成后下载视频即可。
在这里插入图片描述

播放视频

  将下载好的视频放到 Linux 系统的 root 目录中,将 path_to_video 的参数修改成所存放视频路径,如:‘/root/output_240_240.mp4’,其他视频同理,需要注意的是 v831 的性能很弱,可能最高就播放到软解 h264 30fps 了。注意,经过本人测试,在ide上播放视频,因为会占用一部分的资源,所以会导致很卡,用ssh连接播放的效果会好很多。

import pyaudio, av, os
from maix import display, camera, image
path_to_video = '/root/output_240_240.mp4'
if os.path.exists(path_to_video):
    try:
        container = av.open(path_to_video)
        ai_stream = container.streams.audio[0]
        vi_stream = container.streams.video[0]
        fifo = av.AudioFifo()
        p = pyaudio.PyAudio()
        ao = p.open(format=pyaudio.paFloat32, channels=1, rate=44100, output=True)
        for frame in container.decode(video=0, audio=0):
            if 'Audio' in repr(frame):
                frame.pts = None
                fifo.write(frame)
                for frame in fifo.read_many(4096):
                    ao.write(frame.planes[0].to_bytes())
            if 'Video' in repr(frame):
                img = image.load(bytes(frame.to_rgb().planes[0]), (vi_stream.width, vi_stream.height))
                display.show(img)
    finally:
        ao.stop_stream()
        ao.close()
        p.terminate()

调整视频的音量

  因为MaixII-Dock(v831)板载的扬声器功率很小,所以播放视频有时候可能听不到声音,可以通过ffmpeg命令来修改音量

查看视频音量

ffmpeg -i output_240_240.mp4 -filter_complex volumedetect -c:v copy -f null /dev/null

在这里插入图片描述
mean_volume为当前视频音量,max_volume为最大音量
增大音量

ffmpeg -i xiaoke.mp4  -af volume=30dB  -y  xiaoke.mp4

在这里插入图片描述
音量最多增大到0db。

猜你喜欢

转载自blog.csdn.net/Thousand_drive/article/details/126770835