3

Как использовать ffmpeg -t при использовании живого источника YouTube с youtube-dl?


Я хотел загрузить поток YouTube с https://www.youtube.com/watch?v=0R0T0mQmx7I, добавив количество времени, которое мне нравится. Поэтому, используя youtube-dl, я получаю все его форматы:

$ youtube-dl --list-formats https://www.youtube.com/watch?v=0R0T0mQmx7I
[youtube] 0R0T0mQmx7I: Downloading webpage
[youtube] 0R0T0mQmx7I: Downloading video info webpage
[youtube] 0R0T0mQmx7I: Extracting video information
[youtube] 0R0T0mQmx7I: Downloading MPD manifest
[info] Available formats for 0R0T0mQmx7I:
format code  extension  resolution note
140          m4a        audio only DASH audio  144k , m4a_dash container, mp4a.40.2@128k
160          mp4        256x144    144p  124k , avc1.42c00b, 30fps, video only
133          mp4        426x240    240p  258k , avc1.4d4015, 30fps, video only
134          mp4        640x360    360p  646k , avc1.4d401e, 30fps, video only
135          mp4        854x480    480p 1171k , avc1.4d401f, 30fps, video only
136          mp4        1280x720   720p 2326k , avc1.4d401f, 30fps, video only (best)

Я понял, что аудио и видео находятся в разных форматах, поэтому это не будет простым. Поэтому я использую следующую команду для извлечения аудио и видео:

