Beispiel #1
0
bool HTTPLiveStream::WritePlaylist(bool audioOnly, bool writeEndTag)
{
    if (m_streamid == -1)
        return false;

    QString outFile = GetPlaylistName(audioOnly);
    QString tmpFile = outFile + ".tmp";

    QFile file(tmpFile);

    if (!file.open(QIODevice::WriteOnly))
    {
        LOG(VB_RECORD, LOG_ERR, QString("Error opening %1").arg(tmpFile));
        return false;
    }

    file.write(QString(
        "#EXTM3U\n"
        "#EXT-X-ALLOW-CACHE:YES\n"
        "#EXT-X-TARGETDURATION:%1\n"
        "#EXT-X-MEDIA-SEQUENCE:%2\n"
        ).arg(m_segmentSize).arg(m_startSegment).toLatin1());

    if (writeEndTag)
        file.write("#EXT-X-ENDLIST\n");

    // Don't write out the current segment until the end
    unsigned int tmpSegCount = m_segmentCount - 1;
    unsigned int i = 0;
    unsigned int segmentid = m_startSegment;

    if (writeEndTag)
        ++tmpSegCount;

    while (i < tmpSegCount)
    {
        file.write(QString(
            "#EXTINF:%1,\n"
            "%2\n"
            ).arg(m_segmentSize)
             .arg(GetFilename(segmentid + i, true, audioOnly, true)).toLatin1());

        ++i;
    }

    file.close();

    if(rename(tmpFile.toLatin1().constData(), 
              outFile.toLatin1().constData()) == -1)
    {
        LOG(VB_RECORD, LOG_ERR, LOC + 
            QString("Error renaming %1 to %2").arg(tmpFile).arg(outFile) + ENO);
        return false;
    }

    return true;
}
void CSourcesListBox::UpdateDynPlaylist( int nIndex )
{
	wxString sName	= GetPlaylistName( nIndex );
	wxString sQuery = LoadDynPlaylist( sName );

	sQuery = PromptDynamicPlaylist( sQuery );

	if ( sQuery != wxT( "" ) )
	{
		m_SourcesList.Item( nIndex ) = wxT( "[d] " ) + sName;
		PlaylistToFile( sName, sQuery, MUSIK_SOURCES_PLAYLIST_DYNAMIC );

		RealizeDynPlaylist(sQuery,g_thePlaylist);
		g_PlaylistBox->SetPlaylist(&g_thePlaylist);
	}
}
void CSourcesListBox::UpdateNetStream( int nIndex )
{
	wxString sName	= GetPlaylistName( nIndex );
    wxString sUrl;
	LoadNetStream( sName,sUrl);

	wxString sAddress = PromptNetStreamAddress(sUrl);

	if ( sAddress != wxT( "" ) )
	{
		m_SourcesList.Item( nIndex ) = wxT( "[u] " ) + sName;
		PlaylistToFile( sName, sAddress, MUSIK_SOURCES_NETSTREAM );
        MusikSongIdArray urlids;
        LoadNetStream( sName,sUrl,&urlids);
		g_thePlaylist = urlids;
		g_PlaylistBox->SetPlaylist(&g_thePlaylist);
	}
}