前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >使用ChatGPT实现Go版本的视频文件无人直播

使用ChatGPT实现Go版本的视频文件无人直播

原创
作者头像
崔哥
修改2023-11-07 23:28:49
1590
修改2023-11-07 23:28:49
举报
文章被收录于专栏:崔哥的专栏崔哥的专栏

首先,视频文件直播如下一条命令就可以了

代码语言:txt
复制
cuiwei@weideMacBook-Pro ~ % ffmpeg -re -i ~/Movies/aaa.mp4 -vcodec copy -acodec aac -b:a 96k -f flv "推流地址"

接下来我们让ChatGPT完善一下,

  • 一个目录下有多个视频文件,依次播放每个文件,全部播放完时,从头播放

目录结构

代码语言:txt
复制
cuiwei@weideMacBook-Pro ffmpeg % ls
202306092337.mp4        202307081641.mp4        main.go

main.go

代码语言:txt
复制
package main

import (
	"fmt"
	"os"
	"os/exec"
	"path/filepath"
	"strings"
	"time"
)

func isVideoFile(path string) bool {
	ext := strings.ToLower(filepath.Ext(path))
	return ext == ".mp4" || ext == ".mov" || ext == ".avi" || ext == ".mkv" // 添加更多视频文件扩展名
}

func findVideoFiles(dir string) []string {
	var videoFiles []string

	err := filepath.Walk(dir, func(path string, info os.FileInfo, err error) error {
		if err != nil {
			return err
		}

		if !info.IsDir() && isVideoFile(path) {
			videoFiles = append(videoFiles, path)
		}

		return nil
	})

	if err != nil {
		fmt.Println("Error walking directory:", err)
	}

	return videoFiles
}

func main() {
	directoryPath := "/Users/cuiwei/GolandProjects/demo/ffmpeg"
	videoFiles := findVideoFiles(directoryPath)

	if len(videoFiles) > 0 {
		fmt.Println("Video files found:")
		//fmt.Println(videoFiles[0])

		currentIndex := 0
		for {
			videoFile := videoFiles[currentIndex]
			cmd := exec.Command("ffmpeg", "-re", "-i", videoFile, "-vcodec", "copy", "-acodec", "aac", "-b:a", "96k", "-f", "flv", "推流地址")

			// 启动 FFmpeg 进程
			err := cmd.Start()
			if err != nil {
				fmt.Println("Error starting FFmpeg:", err)
				return
			}

			// 等待 FFmpeg 进程结束
			err = cmd.Wait()
			if err != nil {
				fmt.Println("Error waiting for FFmpeg:", err)
			}

			fmt.Printf("Video %s has finished streaming.\n", videoFile)

			// 切换到下一个视频
			currentIndex++
			if currentIndex >= len(videoFiles) {
				currentIndex = 0 // 从头开始
			}

			// 添加延迟,以便在切换视频之前等待一段时间
			time.Sleep(5 * time.Second) // 5秒延迟,你可以根据需要调整
		}
	} else {
		fmt.Println("No video files found in the directory.")
	}
}

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云直播
云直播(Cloud Streaming Services,CSS)为您提供极速、稳定、专业的云端直播处理服务,根据业务的不同直播场景需求,云直播提供了标准直播、快直播、云导播台三种服务,分别针对大规模实时观看、超低延时直播、便捷云端导播的场景,配合腾讯云视立方·直播 SDK,为您提供一站式的音视频直播解决方案。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档