
У меня есть папка с аудиофайлом 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++
}