Sé la respuesta, que probablemente sea "no hay manera", pero tengan paciencia conmigo por un momento.
Estoy subiendo videos a YouTube y en mi teléfono Android los estoy descargando usando YouTube Red. Estoy reproduciendo estos videos descargados en la aplicación de YouTube en segundo plano, cuando la pantalla está apagada. Esto funciona con la gran mayoría de los videos, excepto los que estoy subiendo. Leí los formatos de carga recomendados, probé varios códecs, pero no tuve suerte. Mis audios se detienen en el momento en que apago la pantalla.
Lo que finalmente encontré usando youtube-dl -F
es que mis videos no tienen transmisiones de solo audio con extensión webm, solo como m4a (después de que Youtube los procesó). Entonces mi pregunta es: ¿qué hace que Youtube cree archivos de audio webm para algunos videos, pero no para otros? ¿Hay alguna manera de forzar esto (supongo que no). ¿Hay alguna manera de sugerirlo? Como mencioné, probé una amplia variedad de códecs (video y audio, y las combinaciones) al generar mis archivos para la carga.
Una salida de muestra para un archivo que funciona con la reproducción de Youtube Red en segundo plano:
format code extension resolution note
249 webm audio only DASH audio 52k , opus @ 50k, 73.58KiB
250 webm audio only DASH audio 66k , opus @ 70k, 92.62KiB
251 webm audio only DASH audio 114k , opus @160k, 161.14KiB
171 webm audio only DASH audio 115k , vorbis@128k, 161.27KiB
140 m4a audio only DASH audio 127k , m4a_dash container, mp4a.40.2@128k, 180.79KiB
y la salida de un archivo que no:
format code extension resolution note
139 m4a audio only DASH audio 49k , m4a_dash container, mp4a.40.5@ 48k (22050Hz), 1.20MiB
140 m4a audio only DASH audio 129k , m4a_dash container, mp4a.40.2@128k (44100Hz), 3.20MiB
YouTube actualmente no tiene ninguna opción de codificación para los creadores de contenido.
En cuanto a por qué algunos videos están codificados como webm y otros en diferentes tipos de contenedores, no creo que haya ninguna documentación al respecto. YouTube puede estar probando beta de códecs específicos, para ver cómo funcionan/transmiten los códecs para los usuarios finales, o puede haber un sistema de coincidencia específico mientras que la entrada = atributos de salida específicos.
Cuando carga un video en YouTube, el video se vuelve a codificar utilizando una tasa de bits variable a la resolución más alta/resolución coincidente de la carga original. Si el video subido es más grande => 360p, las versiones más pequeñas también se codifican para múltiples opciones de transmisión (240p como ejemplo).
Pero no hay una forma actual de obligar a la plataforma de codificación de YouTube a codificar en un códec específico, e incluso si pudo averiguar qué códec de entrada daría como resultado un códec de salida deseado específico, puede que solo sea temporal. Solo menciono esto porque YouTube ha declarado que actualmente está experimentando con nuevos códecs, incluidos códecs propietarios de código cerrado y algoritmos de codificación... así que lo que funciona hoy puede no funcionar mañana.