«Я второй день участвую в ноябрьских челленджах, подробности мероприятия Посмотреть:Вызов последнего обновления 2021 г."
Мы поженились!
Да, на этот раз это не моя девушка, это моя жена!
Почти месяц спустя моя жена попросила меня скачать для нее видео Tencent.Если вы скачаете его по содержанию последнего исследования, то сможете загрузить и объединить его шаг за шагом, но это очень хлопотно.Не программисты просто попробуй решить беды?Такой хлопотный шаг,есть ли что попроще? Да!Конечно есть.Много простых инструментов.В прошлом выпуске многие друзья рекомендовали мне разные инструменты.Я не проверяла их все здесь.Я могу их перечислить.Студенты,кому они нужны,могут их попробовать.Зацените метод, который я подготовил для слабины ниже.
Ментальное путешествие
Изначально я думал о своих предыдущих шагах, снова грузился с безголовым браузером, а потом использовал код для загрузки фрагментов ts, а потом слил с ffmpeg на автомате, но как бы все же немного беда, а потом пошел искать npm момент ключевые слова: m3u8tomp4
m3u8-to-mp4
Итак, я нажал на первый пакет: m3u8-to-mp4.
Нани? Этот пакет только одной версии, он используется уже 3 года, а еженедельных загрузок еще довольно много.
Вот я и подумал, что этот пакет либо очень офигенный, он раз и навсегда решил проблему конвертации m3u8 в mp4, поэтому он не обновлялся уже 3 года, либо автор забыл, что у него до сих пор есть этот пакет
Поэтому я использовал этот пакет, который не поддерживался и не обновлялся в течение 3 лет.
Использование также очень простое, просто скопируйте пример. код показывает, как показано ниже:
var m3u8ToMp4 = require("m3u8-to-mp4");
var converter = new m3u8ToMp4();
(async function() {
var url = "https://apd-666945ea97106754c57813479384d30c.v.smtcdns.com/omts.tc.qq.com/AofRtrergNwkAhpHs4RrxH2_9DWLWSG8xjDMZDQoFGyY/uwMROfz2r55kIaQXGdGnC2deOm68BrdPrRewQlOzrMAbixNO/svp_50001/cKAgRbCb6Re4BpHkI-IlK_KN1VJ8gQVK2sZtkHEY3vQUIlxVz7AtWmVJRifZrrPfozBS0va-SSJFhQhOFSKVNmqVi165fCQJoPl8V5QZBcGZBDpSIfrpCImJKryoZOdR5C0oGYkzIW77I4his7UkPY9Iwmf1QWjaHwNV2hpKv3aD9ysL_-YByA/szg_9276_50001_0bc3uuaa2aaafmaff4e3ijqvdjodbwsqadka.f304110.ts.m3u8?ver=4"
await converter
.setInputFile(url)
.setOutputFile("dummy.mp4")
.start();
console.log("File converted");
})();
Адрес видеоV.QQ.com/small/afraid/V331…
Затем видео успешно конвертируется, вау!
so easy ! so beautiful!
принцип
Из любопытства хочу посмотреть, как трансформируется эта сумка.
Поэтому я нажимаюm3u8-to-mp4этот файл пакета
Содержимое файла пакета следующее
только один файл?
Потом я открыл index.js, всего 64 строки 😂
Все коды следующие
/**
* @description M3U8 to MP4 Converter
* @author Furkan Inanc
* @version 1.0.0
*/
let ffmpeg = require("fluent-ffmpeg");
/**
* A class to convert M3U8 to MP4
* @class
*/
class m3u8ToMp4Converter {
/**
* Sets the input file
* @param {String} filename M3U8 file path. You can use remote URL
* @returns {Function}
*/
setInputFile(filename) {
if (!filename) throw new Error("You must specify the M3U8 file address");
this.M3U8_FILE = filename;
return this;
}
/**
* Sets the output file
* @param {String} filename Output file path. Has to be local :)
* @returns {Function}
*/
setOutputFile(filename) {
if (!filename) throw new Error("You must specify the file path and name");
this.OUTPUT_FILE = filename;
return this;
}
/**
* Starts the process
*/
start() {
return new Promise((resolve, reject) => {
if (!this.M3U8_FILE || !this.OUTPUT_FILE) {
reject(new Error("You must specify the input and the output files"));
return;
}
ffmpeg(this.M3U8_FILE)
.on("error", error => {
reject(new Error(error));
})
.on("end", () => {
resolve();
})
.outputOptions("-c copy")
.outputOptions("-bsf:a aac_adtstoasc")
.output(this.OUTPUT_FILE)
.run();
});
}
}
module.exports = m3u8ToMp4Converter;
После приблизительного рассмотрения того, что делает этот пакет, он должен обнаружить и установить входную ссылку и имя выходного файла, а затем вызватьfluent-ffmpegэта библиотека
???
Ты стоишь на плечах великанов, ты укутываешься
см. далееfluent-ffmpegКак этот пакет реализует преобразование?
Затем мы ищем метод .run в этой папке пакета, чтобы найти конкретное место выполнения.
С многолетним опытом cv кажется, что он должен быть в файлеprocessor.js, а затем мы открываем файл и находим метод
Глядя на код, я заметил этот код
Поскольку все они являются инструментами, основанными на ffmpeg, нижним уровнем является вызов команды ffmpeg.
Эти суждения должны фиксировать исключения из результатов, поэтому давайте взглянем на конечную точку в этом основном коде.
Кажется, он вызывает несколько параметров командной строки
Так у меня появилась смелая идея!
Да, я вручную соединил эту команду в терминале, должно быть нормально запустить ее с помощью моей локальной команды, поэтому я попробовал
Я не ожидал, что получится, на самом деле успех неизбежен, потому что все упирается в пакет ffmpeg, но я делаю это вручную, а фреймворк — это код для сращивания этой команды.
В остальное время смотрелfluent-ffmpegдругой код, он делает много вещей, например, обращается к книге, чтобы найти абсолютный путь к ffmpeg, собирает информацию об исключении для результата ffmpeg и т. д.
следовать за
Теперь процесс загрузки видео для моей жены выглядит так
- Перейдите к Tencent Video на веб-странице, чтобы найти ссылку m3u8.
- Вставьте URL-адрес в эту мою узловую программу.
- Выполнение заказа
- Счастливая жена! 😄
Метод, упомянутый пользователями сети
- N_m3u8DL-CLI
- Профессиональный плагин chrmoVideo Downloader.
- Downie
- Плагин IDM
- you-get
- Neat Download Management
обо мне
WeChat: cjs764901388
Общий номер: xstxoo
Мой публичный номер: Одноклассник Комацу
Я могу сосредоточиться на том, чтобы учиться с передним концом знания, как технология, используемая в локальной записи жизни, и выглядеть 🧐