乐趣区

关于python3.x:记一次直播录屏

记一次直播录屏

部署

前提:

  1. 装置 ossutil 工具
  2. 装置 ffmpeg
    Centos8 装置 ffmpeg
  3. requirement 安装包

    其中装置 opencv-python,还须要装置 yum install mesa-libGL.x86_64

    certifi==2021.5.30
    chardet==4.0.0
    click==8.0.1
    colorlog==5.0.1
    decorator==4.4.2
    Flask==2.0.1
    idna==2.10
    imageio==2.9.0
    imageio-ffmpeg==0.4.4
    importlib-metadata==4.6.0
    itsdangerous==2.0.1
    Jinja2==3.0.1
    MarkupSafe==2.0.1
    moviepy==1.0.3
    numpy==1.21.0
    opencv-python==4.5.2.54
    Pillow==8.3.1
    proglog==0.1.9
    redis==3.5.3
    requests==2.25.1
    tqdm==4.61.2
    typing-extensions==3.10.0.0
    urllib3==1.26.6
    waitress==2.0.0
    Werkzeug==2.0.1
    zipp==3.4.1

ffmpeg 根底命令记录

  • 录屏

    ffmpeg -i %s -c:v copy -c:a copy %s -y -loglevel error " % (flv_url, absolute_file_path)

  • 截取一段视频

    ffmpeg -i {first_ts_file} -ss 00:00:00.50 -t 00:00:00.10 -c:v copy -c:a copy {first_file}

  • 将图片制作成一段定长的视频

    ffmpeg -loop 1 -i {file_image} -pix_fmt yuv420p -vcodec libx264 -b:v 600k -r:v 25 -preset medium -crf 30 -s 1080x1920 -t {interrupt_middle_time} {interrupt_middle_ts_file}

    在这里当这个视频作为第一个视频去拼接其余视频的时候,会导致合并后的视频无声的问题。可怕的不止如此,如果放在两头地位,下一个的视频音轨还会跑到两头这个没有音轨的视频中。对 ffmpeg 也不相熟,不晓得有什么优雅的解决办法,我是退出空白音轨来解决的。

  • 将图片制作成一段定长带有空白音轨的视频

    ffmpeg -loop 1 -i {file_image} -f lavfi -i anullsrc=cl=stereo:r=44100 -pix_fmt yuv420p -vcodec libx264 
                -acodec aac  -absf aac_adtstoasc -b:v 600k -preset medium -crf 30 -s 1080x1920 -tune stillimage 
                -shortest -t {interrupt_image_time / 2} {interrupt_begin_ts_file}
  • 视频合并

    即便是有空白音轨的视频放在第一段,合并成的视频也都是无声。只能在后面偷偷加个 0.20 秒的小视频段来拼接,这样就没有问题了。

    这种办法很蠢,不分明应该怎么整,有分明的麻烦告知!

    ffmpeg -i "concat:%s" -acodec copy -vcodec copy -absf aac_adtstoasc %s -loglevel error % (merge_file_str, output_file)

附录

  • 获取视频时长
  • m3u8 python 下载加密解密解析
退出移动版