$ ffmpeg -i $(youtube-dl -f 136 -g  https://www.youtube.com/watch?v=0R0T0mQmx7I) -i $(youtube-dl -f 140 -g https://www.youtube.com/watch?v=0R0T0mQmx7I) -c:v copy -c:a aac -strict experimental -t 00:02:00 output.mp4

Но это не работает. Просто записывает до 5 секунд и все. Я пытался переместить параметр "-t 00:02:00" в разных местах и ​​не работает. Кто-нибудь знает решение? Спасибо !!

РЕДАКТИРОВАНИЕ: Добавление вывода

$ ffmpeg -i $(youtube-dl -f 136 -g  https://www.youtube.com/watch?v=0R0T0mQmx7I) -i $(youtube-dl -f 140 -g https://www.youtube.com/watch?v=0R0T0mQmx7I) -c:v copy -c:a aac -strict experimental -t 00:02:00 output.mp4
ffmpeg version 2.8.11-0ubuntu0.16.04.1 Copyright (c) 2000-2017 the FFmpeg developers
  built with gcc 5.4.0 (Ubuntu 5.4.0-6ubuntu1~16.04.4) 20160609
  configuration: --prefix=/usr --extra-version=0ubuntu0.16.04.1 --build-suffix=-ffmpeg --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --cc=cc --cxx=g++ --enable-gpl --enable-shared --disable-stripping --disable-decoder=libopenjpeg --disable-decoder=libschroedinger --enable-avresample --enable-avisynth --enable-gnutls --enable-ladspa --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libmodplug --enable-libmp3lame --enable-libopenjpeg --enable-libopus --enable-libpulse --enable-librtmp --enable-libschroedinger --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx265 --enable-libxvid --enable-libzvbi --enable-openal --enable-opengl --enable-x11grab --enable-libdc1394 --enable-libiec61883 --enable-libzmq --enable-frei0r --enable-libx264 --enable-libopencv
  libavutil      54. 31.100/54. 31.100
  libavcodec     56. 60.100/56. 60.100
  libavformat    56. 40.101/56. 40.101
  libavdevice    56. 4.100/56. 4.100
  libavfilter     5. 40.101/ 5. 40.101
  libavresample   2. 1. 0/ 2. 1. 0
  libswscale      3. 1.101/ 3. 1.101
  libswresample   1. 2.101/ 1. 2.101
  libpostproc    53. 3.100/53. 3.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'https://r1---sn-j5cax8pnpvo-x1xe6.googlevideo.com/videoplayback?keepalive=yes&source=yt_live_broadcast&pl=24&itag=136&mime=video%2Fmp4&expire=1521354001&c=WEB&sparams=aitags%2Ccmbypass%2Cei%2Cgcr%2Cgir%2Chang%2Cid%2Cip%2Cipbits%2Citag%2Ckeepalive%2Clive%2Cmime%2Cmm%2Cmn%2Cms%2Cmv%2Cnoclen%2Cpl%2Crequiressl%2Csource%2Cexpire&aitags=133%2C134%2C135%2C136%2C160&signature=727E04BDE2851159A8A9327CDBAB503BBDC37267.2168845A24D2FFD5496AA2F5D2D6AACA59BB69D2&cmbypass=yes&ipbits=0&hang=1&beids=%5B9466592%5D&ms=lv&mt=1521331971&mv=u&live=1&key=yt6&ip=152.168.37.75&id=0R0T0mQmx7I.0&gir=yes&mm=32&mn=sn-j5cax8pnpvo-x1xe6&ei=sbCtWvOcLJTWxAS644e4Ag&noclen=1&gcr=ar&requiressl=yes&ratebypass=yes':
  Metadata:
    major_brand     : dash
    minor_version   : 0
    compatible_brands: iso6avc1mp41
    creation_time   : 2018-03-17 07:02:10
  Duration: 00:00:05.00, start: 0.000000, bitrate: 2419 kb/s
    Stream #0:0(und): Video: h264 (Main) (avc1/0x31637661), yuv420p(tv, bt709), 1280x720 [SAR 1:1 DAR 16:9], 2413 kb/s, 30 fps, 30 tbr, 90k tbn, 60 tbc (default)
    Metadata:
      creation_time   : 2018-03-17 07:02:10
      handler_name    : VideoHandler
Input #1, mov,mp4,m4a,3gp,3g2,mj2, from 'https://r1---sn-j5cax8pnpvo-x1xe6.googlevideo.com/videoplayback?ip=152.168.37.75&mm=32&mn=sn-j5cax8pnpvo-x1xe6&expire=1521354004&pl=24&gir=yes&signature=16F13864FDF56FFDF2E08B248355CD1257D2E4FF.C7DBD2A865733005704660CD0EA82A90EFCFC03D&id=0R0T0mQmx7I.0&mt=1521331971&mv=u&ms=lv&hang=1&ipbits=0&itag=140&gcr=ar&requiressl=yes&source=yt_live_broadcast&keepalive=yes&ei=s7CtWsq0Ko7UxQT__pSgBA&noclen=1&sparams=cmbypass%2Ccompress%2Cei%2Cgcr%2Cgir%2Chang%2Cid%2Cip%2Cipbits%2Citag%2Ckeepalive%2Clive%2Cmime%2Cmm%2Cmn%2Cms%2Cmv%2Cnoclen%2Cpl%2Crequiressl%2Csource%2Cexpire&cmbypass=yes&compress=yes&key=yt6&mime=audio%2Fmp4&c=WEB&live=1&ratebypass=yes':
  Metadata:
    major_brand     : dash
    minor_version   : 0
    compatible_brands: iso6mp41
    creation_time   : 2018-03-17 07:02:09
  Duration: 00:00:04.99, start: 0.000000, bitrate: 130 kb/s
    Stream #1:0(und): Audio: aac (LC) (mp4a/0x6134706D), 48000 Hz, stereo, fltp, 125 kb/s (default)
    Metadata:
      creation_time   : 2018-03-17 07:02:09
      handler_name    : SoundHandler
[mp4 @ 0x264eb20] Codec for stream 0 does not use global headers but container format requires global headers
Output #0, mp4, to 'output.mp4':
  Metadata:
    major_brand     : dash
    minor_version   : 0
    compatible_brands: iso6avc1mp41
    encoder         : Lavf56.40.101
    Stream #0:0(und): Video: h264 ([33][0][0][0]/0x0021), yuv420p, 1280x720 [SAR 1:1 DAR 16:9], q=2-31, 2413 kb/s, 30 fps, 30 tbr, 90k tbn, 90k tbc (default)
    Metadata:
      creation_time   : 2018-03-17 07:02:10
      handler_name    : VideoHandler
    Stream #0:1(und): Audio: aac ([64][0][0][0]/0x0040), 48000 Hz, stereo, fltp, 128 kb/s (default)
    Metadata:
      creation_time   : 2018-03-17 07:02:09
      handler_name    : SoundHandler
      encoder         : Lavc56.60.100 aac
Stream mapping:
  Stream #0:0 -> #0:0 (copy)
  Stream #1:0 -> #0:1 (aac (native) -> aac (native))
Press [q] to stop, [?] for help
frame=  150 fps=0.0 q=-1.0 Lsize=    1557kB time=00:00:04.99 bitrate=2555.6kbits/s    
video:1473kB audio:79kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.353100%

Можете ли вы добавить полный, неразрезанный вывод из ffmpeg? (18 марта '18 в 0:16)

Я добавил весь вывод. Спасибо! (18 марта 18 августа в 0:27)

Работает ли он без -t ? И работает ли ваша команда -t с загруженными файлами вместо URL? (18 марта '18 в 1:18)

Первый вопрос: без «-t» только запись 5 секунд. Второй: использование других URL-адресов работает правильно, но я никогда не использовал два ввода в ffmeg. Запись только 5 секунд кажется чем-то странным ... (18 марта 18 ' в 1:20)

Ответов: 1

3

tl; dr : обновить ffmpeg ± youtube-dl .

Включение вывода на консоль было полезно!

Ваши входы распознаются только как 5 секунд

Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'https://r1---sn-j5cax8pnpvo-x1xe6.googlevideo.com/videoplayback?keepalive=yes&source=yt_live_broadcast&pl=24&itag=136&mime=video%2Fmp4&expire=1521354001&c=WEB&sparams=aitags%2Ccmbypass%2Cei%2Cgcr%2Cgir%2Chang%2Cid%2Cip%2Cipbits%2Citag%2Ckeepalive%2Clive%2Cmime%2Cmm%2Cmn%2Cms%2Cmv%2Cnoclen%2Cpl%2Crequiressl%2Csource%2Cexpire&aitags=133%2C134%2C135%2C136%2C160&signature=727E04BDE2851159A8A9327CDBAB503BBDC37267.2168845A24D2FFD5496AA2F5D2D6AACA59BB69D2&cmbypass=yes&ipbits=0&hang=1&beids=%5B9466592%5D&ms=lv&mt=1521331971&mv=u&live=1&key=yt6&ip=152.168.37.75&id=0R0T0mQmx7I.0&gir=yes&mm=32&mn=sn-j5cax8pnpvo-x1xe6&ei=sbCtWvOcLJTWxAS644e4Ag&noclen=1&gcr=ar&requiressl=yes&ratebypass=yes':
  Metadata:
...
   Duration: 00:00:05.00, start: 0.000000, bitrate: 2419 kb/s

Input #1, mov,mp4,m4a,3gp,3g2,mj2, from 'https://r1---sn-j5cax8pnpvo-x1xe6.googlevideo.com/videoplayback?ip=152.168.37.75&mm=32&mn=sn-j5cax8pnpvo-x1xe6&expire=1521354004&pl=24&gir=yes&signature=16F13864FDF56FFDF2E08B248355CD1257D2E4FF.C7DBD2A865733005704660CD0EA82A90EFCFC03D&id=0R0T0mQmx7I.0&mt=1521331971&mv=u&ms=lv&hang=1&ipbits=0&itag=140&gcr=ar&requiressl=yes&source=yt_live_broadcast&keepalive=yes&ei=s7CtWsq0Ko7UxQT__pSgBA&noclen=1&sparams=cmbypass%2Ccompress%2Cei%2Cgcr%2Cgir%2Chang%2Cid%2Cip%2Cipbits%2Citag%2Ckeepalive%2Clive%2Cmime%2Cmm%2Cmn%2Cms%2Cmv%2Cnoclen%2Cpl%2Crequiressl%2Csource%2Cexpire&cmbypass=yes&compress=yes&key=yt6&mime=audio%2Fmp4&c=WEB&live=1&ratebypass=yes':
  Metadata:
   ...
  Duration: 00:00:04.99, start: 0.000000, bitrate: 130 kb/s

Ваша версия ffmpeg довольно старая

ffmpeg version 2.8.11-0ubuntu0.16.04.1 Copyright (c) 2000-2017 the FFmpeg developers

2.8 датируется примерно началом 2016 года, насколько я могу судить. Вам настоятельно рекомендуется обновить до последней версии ffmpeg ; желательно последняя git HEAD, но в противном случае этот PPA может быть полезен для Ubuntu.

Обновите также версию youtube-dl

Я получаю от вас совершенно другой вывод для того же URL:

$ youtube-dl --list-formats https://www.youtube.com/watch?v=0R0T0mQmx7I
[youtube] 0R0T0mQmx7I: Downloading webpage
[youtube] 0R0T0mQmx7I: Downloading video info webpage
[youtube] 0R0T0mQmx7I: Extracting video information
[youtube] 0R0T0mQmx7I: Downloading m3u8 information
[youtube] 0R0T0mQmx7I: Downloading MPD manifest
[info] Available formats for 0R0T0mQmx7I:
format code  extension  resolution note
91           mp4        256x144    HLS  197k , avc1.42c00b, 30.0fps, mp4a.40.5@ 48k
92           mp4        426x240    HLS  338k , avc1.4d4015, 30.0fps, mp4a.40.5@ 48k
93           mp4        640x360    HLS  829k , avc1.4d401e, 30.0fps, mp4a.40.2@128k
94           mp4        854x480    HLS 1380k , avc1.4d401f, 30.0fps, mp4a.40.2@128k
95           mp4        1280x720   HLS 2593k , avc1.4d401f, 30.0fps, mp4a.40.2@256k (best)
$ youtube-dl --version
2018.03.14

С недавними ffmpeg и youtube-dl вы получите ожидаемый результат:

$ ffmpeg -i $(youtube-dl -f 91 -g  https://www.youtube.com/watch?v=0R0T0mQmx7I) \
-i $(youtube-dl -f 95 -g https://www.youtube.com/watch?v=0R0T0mQmx7I) \
-c:v copy -c:a aac -strict experimental -t 00:02:00 output.mp4

(...)

$ ffprobe output.mp4
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'output.mp4':
  Metadata:
    major_brand     : isom
    minor_version   : 512
    compatible_brands: isomiso2avc1mp41
    encoder         : Lavf57.83.100
  Duration: 00:02:00.02, start: 0.000000, bitrate: 1784 kb/s
    Stream #0:0(und): Video: h264 (Main) (avc1/0x31637661), yuv420p(tv,    bt709), 1280x720 [SAR 1:1 DAR 16:9], 1648kb/s, 30 fps, 30 tbr, 90k tbn, 60 tbc (default)
    Metadata:
      handler_name    : VideoHandler
    Stream #0:1(und): Audio: aac (LC) (mp4a/0x6134706D), 48000 Hz, stereo, fltp, 129 kb/s (default)
    Metadata:
      handler_name    : SoundHandler

Пример (видео) вывода с изменением размера до предела загрузки 2 МБ:

Полный вывод из вызова ffmpeg .

Спасибо !! Работает, но, просмотрев выходное видео, я понял, что несколько раз зависает. Вы знаете, может ли быть что-то о пропущенном параметре? Я использую cmd: $ ffmpeg -i $ (youtube-dl -f 95 -g https://www.youtube.com/watch?v=0R0T0mQmx7I) -t 00:02:00 output.ts (18 марта '18 в 14:52)

Похоже, ошибка связана с пропуском на 5 сегментов, срок действия которого истек из списков воспроизведения , которые есть в выходных данных. Я не знаю, как с ними бороться ... (18 марта 18 в 14:57)

Любая помощь с пропуском сегментов? (18 марта '18 в 16:24)

@ gat00n Я не вижу этих сообщений в выводе, который я имею здесь; Мне нужно будет посмотреть 2-минутный сэмпл, который я произвел, чтобы увидеть, есть ли пропуски. Похоже, что он может быть достоин нового вопроса (возможно, ссылаясь на этот вопрос для справки), так как он кажется другим проблема :) (18 марта '18 в 17:48)

Это уж точно. Я проголосовал за ваш ответ. Спасибо! (18 марта '18 в 18:12)

@ gat00n Спасибо :) Я буду следить за соответствующим вопросом! (18 марта '18 в 18:36)

Дополнить ответ

Server-Help.Ru - 2019. The website content is licensed CC BY NC SA 4.0. <|> Политика Конфиденциальности