LinuxForum.Fans
Тема

Объединение аудио и видео потоков

Автор: DiabloPC 9 сообщений 1710 просмотров
06.11.2017 16:27 #426192

Как "на скорую руку" объединить видео и аудио в один файл.

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



Т.е. либо тащим максимум 720р, либо отдельно видео и отдельно аудио...
А мне желательно натаскать в 1080.

06.11.2017 16:46 #426194

Rizado, та эт слишком жирно... В идеале возможность это все загнать в скрипт (т.е. без всяких гуев). И нужно без перекодирования потоков, а то у меня железяка загнется если всему этому recode сделать. Как ни крути, а несколько десятков часов видео - это немало...

06.11.2017 16:52 · отредактировано #426195
"DiabloPC" написал:
Как "на скорую руку" объединить видео и аудио в один файл.

[console]ffmpeg -i video.mp4 -i audio.mp3 -c:v copy -c:a aac -strict experimental output.mp4
или попроще:
ffmpeg -i audio.mp3 -i video.avi video_audio_mix.mpg
[/console]

ffmpeg современный сам автоматически определяет опции по применению кодеков и декодера по указанному расширению файла, можно выходной поток указать любой из поддерживаемых вашим ffmpeg'ом.

06.11.2017 17:08 #426196

"gramozeka" написал:
ffmpeg -i video.mp4 -i audio.mp3 -c:v copy -c:a aac -strict experimental output.mp4
О! Да-да, оно)) Спасибо.

ЗЫ
Попробовал -c:a сору - вообще бомба =)
06.11.2017 22:48 #426222

Когда то использовал этот скрипт для ютуба:

text
#!/bin/bash

URL="$1"

EXT="mp4" VF=136 AF=140

FILE_V="$(youtube-dl -f $VF $URL | grep Destination)" FILE_A="$(youtube-dl -f $AF $URL | grep Destination)" FILE_V="${FILE_V/\[download\] Destination: /}" FILE_A="${FILE_A/\[download\] Destination: /}"

ffmpeg -i "$FILE_V" -i "$FILE_A" -c:v copy -c:a copy -map 0:0 -map 1:0 -y "$2".$EXT rm {"$FILE_V","$FILE_A"}

Первый параметр адрес, второй имя выходного файла без расширения.
От куда что бралось покажет
[console]$ youtube-dl -F адрес[/console]

07.11.2017 11:38 #426237

ormorph, Спасибо, занятный суриптик)
Нужно только его научить приоритетам выбора качаства¸а то не факт что указаное качество будет присутствовать в каждом видео....

08.11.2017 12:01 #426259
"DiabloPC" написал:
ormorph, Спасибо, занятный суриптик)
Нужно только его научить приоритетам выбора качаства¸а то не факт что указаное качество будет присутствовать в каждом видео....

Ну удачи!
В принципе номера фиксированные в первой колонке вывода команды:
[console]$ youtube-dl -F адрес[/console]
Т.е. хватит просто парсить на наличие определенных номеров(кодов) определяющих формат и качество.

08.11.2017 12:10 #426261
"ormorph" написал:
Т.е. хватит просто парсить на наличие определенных номеров(кодов) определяющих формат и качество.

Та собсно почти так и сделал:

text
VIDEO=$(echo "$AVAILABLE" | grep "video only" | grep -e 1280x720 -e 1920x1080)
AUDIO=$(echo "$AVAILABLE" | grep "audio only")
ALT=$(echo "$AVAILABLE" | grep "(best)")

А дальше, если $VIDEO == "" - то качаем то что попало в $ALT

Войдите или зарегистрируйтесь, чтобы ответить.