Of course! 
For playing the horn, I had to teleport the player outside and wait until I had finished playing the horn to then teleport the player back inside the vehicle.
local coords = GetEntityCoords(PlayerPedId())
SetEntityCoords(PlayerPedId(), coords.x, coords.y, coords.z+2.0) --teleport the player up a bit
SetEntityVisible(PlayerPedId(), false) --make the ped invisible so it doesn't look weird
StartVehicleHorn(veh, 5000, GetHashKey("HELDDDOWN"), false) --play the horn for 5000 milliseconds (5 seconds)
As for the camera solution:
To create and activate the new camera view:
local cam = CreateCam('DEFAULT_SCRIPTED_CAMERA', true, 2)
local gameplayCam = GetRenderingCam()
local camCoords = GetCamCoord(cam)
local coords = GetEntityCoords(veh)
PointCamAtCoord(cam, coords.x, coords.y, coords.z)
SetCamActive(cam, true)
RenderScriptCams(1, 0, cam, 0, 0)
To return back to normal camera view:
SetCamCoord(cam, GetGameplayCamCoords())
SetCamRot(cam, GetGameplayCamRot(2), 2)
RenderScriptCams(1, 1, 0, 0, 0)
RenderScriptCams(0, 1, 1000, 0, 0)
SetCamActive(gameplayCam, true)
EnableGameplayCam(true)
SetCamActive(cam, false)
DestroyCam(cam)