Compartir a través de


Para identificar entradas por número

[La característica asociada a esta página, SDK de Windows Media Format 11, es una característica heredada. Se ha reemplazado por Source Reader y Sink Writer. Lector de origen y Escritor receptor se han optimizado para Windows 10 y Windows 11. Microsoft recomienda encarecidamente que el nuevo código use Source Reader y Sink Writer en lugar de SDK de Windows Media Format 11, siempre que sea posible. Microsoft sugiere que el código existente que usa las API heredadas se reescriba para usar las nuevas API si es posible.

Cada ejemplo que pase al escritor debe estar asociado a un número de entrada. Cada número de entrada corresponde a uno o varios flujos del perfil que usa el escritor para escribir el archivo. En un perfil, las fuentes de medios se identifican mediante un nombre de conexión. El escritor asocia un número de entrada a cada nombre de conexión cuando configuras el perfil para el escritor. Para poder pasar ejemplos al escritor, debe determinar qué datos espera cada entrada. No se puede suponer que las entradas estarán en el mismo orden que las secuencias de un perfil, aunque esto sea a menudo el caso. Por lo tanto, la única manera confiable de hacer coincidir las entradas con secuencias es comparar el nombre de conexión de la entrada con el nombre de conexión de la secuencia.

Para identificar los nombres de conexión y los números de entrada correspondientes para un perfil cargado, siga estos pasos:

  1. Cree un objeto escritor y establezca un perfil para usar. Para obtener más información sobre cómo establecer perfiles en el escritor, consulte Uso de perfiles con el escritor. Debería conocer los nombres de conexión utilizados para las transmisiones en el perfil. Puede obtener el nombre de conexión desde el perfil obteniendo el objeto de configuración de transmisión para cada transmisión y llamando a IWMStreamConfig::GetConnectionName. Para obtener más información sobre los perfiles y los objetos de configuración de flujos, vea Trabajar con perfiles.
  2. Recupere el número total de entradas llamando a IWMWriter::GetInputCount.
  3. Recorra en bucle todas las entradas, realizando los pasos siguientes para cada una.

En el código de ejemplo siguiente se muestra el nombre de conexión de cada entrada. Para obtener más información sobre el uso de este código, vea Cómo Usar los Ejemplos de Código.

HRESULT GetNamesForInputs(IWMWriter* pWriter)
{
    DWORD    cInputs  = 0;
    HRESULT  hr       = S_OK;
    WCHAR*   pwszName = NULL;
    WORD     cchName  = 0;

    IWMInputMediaProps* pProps = NULL;

    // Get the total number of inputs for the file.
    hr = pWriter->GetInputCount(&cInputs);
    GOTO_EXIT_IF_FAILED(hr);

    // Loop through all supported inputs.
    for (DWORD inputIndex = 0; inputIndex < cInputs; inputIndex++)
    {
        // Get the input properties for the input.
        hr = pWriter->GetInputProps(inputIndex, &pProps);  
        GOTO_EXIT_IF_FAILED(hr);

        // Get the size of the connection name.
        hr = pProps->GetConnectionName(0, &cchName);
        GOTO_EXIT_IF_FAILED(hr);

        if (cchName > 0)
        {
            // Allocate memory for the connection name.
            pwszName = new WCHAR[cchName];
            if (wszName == NULL)
            {
                hr = E_OUTOFMEMORY;
                goto Exit;
            }

            // Get the connection name.
            hr = pProps->GetConnectionName(pwszName, &cchName);
            GOTO_EXIT_IF_FAILED(hr);
            
            // Display the name.
            printf("Input # %d = %S\n", pwszName);
        } // end if

        // Clean up for next iteration.
        SAFE_ARRAY_DELETE(pwszName);
        SAFE_RELEASE(pProps);
    } // end for inputIndex

Exit:
    SAFE_ARRAY_DELETE(pwszName);
    SAFE_RELEASE(pProps);
    return hr;
}

Interfaz IWMWriter

Escribir archivos ASF