Как записать часть аудио в формате HLS и загрузить его на YouTube в качестве аудиоподкаста
Эта информация с практическими рекомендациями является руководством к тому, как мне удалось выполнить пять требований, связанных с этой задачей, которые на первый взгляд казались трудными для выполнения. Они перечислены ниже:
Подкаст, который я хотел создать, состоит из получасового сегмента в середине 2,5-часовой радиопрограммы, который в течение ограниченного периода (1 неделя) после даты трансляции может транслироваться с веб-сайта радиостанции. Это поток HLS. Мои конкретные требования для этой задачи были:
1) Мне нужно было сделать это с минимальным набором программных инструментов, желательно бесплатных и даже лучше, если с открытым исходным кодом. Те, которые я использовал, перечислены ниже.
2) Я хотел конвертировать аудиофайл из m4a в mp3.
3) Я хотел отредактировать аудио, чтобы обрезать его с обоих концов и, возможно, также удалить некоторые биты между ними.
4) Можно создать видеофайл (например, mp4), содержащий только аудиодорожку и без видеодорожки, но YouTube не примет такой файл. Как минимум, YouTube требуется как минимум одно неподвижное изображение для сопровождения звуковой дорожки.
5) Сохранение аудиопотока в файл довольно простое, но файл должен пройти некоторую последующую обработку для шагов 2-4, и простая загрузка 2,5-часового аудиофайла в редактор может занять довольно много времени, поэтому в идеале было бы предпочтительнее просто загрузить получасовой сегмент посередине, который я хотел. Этот сегмент начинается во время ~ 1:34:00.
Программное обеспечение, которое я использовал, указано ниже. (Есть четыре пункта.)
Примечание. Хотя некоторые из этих программ являются кроссплатформенными, я делал все это в Windows 7 и браузере Firefox 53.0.2.) Я не могу гарантировать результаты на других платформах, и некоторые из приведенных ниже инструкций могут потребовать незначительных изменений для других браузеров.
Проверьте папку, в которой установлен FFmpeg. Если он не содержит файл с именем ff-prompt.bat, создайте его (это текстовый файл), следуя инструкциям, данным Maxime здесь:
https://disqus.com/home/discussion/mrfdev/ffmpeg_command_generator/newest/#comment-3264465301
В этом руководстве я буду использовать пример веб-сайта и аудиопотока, над которым я работал. YMMV, если вы пытаетесь сделать это с другим источником звука.
Радиопрограмма: ABC Radio Melbourne: "Утро с Джоном Фейном". Список прошлых эпизодов этого шоу можно найти здесь:
http://www.abc.net.au/radio/melbourne/programs/mornings/episodes/%20(http://www.abc.net.au/radio/melbourne/programs/mornings/episodes/)
Те, кому не больше недели, - в потоке. (Потоковая передача может быть геоблокирована в некоторых странах.)
ПРОЦЕДУРА: (Это разделено на три части: загрузка, редактирование и создание видео)
(1) СКАЧАТЬ АУДИО:
На странице прошлых эпизодов найдите соответствующую программу и нажмите на ссылку, чтобы перейти на страницу этой программы, где вы увидите проигрыватель со значком воспроизведения с надписью «Прослушать».
Теперь вам нужен потоковый плейлист для этого аудиоконтента. Есть два способа получить это: Простой способ (метод ниже) - использовать расширение браузера VDH. Если у вас его нет, используйте метод б ниже.
Метод (а) (используйте это, если у вас есть расширение браузера VDH, упомянутое выше):
- Нажмите на значок воспроизведения, чтобы начать поток,
Подождите, пока аудио не начнет играть. Когда это произойдет,
Нажмите значок VDH, чтобы открыть его меню.
На панели VDH наведите курсор мыши на интересующий элемент. Справа появится стрелка вправо.
Нажмите стрелку вправо от этого элемента и выберите "Копировать URL".
(Это копирует URL-адрес мультимедиа в буфер обмена.)
Теперь вы можете закрыть веб-страницу с плеером.
URL будет похож на это:
http://abcradiomodhls.abc-cdn.net.au/i/local_melbourne/audio/abf-2017-05-16.m4a/index_0_a.m3u8?null=0
- Откройте новую вкладку браузера, вставьте URL-адрес мультимедиа в адресную строку веб-браузера и перейдите по этому адресу.
Продолжайте в (с) ниже.
Метод (б) (Используйте этот метод, если у вас нет расширения браузера VDH.)
Откройте исходный HTML-код для веб-страницы, содержащей проигрыватель.
(Чтобы сделать это в Firefox, щелкните правой кнопкой мыши пустую область страницы и выберите «View Source Source».)
Исходный код HTML для этой веб-страницы должен открыться в новой вкладке браузера.
Используйте функцию поиска вашего веб-браузера, чтобы найти строку, подобную этой:
"url": " http://abcradiomodhls.abc-cdn.net.au/i/local_melbourne/audio/abf-2017-05-16.m4a/master.m3u8 ",
Выберите часть этой строки между вторым набором двойных кавычек.
Щелкните правой кнопкой мыши по выделению и выберите "Открыть ссылку".
Откроется диалоговое окно открытия / сохранения файла для файла с именем master.m3u8.
Загрузите файл.
Откройте файл master.m3u8 в текстовом редакторе.
Он будет содержать три строки, похожие на эту:
#EXTM3U
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=130000,CODECS="mp4a.40.2",CLOSED-CAPTIONS=NONE
http://abcradiomodhls.abc-cdn.net.au/i/local_melbourne/audio/abf-2017-05-16.m4a/index_0_a.m3u8?null=0
Третья строка - это URL.
- Скопируйте его и вставьте в адресную строку вашего браузера и перейдите по этому адресу.
(c) Продолжайте здесь из (a) или (b) выше:
Откроется диалоговое окно «Открыть / сохранить файл» для файла с именем index_0_a.m3u8.
Этот тип файла представляет собой текстовый файл, содержащий аудио-плейлист, который сообщает проигрывателям, где находятся медиафайлы.
- Откройте файл в текстовом редакторе.
Его содержимое будет выглядеть примерно так:
#EXTM3U
#EXT-X-TARGETDURATION:10
#EXT-X-ALLOW-CACHE:YES
#EXT-X-PLAYLIST-TYPE:VOD
#EXT-X-VERSION:3
#EXT-X-MEDIA-SEQUENCE:1
#EXTINF:10.000,
http://abcradiomodhls.abc-cdn.net.au/i/local_melbourne/audio/abf-2017-05-16.m4a/segment1_0_a.ts?null=0
#EXTINF:10.000,
http://abcradiomodhls.abc-cdn.net.au/i/local_melbourne/audio/abf-2017-05-16.m4a/segment2_0_a.ts?null=0
... <snip> ... (for a 2.5-hour stream, there will be about 900 pairs of lines here)
#EXTINF:8.997 http://abcradiomodhls.abc-cdn.net.au/i/local_melbourne/audio/abf-2017-05-16.m4a/segment900_0_a.ts?null=0
#EXT-X-ENDLIST
Приведенный выше файл содержит URL-адреса для 900-секундных аудиосегментов с номерами от 1 до 900. Для каждого сегмента есть пара строк:
Первая строка в каждой паре состоит из текста: «#EXTINF: 10.000».
Вторая строка в каждой паре содержит URL для аудиосегмента.
Теперь в текстовом редакторе вы удалите перечисленные ниже сегменты, удалив пару линий для каждого удаляемого сегмента.
- Удалить сегменты с 1 по 563 (т.е. первые ~ 94 минуты)
- Удалить сегменты с 834 по 900. (последние 11 минут)
(Будьте осторожны, чтобы не читать в последней строке: # EXT-X-ENDLIST)
Это оставляет 270 сегментов в середине (45 минут, начинающихся в ~ 1:34:00.)
- Сохраните отредактированный файл как, скажем, A.m3u8
(d) Теперь вы будете использовать VLC для потоковой передачи желаемого звукового фрагмента и сохранения его в виде файла MP3.
Откройте медиаплеер VLC и в меню VLC:
- нажмите: "Медиа", затем «Конвертировать / Сохранить ...»
В диалоговом окне "Открыть медиа" на вкладке "Файл"
В диалоговом окне выбора файлов
- найти и выбрать файл A.m3u8,
Вернитесь в диалоговое окно "Open Media",
- нажмите «Конвертировать / Сохранить»
В диалоговом окне "Конвертировать"
В диалоговом окне «Сохранить файл ...»
Вернитесь в диалоговое окно "Конвертировать",
VLC будет (беззвучно) передавать поток мультимедиа и сохранять его в виде файла MP3.
(При этом бегунок времени действует как индикатор выполнения.)
(2) РЕДАКТИРОВАТЬ АУДИО:
При необходимости отредактируйте MP3 в своем любимом аудиоредакторе, чтобы обрезать его в начале и в конце и / или удалить ненужные биты из середины, а затем экспортируйте отредактированную версию как новый MP3. Я использовал Audacity, чтобы сделать это. Объяснение того, как это сделать в Audacity, выходит за рамки данной статьи. Хорошая новость заключается в том, что если редактирование списка воспроизведения в части 1 привело к достаточно точному фрагменту части аудиопотока, который вы хотите сохранить, этот шаг может быть ненужным.
(3) СОЧЕТАТЬ ИЗОБРАЖЕНИЕ И АУДИО В ВИДЕО:
Этот метод использует FFmpeg. Это происходит от Эда Манна. Это объясняется более подробно здесь:
http://eddmann.com/posts/uploading-podcast-audio-to-youtube/
В этом примере предполагается, что FFmpeg установлен в C:\Apps\FFmpeg.
Скопируйте аудиофайл и файл jpg для изображения, которое вы хотите отобразить на видеодорожке, в папку C:\Apps\FFmpeg\bin. Назовите их input.mp3 и image.jpg
Откройте командную строку и введите три команды, перечисленные ниже:
Строка 1 делает папку, содержащую FFmpeg текущим каталогом.
В строке 2 запускается командный файл FF-prompt.bat.
Строка 3 передает настроенную команду в FFmpeg, которая объединяет эти два файла в видеофайл с именем Output.mkv. Если вы предпочитаете, чтобы выходной файл был MP4, просто измените последние три буквы в строке 3.
CD "C:\Apps\FFmpeg"
FF-prompt.bat
ffmpeg -loop 1 -r 2 -i image.jpg -i input.mp3 -vf scale=-1:380 -c:v libx264 -preset slow -tune stillimage -crf 18 -c:a copy -shortest -pix_fmt yuv420p -threads 0 output.mkv
Дождитесь завершения команды. Когда это произойдет, ваш видеофайл будет готов для загрузки на YouTube. Вы найдете его в подпапке "bin", где установлен FFmpeg. (В этом примере это будет в: C:\Apps\FFmpeg\bin.)
Вот пример результата:
https://www.youtube.com/watch?v=k01yREFsYTs