LINUX.ORG.RU

Сообщения Zuldek

 

FFMPEG, не корректное соотношение сторон в потоках

ffmpeg -i /file.mp4 
    -c:a libopus -c:v libvpx-vp9 -pix_fmt yuv420p 
    -map 0:a:0 -b:a:0 128k 
    -map 0:v:0 -filter:v:0 scale=-1:144 -b:v:0 60k 
    -map 0:v:0 -filter:v:1 scale=-1:240 -b:v:1 150k 
    -init_seg_name "init-$RepresentationID$.$ext$"
    -media_seg_name "sg-$RepresentationID$-$Number%05d$.$ext$" 
    -dash_segment_type webm 
    -use_template 1 -use_timeline 1 -seg_duration 9 
    -adaptation_sets "id=0, streams=v id=1, streams=a" 
    -f dash /manifest.mpd
ffmpeg version 7.0.2-static https://johnvansickle.com/ffmpeg/  Copyright (c) 2000-2024 the FFmpeg developers
ID=    built with gcc 8 (Debian 8.3.0-6)
ID=    configuration: --enable-gpl --enable-version3 --enable-static --disable-debug --disable-ffplay --disable-indev=sndio --disable-outdev=sndio --cc=gcc --enable-fontconfig --enable-frei0r --enable-gnutls --enable-gmp --enable-libgme --enable-gray --enable-libaom --enable-libfribidi --enable-libass --enable-libfreetype --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-librubberband --enable-libsoxr --enable-libspeex --enable-libsrt --enable-libvorbis --enable-libopus --enable-libtheora --enable-libvidstab --enable-libvo-amrwbenc --enable-libvpx --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxml2 --enable-libdav1d --enable-libxvid --enable-libzimg
ID=    libavutil      59.  8.100 / 59.  8.100
ID=    libavcodec     61.  3.100 / 61.  3.100
ID=    libavformat    61.  1.100 / 61.  1.100
ID=    libavdevice    61.  1.100 / 61.  1.100
ID=    libavfilter    10.  1.100 / 10.  1.100
ID=    libswscale      8.  1.100 /  8.  1.100
ID=    libswresample   5.  1.100 /  5.  1.100
ID=    libpostproc    58.  1.100 / 58.  1.100
ID=  Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '***/file.mp4':
ID=    Metadata:
ID=      major_brand     : isom
ID=      minor_version   : 512
ID=      compatible_brands: isomiso2mp41
ID=      encoder         : Lavf61.1.100
ID=    Duration: 00:03:08.64, start: 0.000000, bitrate: 473 kb/s
ID=    Stream #0:0[0x1](und): Video: vp9 (Profile 0) (vp09 / 0x39307076), yuv420p(tv, bt709), 1920x1080, 337 kb/s, 30 fps, 30 tbr, 16k tbn (default)
ID=        Metadata:
ID=          handler_name    : ISO Media file produced by Google Inc. Created on: 04/03/2025.
ID=          vendor_id       : [0][0][0][0]
ID=    Stream #0:1[0x2](und): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 128 kb/s (default)
ID=        Metadata:
ID=          handler_name    : SoundHandler
ID=          vendor_id       : [0][0][0][0]
ID=  Stream mapping:
ID=    Stream #0:1 -> #0:0 (aac (native) -> opus (libopus))
ID=    Stream #0:0 -> #0:1 (vp9 (native) -> vp9 (libvpx-vp9))
ID=    Stream #0:0 -> #0:2 (vp9 (native) -> vp9 (libvpx-vp9))
ID=  Press [q] to stop, [?] for help
ID=  [libvpx-vp9 @ 0xb03cbe0] v1.11.0-30-g888bafc78
ID=  [libvpx-vp9 @ 0xb0f30b0] v1.11.0-30-g888bafc78
ID=  [dash @ 0xb03b1e0] Opening '***/ttt/init-0.webm' for writing
ID=  [dash @ 0xb03b1e0] Opening '***/ttt/init-1.webm' for writing
ID=  [dash @ 0xb03b1e0] Opening '***/ttt/init-2.webm' for writing
ID=  [dash @ 0xb03b1e0] Conflicting stream aspect ratios values in Adaptation Set 1. Please ensure all adaptation sets have the same aspect ratio
ID=  [out#0/dash @ 0xb036440] Could not write header (incorrect codec parameters ?): Invalid argument
ID=  [vf#0:2 @ 0xb0f3d60] Error sending frames to consumers: Invalid argument
ID=  [vf#0:2 @ 0xb0f3d60] Task finished with error code: -22 (Invalid argument)
ID=  [vf#0:2 @ 0xb0f3d60] Terminating thread with return code -22 (Invalid argument)
ID=  [out#0/dash @ 0xb036440] Nothing was written into output file, because at least one of its streams received no packets.
ID=  frame=    0 fps=0.0 q=33.0 Lq=0.0 size=       0KiB time=N/A bitrate=N/A speed=N/A

Последняя версия, 7.0.2-static, правда не знаю почему Debian 8.3.0-6, когда OC ubuntu.

Трудность в том, что на одном из 2 видеопотоках. Происходит какое то несоответствие соотношением сторон.

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

Предположим, если взять 10 видео. То примерно 2-3-4 видео будут обработаны, остальные ошибку выдадут.

 ,

Zuldek
()

Скачивание видео с ютуб, через yt_dlp + прокси

Ubunto

Установил shadowsocks-libev, конфиг

{
    "server": "0.0.0.0",     
    "server_port": 8388,
    "local_address": "127.0.0.1",
    "local_port": 1080,
    "password": "your_password",
    "method": "chacha20-ietf-poly1305",
    "timeout": 300
}
curl -v --proxy socks5://root:your_password@92.63.***.***:8388 https://www.google.com
*   Trying 92.63.***.***:8388...
* Connected to 92.63.***.** (92.63.***.***) port 8388

Соединение зависает

 nc -vz 92.63.***.*** 8388
Connection to 92.63.***.*** 8388 port [tcp/*] succeeded!

Вероятно дело в авторизации, попробовал еще один вариант

wget -e use_proxy=yes -e http_proxy=socks5h://root:your_password@92.63.***.***:8388 https://www.google.com

Он сработал, скачал index гугл страницы. Ок

Далее, необходимо через yt_dlp, скачать видео. Написал скрипт, закинул на сервер

ydl_opts = {
    'format': 'bv+ba/best',  # Лучшее видео + лучший звук
    'outtmpl': "/var/rJNBGqiBI7s",  # Путь сохранения
    'merge_output_format': 'mp4',  # Объединение видео и аудио
    'postprocessors': [{
        'key': 'FFmpegVideoConvertor',
        'preferedformat': 'mp4',  # Конвертация в MP4
    }]
}

# Скачивание
with yt_dlp.YoutubeDL(ydl_opts) as ydl:
    ydl.download(["https://www.youtube.com/watch?v=rJNBGqiBI7s"])

Ок, видео загружено. Подитожим

Есть сервер, запуская скрипт на нем, возможно скачать видео. Далее на этом сервере, установил shadowsocks. Открыл порт, из вне доступен. Через CURL, зависает соединение. Через wget, соединение есть. Страницу получаем

То есть, со своего пк, в терминале выполняю команду

wget -e use_proxy=yes -e http_proxy=socks5h://root:your_password@92.63.***.***:8388 https://www.google.com

На удаленный сервер и удаленный сервер скачивает. Не знаю почему но с курл у меня так ничего не вышло.

Далее. Мне необходимо запустить скрипт для скачивания видео с ютуб, скрипт запускаю на своем пк, а скачать видео необходимо через удаленный прокси сервер. Поскольку доступа к ютубу с моего пк нету…

Мой вариант

import sys, yt_dlp

# Настройки загрузки
print(sys.argv[1])
ydl_opts = {
    'proxy': 'socks5h://root:your_password@92.63.***.***:8388',
    'format': 'bv+ba/best',  # Лучшее видео + лучший звук
    'outtmpl': "/var/rJNBGqiBI7s",  # Путь сохранения
    'merge_output_format': 'mp4',  # Объединение видео и аудио
    'postprocessors': [{
        'key': 'FFmpegVideoConvertor',
        'preferedformat': 'mp4',  # Конвертация в MP4
    }]
}

# Скачивание
with yt_dlp.YoutubeDL(ydl_opts) as ydl:
    ydl.download(["https://www.youtube.com/watch?v=rJNBGqiBI7s"])
[youtube] Extracting URL: https://www.youtube.com/watch?v=rJNBGqiBI7s
[youtube] rJNBGqiBI7s: Downloading webpage
WARNING: [youtube] Unable to download webpage: timed out
[youtube] rJNBGqiBI7s: Downloading tv client config

Подскажите, как верно настроить прокси, так чтобы возможно было скачать видео через yt_dlp. Кажется все варианты и форумы перелазал… Только на вас надежда…

 ,

Zuldek
()

RSS подписка на новые темы