Как воспроизвести видео без звука и одновременно добавить аудиофайл?

Как воспроизвести видео без звука и одновременно добавить аудиофайл?

У меня есть папка с аудиофайлом MP3 и видеофайлом. Оба названы одинаково.

  • Пример.mp3
  • Пример.mp4

Я хочу воспроизвести видео и добавить звук.
Оба файла должны остаться прежними, и я не хочу, чтобы в новом файле были оба.

Есть ли способ сделать это с помощью командной строки?

решение1

Как воспроизвести видео без звука и одновременно добавить аудиофайл?
Я хочу воспроизвести видео и добавить звук.

С (экспериментальным) --input-slaveпереключателем.

Есть ли способ сделать это с помощью командной строки?

Если в вашем видео нет звуковых дорожек, то вы можете просто использовать что-то вроде следующего:

vlc example.mp4 --input-slave=example.mp3

Если в вашем видео есть звуковая дорожка, то VLC будет использовать ее по умолчанию, поэтому вам придется указать альтернативную дорожку следующим образом:

vlc exmaple.mp4 --input-slave=example.mp3 --audio-track=1

Если в вашем видео две звуковые дорожки, то вы должны использовать --audio-track=2и т. д. (первая дорожка — 0, поэтому номер, который вы используете для внешнего звука, равен количеству звуковых дорожек в видео).

Кроме того, вы (в настоящее время) можете указать только одну внешнюю звуковую дорожку, поэтому это не будет работать:

vlc example.mp4 --input-slave=example.mp3 --input-slave=example2.mp3

В этом случае VLC использует только последний указанный вариант.

решение2

Кажется, я хотел того же. У меня есть лаунчер приложений, который я написал в PowerShell, и среди прочего он создает случайный плейлист из 8 треков из моей музыкальной библиотеки, а поверх него в полноэкранном режиме выводит случайное видео визуализации.

Выглядит примерно так: vlc.ps1

#cache variables
$videopath = "C:\path\to\your\mp4\videos"
$musicpath = "C:\path\to\your\music"
$numtracks = 8
$slave = @()
$slavecount =0
$rand = 0
$track = ""
$i=0

#Grab a random video
Get-Childitem -Path $videopath -Include *.mp4, *.avi, *.mkv -Recurse |
    Foreach {
        # Flip those slashes around
        $slave += $_.Fullname  -replace "\\","/"
    }
   $slavecount = $slave.Count

# Build a random 8-track
Get-Childitem -Path $musicpath -Include *.mp3, *.flac -Recurse |
    Get-Random -Count $numtracks |
    Foreach {
        #Choose a random video from the array of videos
        # This only used if they fix VLC to allow multiple slaves
        $rand = Get-Random -Minimum 0 -Maximum $slavecount

        # Add the double quotes just how vlc likes it
        $track = """" + $_.Fullname + """"

        if ($i -lt 1) {
            #start vlc, queue your first track and slave the random visualization
            vlc --started-from-file --play-and-stop $track --input-slave=file:///$slave[$rand] --fullscreen   
        } else {
            #now enqueue the remaining tracks
            #if multiple slaves are eventually supported this whole if statement can be removed
            vlc --started-from-file --playlist-enqueue $track
        }
        $i++

    }

Связанный контент